4

我有两个具有多对多关系的表:

Player(personID, school)
Team(teamID, name)

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

我尝试了以下方法:

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

在这种情况下,我不知道如何连接表。

4

2 回答 2

7

试试这个:

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);

或这个:

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)

);

如果您不需要显式命名外键,则可以使用:

CREATE TABLE teamPlayer
(
playerID INT NOT NULL references Player(personID), 
teamID INT NOT NULL references Team(teamID),
PRIMARY KEY(playerID, teamID)
);

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

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

CREATE(显式命名的外键):

CREATE(自动命名的外键):

于 2012-05-22T00:53:00.857 回答
0

创建表时不要指定一种关系,除非您使用 FOREIGN KEY。在您的情况下,您实际上在查询中缺少表名,应该是这样的

CREATE TABLE `playerTeam`
(
`playerID` INT NOT NULL, 
`teamID` INT NOT NULL,
PRIMARY KEY(`playerID`, `teamID`)
);
于 2012-05-22T00:41:33.320 回答