2、基本内容的投影
基本的投影包括简单的对象模型向关系模型的转换。具体有以下几种:
(1)实体 一般投影成表。但只有一个独立的实体,既没有超类,也没有子类,才投影成一个表。具有继承关系的实体投影,将在第4节中介绍。由于投影规则选择不同,当一个实体投影成多个表时,不能保证可以用一个关系视图来描述一个实体。
(2)属性 对具有基本数据类型的属性,投影成列。这需要在对象模型与关系模型的各种数据类型之间建立对应关系。基本数据类型指整型、实型、字符串、日期、时间、布尔。如果对象模型采用枚举类型需要在关系模型中对列进行取值范围限定。其它复杂数据类型如聚集、结构类型则需要采用专门的处理方法。
(3)主标识、对象标识。对象标识在对象模型中并不需要明确地表示成对象的一个属性,采用的方式是在每一个与实体对应的关系表中都增加一个列,并把该列作为主键,数据类型为字符串,对象标识的格式为:实体名+表中唯一序列号。之所以把对象标识作为主键,是因为要把实体之间的引用采用以对象标识作为主键/外部键来实现的。这样原来的主标识就不能投影成主键了。在有的关系数据库中允许使用辅助键,如果没有辅助建则只能对原来的主标识投影成的列加上唯一性约束规则。
(4)实例 实例不属于模型投影的内容,但与投影的操作有密切关系。如果一个实体投影成多个表,则一个实例将由多个关系表的行构成。这些行必须具有相同的对象标识。
(5)聚集 如果聚集的元素类型是基本数据类型,可以考虑投影成二进制类型。如果元素类型是实体类型,这实际上构成了该实体与元素所指向实体之间多对多的引用关系,具体可参照第3节。
(6)类型定义 主要指自定义结构类型,需要将结构的域投影成单个的列。
(7)唯一性规则。转换为关系表的唯一性约束规则,当唯一性规则中包括的属性投影成多列时,注意要将多个列均包括在关系表的唯一性约束定义中。
(8)Where规则 转换成关系表的条件约束规则。
(9)名字转换规则 实体名转换成表名,属性名转换为列名,数据类型的域展开为列时,需要有一套名字转换规则。
3、对象之间引用关系的投影[3]
如果从纯粹的建模技术角度来看,对象之间的关系有以下几种:
一对多关系
多对多关系
一对一关系
不管是哪一种关系在概念模型中都两种情况,一种是依赖的,一种是独立的。
为了方便叙述,我们定义了一个简单的对象模型,图2是该模型的实体关系图(也称为类图),图中的各实体只列出了主标识中的属性。图中分别用不同的符号给出了继承关系、多对多关系、依赖的一对多关系和独立的一对多关系。
具体说明如下:实体Student和Teacher是Person的子类,继承关系用一个三角形表示。一个系(Department)里有多个人(学生或老师),两个实体间用实线连接表示引用关系,实心圆圈表示多的一端。一个系可以开设多门课(Course),一门课是依赖于系的,这就是说只知道课程名还不能确定这门课,还需要知道是哪个系开设的这门课。同样是计算方法课,数学系开设的和计算机系开设的在难度上和内容上会有很大区别。用箭头表示依赖。一门课有多个学生选修,一个学生可以选修多门课程。
实体间不同的关系进行投影方法是不同的。
(1)独立的引用关系进行投影,需要在“多”的一边要产生一个外部键。如果实体Person投影对应的表是T_Person,则表T_Person中要自动增加一个属性DptName,作为外部键,对应实体Department投影成的表T_Department的主键DptName。如果在继承关系中Person要分解到多个子类表中,则这些子类表中都要生成这个对实体Department引用的外部键
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典计算机对象模型的关系投影研究(2)在线全文阅读。