Frage

Wenn ich vorgelegt:

  • Resource (id (PK), Name)
  • Manager (id (PK), RESOURCE_ID (FK), manager_resource_ID (FK))

Should RESOURCE_ID und MANAGER_ID Fremdschlüssel sowohl in die Resource Tabelle.

ich will offensichtlich nicht verantwortlich jede mögliche Werte in jeder dieser Spalten einzugeben, die nicht richtige Mittel sind

Als ich die erste Beziehung hinzufügen (RESOURCE_ID <-> id) es funktioniert gut, aber

, wenn ich die zweiten hinzufügen (manager_resource_id <-> id) es nicht mit dem Fehler:

Nicht imstande Beziehung zu schaffen [. . .] Mit der FOREIGN KEY-Einschränkung TABLE-Anweisung Des ALTEN kollidierten [...]. Der Konflikt trat in Tabelle Ressource, Spalte id

oder muss ich diese aus in 3 Tabellen brechen?

Resource (id, first, last)
RESOURCE_MANAGER (id, RESOURCE_ID, MANAGER_ID)
Manager (id)

War es hilfreich?

Lösung

Nur ein Hinweis:

UPDATE :

Wenn Ihr Modell hat Mitarbeiter-Manager als many-to-many (etwas ungewöhnlich), dann könnten Sie tun:

CREATE TABLE Employee
  ( 
   EmployeeID int NOT NULL
  ,[Name] varchar(50)
  )
go  
ALTER TABLE Employee ADD
CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (EmployeeID ASC)
go   

CREATE TABLE Manager
  ( 
   EmployeeID int NOT NULL
  ,ManagerID int NOT NULL
  )
go  
ALTER TABLE Manager ADD
 CONSTRAINT PK_Manager PRIMARY KEY CLUSTERED (EmployeeID ASC, ManagerID ASC)
,CONSTRAINT FK1_Manager FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
,CONSTRAINT FK2_Manager FOREIGN KEY (ManagerID) REFERENCES Employee(EmployeeID)
,CONSTRAINT chk_Manager CHECK (EmployeeID <> ManagerID) 
go  

Andere Tipps

Sie haben die Fremdschlüssel in der Manager-Tabelle erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top