1

このような3つのテーブルを作成する必要があります

student(sid:CHAR(12)、sname:VARCHAR(50)、bdate:DATE、address:VARCHAR(50)、scity:VARCHAR(20)、year:CHAR(20)、gpa:FLOAT)

company(cid:CHAR(8)、cname:VARCHAR(20))

apply(sid:CHAR(12)cid:CHAR(8)

(太字の属性は主キーです)

しかし、外部キーを設定する方法がわかりません。たとえば、apply tableのcidは、applyテーブルとcompanyテーブルの両方の主キーです(applyテーブルとstudentテーブルの間の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

その場合は、設定studentしてcompany好きなように設定する必要があります(ただし、の出力を投稿すると、SHOW CREATE TABLE studentより役立つ回答が得られる場合があります)。したがって、applyテーブルには、2つの外部キーが必要です。1つはsid参照student.sid、もう1つは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主キーにしたい列に識別子を追加します。

于 2012-04-20T13:16:51.797 に答える
0

i適用テーブルはsidとcidの両方をforeignkeysとして設定します。このテーブルはジャンクションテーブルと呼ばれます。ここでは、主キーはsidとcidの両方を組み合わせた複合主キーです。appplyテーブルの外部キーはSIDであり、CID適用テーブルの主キーは(sid、cid)複合主キーです。各会社は任意の数の学生を持つことができます。各学生は任意の数の会社の一部になることができますが、1つの組み合わせは繰り返されません。

于 2013-12-09T12:47:27.883 に答える