1

この関係を mySQL データベースに実装したいと考えています。 Person と呼ばれるエンティティーが、合計および論理分離の特殊化に関する Student クラスと Teacher クラスのスーパークラスである関係

私はこのスキーマを使用しています:

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 などのリレーショナル データベースでこれを解決するにはどうすればよいですか?

4

1 に答える 1

0

re「学生でも教師でもない人が存在する可能性があります」:履歴を保存している場合、これは非常に有効です。生徒が卒業したり、教師が退職したり、別の組織に参加したりしても、少なくとも一定期間はデータベースに記録が存在する必要があります。

「学生でも教師でもない人が存在する可能性があります」: これも正当な状況です。大学では、多くの (ほとんど? すべて?) ティーチング アシスタントも大学院生です。

于 2013-03-12T22:52:52.993 に答える