【发布时间】:2015-12-05 01:40:50
【问题描述】:
我有一个棒球数据库。我收到错误 Error there is no unique constraint matching given keys for referenced table pitcher。
这是架构
CREATE TABLE Teams(
Name varchar(30) NOT NULL Primary Key,
Record varchar(10)
);
CREATE TABLE Player(
Name varchar(30) NOT NULL,
Num int NOT NULL,
TeamName varchar(22) references Teams(Name),
PRIMARY KEY(Name, Num, TeamName),
Constraint NumCheck Check (Num < 100 and Num > -1)
);
CREATE TABLE Pitcher(
PHanded varchar(10),
PName varchar(30),
PTeamName varchar(30),
PNum int,
PRIMARY KEY(PName, PTeamName, PNum),
foreign key (PName, PTeamName, PNum) references Player(Name, TeamName, Num)
);
CREATE TABLE PosPlayer(
PPHanded varchar(10),
Position varchar(2),
PPName varchar(30),
PPNum int,
BTeamName varchar(30),
PRIMARY KEY(PPName, PPNum, BTeamName),
foreign key (PPName, PPNum, BTeamName) references Player(Name, Num, TeamName)
);
CREATE TABLE Games(
Id int Primary Key,
SchedDate DATE,
PlayedDate DATE,
HomeName varchar(30),
VisitName varchar(30),
Winner varchar(30)
);
CREATE TABLE Pitches
(
PID int,
Outcome varchar(10),
Bcount int,
Scount int,
Runners int,
Type varchar(10),
Speed int,
Pitchnum int,
PitName varchar(30) references Pitcher(PName),
PitNum int references Pitcher(PNum),
PitTeamName varchar(30) references Pitcher(PTeamName),
BatName varchar(30) references PosPlayer(PPName),
BatNum int references PosPlayer(PPNum),
BatTeamName varchar(30) references PosPlayer(BTeamName),
HomeTName varchar(30),
VisitTName varchar(30),
GId int references Games(Id),
foreign key (PitName, PitNum, PitTeamName) references Pitcher (PName, PNum, PTeamName),
foreign key (BatName, BatNum, BatTeamName) references PosPlayer (PPName, PPNum, BTeamName),
Primary Key(PID, PitName, PitNum, PitTeamName, BatName, BatNum, BatTeamName, GID),
Constraint Balls Check (Bcount > -1 and Bcount < 4),
Constraint Scount Check (Scount > -1 and Scount < 3)
);
在我查找的其他线程中,建议添加一个唯一标识符,但在此模式中,可能具有相同的名称并属于同一个团队。我该如何解决这个问题?
【问题讨论】:
-
我想我可以猜到,但是哪个 CREATE TABLE 给了你错误?
-
投手表不显示,错误提示表投手没有唯一键。
标签: sql postgresql