Domanda

Se ho presentato:

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

Dovrebbe RESOURCE_ID e manager_id sia essere chiavi esterne nella Resource della tabella.

io non, ovviamente, vogliono accedere a tutti i valori in ciascuna di quelle colonne che non sono adeguate risorse

quando aggiungo il primo rapporto (RESOURCE_ID <-> id) funziona bene, ma

quando aggiungo il secondo (manager_resource_id <-> id) non riesce con l'errore:

Impossibile creare il rapporto [. . .] L'istruzione ALTER TABLE conflitto con il vincolo FOREIGN KEY [...]. Il conflitto si è verificato nel Resource tavolo, colonna id

o ho bisogno di rompere questo fuori in 3 tavoli?

Resource (id, primo, ultimo)
RESOURCE_MANAGER (id, RESOURCE_ID, manager_id)
Manager (id)

È stato utile?

Soluzione

Solo un suggerimento:

resourcemngr_model_01

Aggiorna :

Se il modello ha impiegato-manager come molti-a-molti (po 'insolito), allora si potrebbe fare:

resourcemngr_model_02

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  

Altri suggerimenti

È necessario creare le chiavi esterne nella tabella Manager.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top