我有一份雇主和工人名单。我需要注册工人为不同的雇主制作的项目,但我还需要了解当前的工人雇主。我有:
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工作。
不是因为这个而得到循环引用?
我该如何避免这种情况?
答案 0 :(得分:1)
在您拥有的模型中,工人可以在一个不属于其雇主的项目中工作。如果这是一个有效的方案,那么模型是正确的。如果不可能,那么您可以从项目中删除雇主身份,因为雇主将由雇员决定。
答案 1 :(得分:0)
我没有看到上述代码有任何问题。唯一的要求是,如果你正在建立一个新的工人,你必须有一个雇主。如果您正在制作新项目,则必须同时拥有工人和雇主。如果Employer需要EmployerId才能创建循环引用。