1

我需要创建 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)

(粗体属性为主键)

但是我不确定如何设置外键,因为例如应用表的cid是应用表和公司表中的主键(应用表和学生表之间的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;";
4

2 回答 2

3

看起来该表是和apply之间的多对多连接。studentcompany

在这种情况下,您需要设置studentcompany喜欢您的设置(尽管发布的输出SHOW CREATE TABLE student可能会为您提供更多有用的答案)。因此,对于应用表,您需要两个外键:一个在sidwhich referencesstudent.sid上,一个在cidwhich references上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标识符添加到您希望作为主键的任何列。

于 2012-04-20T13:16:51.797 回答
0

我应用表将 sid 和 cid 都设置为外键..这个表在这里称为联结表,主键是 sid 和 cid 一起的复合主键。应用表外键是 SID 和 CID 应用表主键是 (sid,cid) 复合主键。每个公司可以有任意数量的学生。每个学生可以是任意数量的公司的一部分,但一个组合不会重复。

于 2013-12-09T12:47:27.883 回答