Sql 类型继承与表继承
我正在阅读Silberschatz书中关于基于对象的数据库的内容。它使用以下示例解释类型继承:Sql 类型继承与表继承,sql,inheritance,database-design,relational-database,object-oriented-database,Sql,Inheritance,Database Design,Relational Database,Object Oriented Database,我正在阅读Silberschatz书中关于基于对象的数据库的内容。它使用以下示例解释类型继承: create type Person ( name varchar(20), address varchar(20) ); 现在我们可以使用如下类型继承: create type Student under Person ( degree varchar(20), department varchar(20) ); 我想我明白了这一点。现在,我创建一个Person
create type Person
(
name varchar(20),
address varchar(20)
);
现在我们可以使用如下类型继承:
create type Student under Person
(
degree varchar(20),
department varchar(20)
);
我想我明白了这一点。现在,我创建一个Person类型的表,如下所示:
create table people of Person;
但是现在如果我想创建一个student类型的表。我应该这样做:
create table students of Student;
或
以上两者有什么区别?既然我们在定义Student类型时已经继承了Person,那么在创建Student类型的表时是否有必要继承Person(Person)类型的表
如果有人能用一个例子来解释这一点,那会更加清楚。不幸的是,类和继承的世界与数据库的世界并不总是很好地相互映射 在本例中,一种方法是创建两个表: 人
- Person\u Id=表的主键
- 名字
- 地址
- Student_Id=表的主键
- 程度
- 系
- Person\u Id=Person表的外键
- 身份证号码:12,姓名:非学生先生,地址:Letsbe Avenue 999
- 身份证号码:13,姓名:研究生女士,地址:一个时髦的校园
- 身份证号码:14,姓名:康拉德先生,地址:不太时髦的校园
- 身份证号码:15,姓名:Not-a-student-Each女士,地址:奥诺托比路2B号
- 学号:859,学位:数学,系:数学,学号:13
- 学号:860:学位:说唱歌词,系:英语,学号:14
- 地址\u Id=主键
- 地址第1行
- 等等
- Person\u Id=主键
- 名字
- 地址\u Id=地址表的外键
- 度=主键
- 主题
- 等等
- 部门Id=主键
- 名字
- 地址\u Id=地址外键(部门所在地)
- Boss=个人的外键
- 学生Id=主键
- Degree\u Id=度的外键
- Department\u Id=部门的外键
- Person\u Id=个人的外键
- Person\u Id=表的主键
- 名字
- 地址
- Student_Id=表的主键
- 程度
- 系
- Person\u Id=Person表的外键
- 身份证号码:12,姓名:非学生先生,地址:Letsbe Avenue 999
- 身份证号码:13,姓名:研究生女士,地址:一个时髦的校园
- 身份证号码:14,姓名:康拉德先生,地址:不太时髦的校园
- 身份证号码:15,姓名:Not-a-student-Each女士,地址:奥诺托比路2B号
- 学号:859,学位:数学,系:数学,学号:13
- 学号:860:学位:说唱歌词,系:英语,学号:14
- 地址\u Id=主键
- 地址第1行
- 等等
- Person\u Id=主键
- 名字
- 地址\u Id=地址表的外键
- 度=主键
- 主题
- 等等
- 部门Id=主键
- 名字
- 地址\u Id=地址外键(部门所在地)
- Boss=个人的外键
- 学生Id=主键
- Degree\u Id=度的外键
- Department\u Id=部门的外键
- Person\u Id=个人的外键
- 不幸的是,类和继承的世界与数据库的世界并不总是很好地相互映射
在本例中,一种方法是创建两个表:
人
create table students of Student under people;
/*which is described in the book as table inheritance*/