如果我们提出:

  • 资源(id(企业)、名称)
  • 经理(id(企业),resource_id(FK),manager_resource_ID(FK))

应该resource_id和manager_id以外键入 资源 表。

显然我不想进入任何价值在每个这些列是不适当的资源

当我加入第关系(resource_id <->id)它工作得很好,但是

当我加的第二个(manager_resource_id <->id)失败的错误:

无法创建关系[...] ALTER表的声明冲突,与外国主要制约[...].冲突发生在表格的资源,列id

或者我需要打破这种出入3个表?

资源(id,第一,最后)
Resource_manager(id,resource_id,manager_ID)
经理(id)

有帮助吗?

解决方案

只是一个提示:

resourcemngr_model_01

更新:

如果模型有的员工-管理作为"多对多"(位不同寻常的),然后你可以这样做:

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  

其他提示

你必须创造外键的管理表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top