hib*_*oss 5 mysql sql database sql-server database-design
我的桌子上有这 3 个实体:学生、讲师和人。Person 将是拥有学生和讲师共同属性的父母。这是我的数据库设计,这是实现专业化的正确方法吗?
personID int 主键,
角色 varchar(10) ,
姓名 varchar(50),
电子邮件 varchar(255)
studentID int、
intake varchar(50)、
major varchar(50)、
personID int 引用 person(personID)
LecturerID int ,
Skill varchar(50),
Qualification varchar(50) ,
personID int 引用 person(personID)
上面的表格,这是实现泛化/专业化的正确方法吗?如果是,如何在新学生注册时向数据库插入新值?
您通常有正确的想法(或者至少是实现此类数据库模式的常见习惯用法之一)。如果您的RDBMS支持它,我会为该role列使用枚举(例如,MySQL 支持。MS SQL Server 不支持)。如果没有,我会添加一个检查约束来实现类似的效果,并确保不会在那里插入任何垃圾。
应person首先对基表 ( ) 进行插入,然后再对专业化表 (student或lecturer) 进行插入。例如:
INSERT INTO person
VALUES (1, 'student', 'hiboss', 'hiboss@example.com');
INSERT INTO student
VALUES (100, 'intake', 'computer science', 1);
Run Code Online (Sandbox Code Playgroud)