2013-03-12 63 views
1

我想在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 
); 

这样我可以保证不会存在教师或学生不是一个人,但我不能保证“总” especialization。可能存在一个不是学生或教师的人。此外,我不能保证排他性。可能存在一个是学生和老师的人。

我如何解决这个在关系数据库中作为MySQL?

回答

0

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

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