SQL如何处理多对多的关系

bat*_*a13 3 sql database many-to-many relationship

我有两个表有很多关系的表:

Player(personID, school)
Team(teamID, name)
Run Code Online (Sandbox Code Playgroud)

我将使用什么代码来创建名为playerTeam的关联实体表.

我尝试过以下方法:

CREATE TABLE
(
playerID INT NOT NULL, 
teamID INT NOT NULL,
PRIMARY KEY(playerID, teamID)
);
Run Code Online (Sandbox Code Playgroud)

我不知道如何连接这个实例中的表.

Mic*_*uen 6

试试这个:

CREATE TABLE teamPlayer
(
playerID INT NOT NULL, 
teamID INT NOT NULL,
PRIMARY KEY(playerID, teamID)
);

alter table teamPlayer
add constraint 
    fk_teamPlayer__Player foreign key(playerID) references Player(personID);

alter table teamPlayer
add constraint 
    fk_teamPlayer__Team foreign key(teamID) references Team(teamID);
Run Code Online (Sandbox Code Playgroud)

或这个:

CREATE TABLE teamPlayer
(
playerID INT NOT NULL, 
teamID INT NOT NULL,
PRIMARY KEY(playerID, teamID),

constraint fk_teamPlayer__Player
foreign key(playerID) references Player(personID),

constraint fk_teamPlayer__Team 
foreign key(teamID) references Team(teamID)

);
Run Code Online (Sandbox Code Playgroud)

如果您不需要明确命名外键,可以使用:

CREATE TABLE teamPlayer
(
playerID INT NOT NULL references Player(personID), 
teamID INT NOT NULL references Team(teamID),
PRIMARY KEY(playerID, teamID)
);
Run Code Online (Sandbox Code Playgroud)

所有主要的RDBMS在关系DDL上都非常符合ANSI SQL.每个人都是一样的

CREATE THEN ALTER(显式命名为外键):

CREATE(显式命名的外键):

CREATE(自动命名的外键):