この関係を mySQL データベースに実装したいと考えています。
私はこのスキーマを使用しています:
CREATE TABLE Person
(
id INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(40),
PRIMARY KEY(id)
);
CREATE TABLE Student
(
id INTEGER NOT NULL,
FOREIGN KEY(id)
REFERENCES Person(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE Teacher
(
id INTEGER NOT NULL,
room INTEGER NOT NULL,
FOREIGN KEY(id)
REFERENCES Person(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
このようにして、人ではない教師または生徒が存在しないことを保証できますが、「完全な」専門化を保証することはできません。学生でも教師でもない人が存在する可能性があります。また、独占権を保証することはできません。生徒であり教師である人物が存在する場合があります。
MySQL などのリレーショナル データベースでこれを解決するにはどうすればよいですか?