如何创建具有多个外键和多列的mysql表

时间:2013-11-11 05:26:43

标签: mysql database database-design

所以我一直在研究这个问题几个小时,并且没有找到适合我正在做的事情的运气。

我目前遇到两个问题:创建一个表,其中多个外键引用相同的主键,并将这些属性拆分为多个列。

最后,我希望我的表看起来像这样,我的O-Director_ID是一列中的主键,与所有其他ID相关(在这种情况下为FAD_ID,另一列中的SAD_ID和SUD_ID)都是外键,对应于来自另一个表的主键(来自crew_member的Member_ID,已存在)。

Desired Table

这是我目前正在尝试做的,只是为了创建多个外键(我甚至不知道如何创建第二列):

mysql> create table Other_Directing (
    -> O_Director_ID int (4) not null auto_increment,
    -> FAD_ID int (5) not null,
    -> SAD_ID int (5) not null,
    -> SUD_ID int <5> not null,
    -> primary key (O_Director_ID),
    -> foreign key (FAD_ID) references crew_member(Member_ID),
    -> foreign key (SAD_ID) references crew_member(Member_ID),
    -> foreign key (SUD_ID) references crew_member(Member_ID)
    -> );

然而,即使这不起作用,我收到此错误消息:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 
'<5> not null,
primary key (O_Director_ID),
foreign key (FAD_ID) references crew_' 
at line 5

谢谢,我希望这是有道理的。

此致

迈克尔

2 个答案:

答案 0 :(得分:1)

更改SUD_ID int <5> not null, 对此:SUD_ID int (5) not null,

答案 1 :(得分:0)

您的项目是否真的需要int列上的非默认大小?如果是这样,你有一个错字...你的一个大小是在&lt;&gt;而不是()的:-> SUD_ID int <5> not null应该是-> SUD_ID int (5) not null

如果您确定由于内存限制确实需要大小:

create table Other_Directing (
    O_Director_ID int not null auto_increment,
    FAD_ID int not null,
    SAD_ID int not null,
    SUD_ID int not null,
    primary key (O_Director_ID),
    foreign key (FAD_ID) references crew_member(Member_ID),
    foreign key (SAD_ID) references crew_member(Member_ID),
    foreign key (SUD_ID) references crew_member(Member_ID)
);