wake-up-neo.com

Fremdschlüsselbeziehung mit zusammengesetzten Primärschlüsseln in SQL Server 2005

Ich habe zwei Tische

Table1(
  FileID,
  BundledFileID,
  Domain)

und

Table2(
  FileID,
  FileType,
  FileName)

In Tabelle2 sind FileID und FileType der zusammengesetzte Primärschlüssel. Ich möchte eine Fremdschlüsselbeziehung von Table1.FileID Zu Table2 Erstellen.

Ist das möglich?

35
Black Eagle

Da Table2 einen zusammengesetzten Primärschlüssel hat, (FileID, FileType), dann muss jeder Verweis auch beide Spalten enthalten.

ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
  FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType)

Es sei denn, Sie haben eine eindeutige Einschränkung/einen eindeutigen Index für das Table2.FileID Feld (aber wenn ja: Warum ist das nicht die PK ??), können Sie keine FK-Beziehung zu nur Teilen der PK auf der Zieltabelle erstellen - einfach nicht.

72
marc_s

marc hat schon eine ziemlich gute antwort gegeben. Wenn sich die Zeilen in Tabelle1 immer nur auf einen Dateityp beziehen (z. B. FileType 'ABC'), können Sie FileType als berechnete Spalte zu Tabelle1 hinzufügen:

ALTER TABLE Table1 ADD FileType as 'ABC'

Welche können Sie dann im Fremdschlüssel verwenden.