SQL数据库中工人+项目与雇主之间的循环引用

时间:2014-07-18 12:00:36

标签: sql sql-server

我有一份雇主和工人名单。我需要注册工人为不同的雇主制作的项目,但我还需要了解当前的工人雇主。我有:

create table dbo.Employers
(
  Id int identity not null 
  Name nvarchar not null
);

create table dbo.Workers
(
  Id int identity not null 
  CurrentEmployerId int not null, -- FK
  Name nvarchar (120) not null, 
);

create table dbo.Projects
(
  Id int identity not null 
  WorkerId int not null, -- FK  
  EmployerToWhichTheProjectWasMadeId int not null, -- FK
  Name nvarchar (120) not null,      
);

在dbo.Workers中,我有一个EmployerId FK,其中说明了当前的雇主。

在dbo.Projects中,我有两个FK:WorkerId和EmployerId,表明该项目是由工人X向雇主Y制作的。而且,由于工人X有一个FK雇主,工人X当前为雇主Z工作。

不是因为这个而得到循环引用?

我该如何避免这种情况?

2 个答案:

答案 0 :(得分:1)

在您拥有的模型中,工人可以在一个不属于其雇主的项目中工作。如果这是一个有效的方案,那么模型是正确的。如果不可能,那么您可以从项目中删除雇主身份,因为雇主将由雇员决定。

答案 1 :(得分:0)

我没有看到上述代码有任何问题。唯一的要求是,如果你正在建立一个新的工人,你必须有一个雇主。如果您正在制作新项目,则必须同时拥有工人和雇主。如果Employer需要EmployerId才能创建循环引用。