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

重新“可能存在一个不是学生或老师的人”:如果您要存储历史记录,这是非常有效的;一旦学生毕业,或教师退休或加入另一个组织,这些记录仍需要在数据库中至少存在一段时间。

关于“可能存在一个不是学生或老师的人”:这也是一个合法的情况。在大学里,许多(大多数?全部?)助教也是研究生。

于 2013-03-12T22:52:52.993 回答