![]() |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Ich finde das Konzept der Eigenschaften schon zu schwammig und würde eher mit Merkmalen und Merkmalsausprägungen arbeiten.
Sonst erstelle ich einen roten Krug mit Eigenschaft zerbrechlich. Der nächste erstellt einen roten Krug mit Eigenschaft unzerbrechlich und rund. Kommt der dritte rote Krug und der User wählt aus den ja jetzt angelegten Eigenschaften zerbrechlich und unzerbrechlich aus und du hast ein fragwürdiges Objekt. |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
Bin gespannt, was noch so dazu kommt bis der TE sich meldet. (falls er sich meldet) |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
|
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
Zitat:
|
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
|
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
Hier eine detailiertere Formulierung: Du legst auf Deine M:N Verbindungstabelle "GegenstandEigenschaft" einen Primärschlüssel auf die beiden Fremdschlüssel, die auf Gegenstand und Eigenschaft zeigen. Das sollte alles sein. Als SQL:
Code:
create table GegenstandEigenschaft( GegenstandID bigint , EigenschaftID bigint ); alter table GegenstandEigenschaft ADD PRIMARY KEY (GegenstandID,EigenschaftID ); alter table GegenstandEigenschaft ADD foreign KEY (GegenstandID) references Gegenstand(GegenstandID); alter table GegenstandEigenschaft ADD foreign KEY (EigenschaftID ) references Eigenschaft(EigenschaftID ); |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
Code:
Hilft mir aber nicht mein Problem vollständig zu lösen. Trigger oder Contraints sind wohl doch noch zusätzlich nötig... Hat jemand ein Beispeil wie ein Trigger oder Contraints für meinen Anwendungsfall aussehen könnte? Danke!
GegenstandEigenschaft
--------------------- PK FK GegenstandID integer PK FK EigenschaftID integer |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Oh sorry, dann verstehe ich Dein Problem nicht.
Meiner Meinung nach löst mein Vorschlag Deine Probleme. |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Zitat:
Code:
Das zusammengejoint ergibt dann:
Gegenstand
---------- GegenstandID Groesse Farbe 1 50x90 weiß 2 XL blau 3 XL blau Eigenschaft ----------- EigenschaftID Name 1 brennbar 2 zerbrechlich GegenstandEigenschaft --------------------- GegenstandID EigenschaftID 1 2 2 1 3 1
Code:
Einfach zu sehen, dass die letzten beiden Datensätze doppelt sind. Kein PK und FK haben das verhindert. Das darf nicht sein.
GegenstandID Groesse Farbe Eigenschaft
1 50x90 weiß zerbrechlich 2 XL blau brennbar 3 XL blau brennbar In Tabelle "Gegenstand" muss es möglich sein, bis auf die ID gleiche Datensätze anzulegen, da sie ja unterschiedlich Eigenschaften haben könnten. Also sowas sollte möglich sein:
Code:
GegenstandID Groesse Farbe Eigenschaft
1 50x90 weiß zerbrechlich 2 XL blau leicht, ... 3 XL blau lang, ... |
AW: Doppelte Datensätze verhindern in 1:N-Verknüpfung
Wären diese Daten aus einer Tabelle,
Code:
würdest Du also einen Index der Form
GegenstandID Groesse Farbe Eigenschaft
1 50x90 weiß zerbrechlich 2 XL blau brennbar 3 XL blau brennbar
SQL-Code:
benötigen.
create unique index ix_Groesse_Farbe_Eigenschaft on tabelle (Groesse, Farbe, Eigenschaft);
Da es sich aber um zwei Tabellen handelt, brauchst Du eine entsprechende "tabellenübergreifende" Lösung. Hab' ich das so (in etwa) richtig verstanden? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz