如何从增强型实体 - 关系模型中实现抽象类?

时间:2013-03-12 22:15:53

标签: sql mysqli entity-relationship

我想在mySQL数据库上实现这种关系。 Relationship where a entity called Person is superclass from Student and Teacher classes on a a total and disjunt espetialization

我正在使用此架构:

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?

1 个答案:

答案 0 :(得分:0)

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

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