2013-03-16 159 views
1

我有如下表(簡體):變換多對多關係一對多關係

create table dbo.Users 
(
    User_Id int identity not null 
    constraint PK_Users_Id primary key clustered (Id), 
); 

create table dbo.UsersSeals 
(
    UserId int not null, 
    SealId int not null, 
    constraint PK_UsersSeals_UserId_SealId primary key clustered (UserId, SealId) 
); 

create table dbo.Seals 
(
    Seal_Id int identity not null 
    constraint PK_Seals_Id primary key clustered (Id), 
); 

alter table dbo.UsersSeals 
add constraint FK_UsersSeals_UserId foreign key (UserId) references Users(Id) on delete cascade on update cascade, 
    constraint FK_UsersSeals_SealId foreign key (SealId) references Seals(Id) on delete cascade on update cascade; 

所以我有一個許多人用戶和密封件之間的許多關係。一個用戶可以有多個密封件,並且密封件上可以有許多用戶。我需要一個很多的地方,一個用戶可以有多個密封件,但一個密封件只有一個用戶。

是的,我可以刪除UsersSeals表並將UserId添加到Seals表中。但是,我用同樣的方式和其他桌子一起使用密封件。

我想只有一個與用戶表和其他表與一對多關係的密封表。

可以這樣做嗎?

+0

我沒有看到'Users'和'Seals'之間的關係。 – Kermit 2013-03-16 15:52:35

+0

我剛剛更新了我的代碼以包含約束 – 2013-03-16 15:53:36

回答

2

UsersSeals表中添加單獨的unique constraintSealID

然後你保證,這個表是唯一的SealID,這意味着一個密封只能與一個用戶相關聯,但是用戶可以有很多密封圈。