我需要创建3个看起来像这样的表
学生( sid:CHAR(12),sname:VARCHAR(50),bdate:DATE,地址:VARCHAR(50),scity:VARCHAR(20),年份:CHAR(20) ,gpa:FLOAT)
公司( cid:CHAR(8),cname:VARCHAR(20))
申请( sid:CHAR(12), cid:CHAR(8))
(粗体属性是主键)
但我不确定如何设置外键,因为例如apply table的 cid 是apply table和company table中的主键(对于 sid具有相同的情况:申请表和学生表之间)。谢谢你的帮助。
这些是创建表格的代码:
myQuery = "CREATE TABLE student "
+ "(sid CHAR(12), sname VARCHAR(50), "
+ "bdate DATE, address VARCHAR(50), "
+ "scity VARCHAR(20), year CHAR(20), "
+ "gpa FLOAT) ENGINE=InnoDB;";
myQuery = "CREATE TABLE company "
+ "(cid CHAR(8), cname VARCHAR(20), quota CHAR(8))ENGINE=InnoDB;";
myQuery = "CREATE TABLE apply "
+ "(sid CHAR(12), cid CHAR(8)) ENGINE=InnoDB;";
答案 0 :(得分:3)
apply
表似乎是student
和company
之间的多对多联接。
在这种情况下,您需要设置student
和company
(尽管发布SHOW CREATE TABLE student
的输出可能会为您提供更多有用的答案)。因此,对于apply表,您需要两个外键:一个sid
引用student.sid
,一个cid
引用company.cid
。也许是这样的:
ALTER TABLE apply ADD CONSTRAINT sid FOREIGN KEY (sid) REFERENCES student(sid);
ALTER TABLE apply ADD CONSTRAINT cid FOREIGN KEY (cid) REFERENCES copmany(cid);
编辑:根据您的表创建,您也没有设置主键。将PRIMARY KEY
标识符添加到您希望成为主键的任何列。
答案 1 :(得分:0)
我的apply表将sid和cid都设置为foreignkeys ..这个表在这里称为联结表,主键是sid和cid的复合主键。 appply表外键是SID和CID apply table主键是(sid,cid)复合主键。 每个公司都可以有任意数量的学生.. 每个学生都可以成为众多公司的一部分 但是一个组合不会重复。