一尘不染

如何引用另一个表中的多行?

sql

假设我有一个角色表,例如,

Roles
-----
ID  Name
0   Salesman
1   Client
2   Manager

我们还假设这些角色不是互斥的:也就是说,一个人可以同时担任推销员,客户和经理。

如果我有一个Person带有Role字段的表,该如何引用Roles表中的多行?


阅读 152

收藏
2021-05-16

共1个答案

一尘不染

您将引入一个引用两个原始表的新表:

CREATE TABLE PersonRoles (
    PersonID int not null,
    RoleID int not null,
    constraint PK_PersonRoles PRIMARY KEY (PersonID,RoleID),
    constraint FK_PersonRoles_Persons FOREIGN KEY (PersonID) references Person (ID),
    constraint FK_PersonRoles_Roles FOREIGN KEY (RoleID) references Role (ID)
)

假设多重性为m:n,则以上是正确的。我做出了一个假设(您的问题中未列出),即可以有多个人担任推销员。

2021-05-16