mysql - 如何实现和插入值 SQL 特化/通用化

标签 mysql sql sql-server database database-design

我的表格包含这 3 个实体:学生、讲师和个人。人将是拥有学生和讲师共同属性的 parent 。这是我的数据库设计,这是实现特化的正确方法吗?

personID int 主键,
作用 varchar(10) ,
名称 varchar(50),
电子邮件 varchar(255)

学生

学生ID整数,
摄入 varchar(50),
主要 varchar( 50) ,
personID int 引用人(personID)

讲师

LecturerID 整数,
技能 varchar(50),
限定 varchar(50) ,
personID int 引用人(personID)

上面的表格,这是实现泛化/特化的正确方法吗?如果是,如何在新学生注册时向数据库插入新值?

最佳答案

您通常有正确的想法(或者至少是实现此类数据库模式的常用习惯用法之一)。如果你的支持它,我会为 role 列使用枚举(例如,MySQL 支持。MS SQL Server 不支持)。如果没有,我会添加一个检查约束来实现类似的效果,并确保您不会在此处插入任何垃圾。

应该首先对基表 (person) 进行插入,然后才对特化表(studentlecturer)进行插入。例如:

INSERT INTO person 
VALUES (1, 'student', 'hiboss', 'hiboss@example.com');

INSERT INTO student
VALUES (100, 'intake', 'computer science', 1);

关于mysql - 如何实现和插入值 SQL 特化/通用化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236779/

相关文章:

mysql - 仅当记录不存在时才插入查询

sql - 在 SQL 中将简单的 XML 转换为表

sql-server - 修剪所有数据库字段

sql - 实用的复合主键

sql - MySQL 将 latin1 数据转换为 UTF8

mysql - 左连接而不是 ISSET

sql - SQL Server2008。这两个语句是否相等

javascript - Node MySQL : Return a value from a column

按出现次数最多的 MySQL 查询顺序

mysql - SQL如何统计表的每个字段