我从Silberschatz的书中读到了基于对象的数据库。它用以下示例解释Type继承:
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;但是现在如果我想创建一个学生类型的表。我应该这么做吗:
create table students of Student;或
create table students of Student under people;
/*which is described in the book as table inheritance*/这两者有什么区别呢?既然我们已经在定义类型“学生”时继承了“人”,那么在创建类型为“学生”的表时,是否需要继承类型为Person ( Person )的表?
如果有人能用一个例子来解释这一点,那就会更清楚了。
发布于 2016-04-29 15:32:05
不幸的是,类和继承的世界以及数据库的世界并不总是能很好地相互映射。
在本例中,一种方法是创建2个表:
Person
学生
如果将Student.Person_Id设为null,则意味着每个学生在Person表中都有一行。您还需要一些其他的东西,一个索引或约束(在数据库中)或逻辑(在操作数据库的代码中)来强制学生记录不共享个人记录,如果这对您很重要。
这些表的示例数据:
Person
学生
人12和15是人,但不是学生。人13人,14人,分别与学生859人和860人有关。
请注意,如果您实际上是在构建它,那么您可能会更多地将事情分离出来(在数据库语言中,将事情规范化):
地址
Person
度
部门
学生
https://stackoverflow.com/questions/36936249
复制相似问题