1、第二章 数据库建模Database Modeling,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构设计物理结构物理实现,数据库的设计步骤,需求收集和分析用户关心什么用户要什么结果设计概念结构设计逻辑结构设计物理结构物理实现,数据库的设计步骤,需求收集和分析设计概念结构存什么关系(联系)如何ODL或E/R图,是各种数据模型的共同基础设计逻辑结构设计物理结构物理实现,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构用什么数据模型数据库的模式(database schema)用户子模式设计物理结构物理实现,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构设计物理结构数据怎
2、么存根据DBMS产品、环境特点物理实现,数据库的设计步骤,需求收集和分析设计概念结构设计逻辑结构设计物理结构物理实现运行DDL装入测试数据应用程序,数据库的设计步骤,想法需求,ODL,E / R,关系,RDBMS,OODBMS,2.1 ODL,对象定义语言 Object Definition Language以面向对象的观点、方法,说明数据库的概念结构可方便地直接转换成 OODBMS 的说明经过努力,可以转换成 RDBMS 的说明,面向对象的设计,对象标识 OID对象与对象的区别类具有相同特性的对象归为一类对象的归并必须有意义属于同一类的对象其特性必须相同,面向对象的设计,对象的三个特性属性:
3、特性联系:引用方法:函数接口说明interface ,属性对象某方面的特征,属性就是数据只由基本数据类型构成属性的类型,不能是类、也不能从类中构造Interface Movie /Movie Class 的ODL说明attribute stringtitle;attribute integeryear;attribute integerlength;attribute enum Film color, blackAndWhite filmType;,Interface Star attribute stringname;attribute StructAddr string street,st
4、ring city address;,联系对象的引用对象的关联对象集合的引用(1:N)Relationship Set stars;单一对象集合的引用(1:1)Relationship Star starOf;,反向联系ODL要求显式表示存在的反向联系Interface Movie /Movie Class 的ODL说明attribute stringtitle;attribute integeryear;attribute integerlength;attribute enum Film color, blackAndWhite filmType;relationship Set star
5、s inverse Star : starredIn; /Star与Movie的联系;,联系的多重性N:N在联系中,每个C都和D的集合有关,而在反向联系中,每个D都和C的集合有关N:1在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和C的集合有关1:1 在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和唯一的C有关,Interface Moiverelationship Set starsinverse Star : staredIn;relationship Studio ownedByinverse Studio : owns;Interface Starrelatio
6、nship Set staredIninverse Moive : stars; ;Interface Studiorelationship Set ownsinverse Moive : ownedBy; ;,ODL中的类型基本类型原子类型接口类型结构类型,可由以下类型组合而成集合无重复,次序无关包可重复,次序无关列表可重复,次序相关数组结构,2.2 实体联系图(E/R),用图形的方法,描述实体及实体间的联系世界由一组称作实体的基本对象及这些对象间的联系组成元素实体(Entity)客观存在并可相互区别的事件或物体对应于ODL中的对象实体集(Entity Set)同类(具有相同类型、相同性质)
7、实体的集合对应于ODL中的类用矩形表示,元素属性(Attribute)实体所具有的某一特性用与实体集相连的椭圆表示联系(Relationship)实体集之间的关联可涉及多个实体集可表示双向的联系用与相应的实体集相连的菱形表示,Movies,Stars,Stars-in,lenght,filmType,title,year,name,address,E/R联系的多重性N与1的表示,Movies,Stars,Stars-in,Studios,Presidents,Runs,Movies,Studios,Owns,联系的多向性E/R图能方便地描述两个以上实体集间的联系,联系中的角色实体集在联系中的作
8、用参与联系的实体集互异只标注联系名同一实体集在一个联系中多次出现标注联系名及角色名,联系中的属性联系中可以包含属性由联系而产生的属性可为由联系产生的属性建立实体集,Stars,Movies,Contracts,Studios,salary,将多向联系转换成二元联系新增连接实体集引入连接实体集至原实体集的多对一的联系,2.3 设计原则,真实性设计应当忠于规范存什么避免冗余任何事物只表达一次避免引入过多的元素选择合适的元素类型属性?类/实体集?联系集?,2.4 子类,特殊化与概括子类与超类属性的继承,ODL中的子类子类继承其超类的所有特性属性联系Interface Cartoon : Movie
9、relationship set voices;,ODL中的多重继承类的层次一个类可以有多个超类Interface MurderMystery : Movieattribute string weapon;Interface Cartoon-MurderMystery : Cartoon,MurderMystery ,E/R中的子类IsaE/R中的继承,2.5 对约束的建模,建模包含对现实世界的对象及联系的描述,也包含对它们的一些约束键码单值约束参照完整性约束域的约束一般约束,键码在类的范围内唯一标识一个对象(或者在实体集的范围内唯一标识一个实体)的属性或属性集一个类中的两个对象(或一个实体集
10、中的两个实体)在构成键码的属性集上取值不能相同ODL中键码的表示interface Movie ( key (title,year) ) ,超码一个或多个属性的集合,能在一个实体集中唯一地标识一个实体一个类(或实体集)中可能有多个超码候选码其任意真子集都不为超码的超码一个类(或实体集)中可能有多个候选码主码从候选码中选取的一个,一个类(实体集)中只有一个主码E / R图中只能表示主码:主码属性名加上下划线,单值约束要求某个角色的值是唯一的,如键码当一个属性为单值时可以要求该属性值存在(not null)可以允许该属性值任选(null)构成键码的属性,必须有值存在(not null),参照完整性
11、约束要求由某个对象引用的值在数据库中确实存在参照与被参照、引用与被引用参照完整性约束的操作(各产品不同)禁止删除被引用的对象级联删除 / 修改E/R图中参照完整性的表示,2.6 弱实体集,弱实体集的属性不足以形成主码有主码的实体集称为强实体集弱实体集只有作为一对多联系的一部分(多)才有意义弱实体集与其拥有者之间的联系是标识性联系,2.7 关于联系集,联系集的成份参加联系的实体集的主码联系集的属性联系中属性的决策(二元联系)1:1 联系集的属性:放到任意一端1:N 联系集的属性:放到 N 端N:M联系集的属性:只能留在联系集中,联系集的取舍(二元联系)1:1联系:将一端的主码作为另一端的属性1:N联系:将一端的主码作为 N 端的属性N:M联系:必须保留联系集联系集的键码(二元联系)1:1联系:任意一端的主码1:N联系:N端的主码N:M联系:参加联系的所有实体集的主码,ODL、E/R建模关心:存什么数据、关系如何不关心:用什么数学模型、DBMS产品透过E/R图,便于与用户交流,作业思考所有带*的练习,并上网查阅解答练习2.1.7 / 2.2.8 / 2.3.2 / 2.5.3 / 2.5.4 /2.6.4(a),