我想在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?
答案 0 :(得分:0)
re“可能存在非学生或教师的人”:如果您正在存储历史记录,这是非常有效的;一旦学生毕业,或教师退休或加入另一个组织,记录仍然需要在数据库中存在至少一段时间..
re“可能存在非学生或教师的人”:这也是一种合法的情况。在大学里,许多(大多数?全部?)教学助理也是研究生。