これは状況です。複合主キーと外部キーとしてのユニークキー
- 大学には複数の教員がいます。
- 各学部には複数の部門があります。
私は重複した教員や部署を望んでいません。そこで以下の3つの表を定義しました。
CREATE TABLE university (
id INT PRIMARY KEY AUTO_INCREMENT,
long_name VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(255) NOT NULL,
country VARCHAR(45) NOT NULL,
) Engine=InnoDB;
CREATE TABLE school_faculty (
id INT UNIQUE NOT NULL AUTO_INCREMENT,
name VARCHAR(45),
universityID INT,
PRIMARY KEY (name, universityID),
FOREIGN KEY (universityID) REFERENCES university (id)
) Engine=InnoDB;
CREATE TABLE department (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
schoolfacultyID INT NOT NULL,
FOREIGN KEY (schoolfacultyID)
REFERENCES school_faculty (id)
) Engine=InnoDB;
これが間違っている場合や、より良い方法がある場合は教えてください。私はそれに苦労していて、まったく無力です。
投稿の冒頭にある2つの箇条書きに基づいて、これまでのところ正しいようです。 – TetonSig
適切な[サンプルコード](http://sscce.org/)(ここではSQL文)は、任意の特別なスキーマやサンプルデータ形式よりも有用です。あなたのサンプルに 'CREATE TABLE'を使ってください。 – outis
が更新されました:テーブル構造が添付されました – stanchen