MS SQL Server - Definition einer rekursiven Beziehung (m:n)

Tarik_BS

Grünschnabel
Hallo Allerseits,

Ich wirke beim Aufbauen einer kleinen Firmendatenbank mit und bin auf ein Problem gestoßen - wie ich eine m:n Rekursivbeziehung unter MS SQL Server 2005 hinkriege. Hier - ein Beispiel:

Gegeben ist eine Tabelle tbl_Projekt (Projekt_ID /Primary Key/, Projektnummer, Projektkategorie, ...)

Es gibt 2 Arten von Projekten: Arbeitsprojekt und Akquisitionsprojekt, die über FK in der Spalte Projektkategorie den Projekten zugeordnet werden.

Alle Arbeitsprojekte sind aus einem oder mehren Akquise-Projekten hervorgegangen (sprich wurden beauftragt), alle Projekte werden in einer Tabelle geführt, dies ist notwendig, da Akquise-Projekte und "normale" Projekte gleiche Attributten besitzen und weitere Datenbankbereiche an die Projektinformationen gegnüpft sind (z.B. Kosten und Aufwandserfassung), es darf also keine extra Tabelle für Akquisitionsprojekte gebildet werden (um Redundanzen zu vermeiden).

Also um den Arbeitsprojekten die entsprechenden Akquise-Projekte zuzuordnen, müsste man solche eine rekursive Beziehung aufbauen. Dafür lege ich eine zweite Tabelle an, wo Zuordnung von Projekten zu ihren "Akquise-Eltern" erfolgt: tbl_Projekt_zu_AKQ(Projekt_ID,AKQ_ID) , wo beide Attributte auf Projekt_ID der Tabelle tbl_Projekt geschlossen sein müssten.

Die Frage: Wie lässt es sich im SQL Server realisieren? Wenn ich folgende CONSTRAINTs einfüge - kriege ich eine Fehlermeldung, da die beiden FK auf dieselbe Spalte verweisen: :confused:

(...) CONSTRAINT [tbl_P_AKQ_FK00] FOREIGN KEY([Projekt_ID])
REFERENCES [dbo].[tbl_Projekte] ([Projekt_ID])
ON UPDATE CASCADE,

CONSTRAINT [tbl_P_AKQ_FK01] FOREIGN KEY([Akquise_ID])
REFERENCES [dbo].[tbl_Projekte] ([Projekt_ID])
ON UPDATE CASCADE

Ich bin kein Profi, muss aber das ganze fertig kriegen:)

Vielen besten Dank!

Frohe Weihnachten und schöne Grüße aus Braunschweig
 
Es funktioniert! Vielen Dank! Nun weiß ich auch warum - bei der Aktualisierungsweitergabe kann es, u.U., zu einer endlosen Schleife kommen, deswegen humpelte dies bei ON UPDATE, mensch, Du hast mir Augen aufgemacht:)!

Einen guten Rutsch

und Grüße aus Braunschweig
 

Neue Beiträge

Zurück