Pergunta

Se eu entreguei:

  • Recurso (id (pk), nome)
  • Gerenciador (ID (PK), Resource_id (FK), Gerenciador_resource_id (FK))

Deve resource_id e gerente_id serem chaves estrangeiras no Recurso tabela.

Obviamente, não quero inserir valores em cada uma dessas colunas que não são recursos adequados

Quando eu adiciono o primeiro relacionamento (Resource_id <-> id), funciona bem, mas

Quando eu adiciono o segundo (gerente_resource_id <-> id), ele falha com o erro:

Incapaz de criar relacionamento [. . .] A declaração da tabela alterada em conflito com a restrição de chave estrangeira [...]. O conflito ocorreu no recurso de tabela, ID da coluna

Ou preciso dividir isso em 3 mesas?

Recurso (ID, primeiro, último)
Resource_Manager (ID, Resource_id, Gerenciador_id)
Gerente (ID)

Foi útil?

Solução

Apenas uma dica:

resourcemngr_model_01

ATUALIZAR:

Se o seu modelo tiver funcionários-gerentes de maneira muitos para muitos (um pouco incomuns), você poderá fazer:

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  

Outras dicas

Você precisa criar as chaves estrangeiras na tabela do gerente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top