Pregunta

Si he presentado:

  • Recurso (id (PK), nombre)
  • Manager (id (PK), RESOURCE_ID (FK), manager_resource_ID (FK))

En caso RESOURCE_ID y MANAGER_ID tanto ser claves externas en el web tabla.

i, obviamente, no quiero entrar en cualquiera de los valores en cada una de las columnas que no son recursos adecuados

Cuando agrego la primera relación (RESOURCE_ID <-> id) funciona bien, pero

Cuando agrego el segundo (manager_resource_id <-> id) falla con el error:

No se puede crear la relación [. . .] La declaración ALTER TABLE en conflicto con la restricción de clave externa [...]. El conflicto se produjo en la tabla de recursos, la columna ID

o tengo que romper esto en 3 mesas?

Recurso (id, primero, último)
RESOURCE_MANAGER (id, RESOURCE_ID, MANAGER_ID)
Manager (id)

¿Fue útil?

Solución

Sólo un consejo:

resourcemngr_model_01

Actualizar

Si el modelo tiene empleado-gerente ya que muchos-a-muchos (poco inusual) entonces se podría hacer:

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  

Otros consejos

Hay que crear las claves externas en la tabla Manager.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top