1、数据库原理及设计 Principle and Design of Database,主讲: 朱 焱 博 士 SIST, SWJTU2009.09,数据库原理及设计 Dr. Yan Zhu,2,学习目的和要求 数据模型的来源及评价 数据模型层次性及内容(静态结构与完整性约束) 实体联系模型(ERM)中的基本概念 扩展ERM中的基本概念,第二章 实体联系数据模型,数据库原理及设计 Dr. Yan Zhu,3,数据模型综述(1),为什么需要数据模型? 将真实世界各种应用的数据抽象出来以便数据库管理,需要抽象工具。 数据模型含有哪些内容? 数据的静态结构 数据的动态操作(增删改查询) 数据的完整性约束
2、 如何评价数据模型?上一章已经讲过,数据模型的三个应用要求: 比较真实地描述现实世界;易为用户所理解;易于在计算机上实现。,数据库原理及设计 Dr. Yan Zhu,4,数据模型综述(2),数据模型为什么有层次? 抽象层次数据模型层次 数据模型的三项要求中的二、三两项是互斥的。要易为用户所理解,就需要构造一种高级数据模型,使人们容易使用;而易于在计算机上实现,就须把这种高级数据模型转换为所用DBMS支持的数据模型。这就形成了数据模型的层次。 数据模型的未来 设计、开发与实现统一数据模型。 层次共存,自动转换各种用户只用一种高级模型,而开发一种将高级模型向DBMS支持的数据模型转换的CASE工具
3、,从而减轻开发人员的工作量,实现快速开发。,数据库原理及设计 Dr. Yan Zhu,5,实体联系数据模型的地位与作用,三种传统数据模型的特点:能较好地满足第一和第三项评价要求; 三种传统数据模型的不足:不易被业务用户理解。这是提出语义数据模型(Semantic Data Model)的基础。 实体联系模型(Entity Relationship Model, ERM)是用得最多且最成熟的语义数据模型。属于数据库应用系统设计的内容。 从数据库应用系统设计角度看,ER模型主要用于DB概念设计,是DB概念设计较常用的设计工具。,数据库原理及设计 Dr. Yan Zhu,6,DBMS无关,DBMS有
4、关,数据库设计过程,概念模式,内模式,逻辑设计 模式优化,数据库,数据库需求,使用高级数据模型 ERM,使用特定的DBMS的数据模型,物理DB设计,数据库原理及设计 Dr. Yan Zhu,7,数据库设计概述(1),需求收集和分析(Requirements Analysis) 了解: 数据信息、应用、性能等需求。 方法:调查、讨论、座谈、收集、DFD等。 对应:抽象层次的现实系统描述。 概念数据库设计(Conceptual DB Design) 任务:精确描述需求,使用高级数据模型提供的概念描述数据及对数据的约束限制。 工具:ER图。 结果:概念DB设计。 对应:现实系统到外模式的视图抽象,以
5、及外模式到概念模式的概念抽象。,数据库原理及设计 Dr. Yan Zhu,8,数据库设计概述(2),逻辑数据库设计(Data Model Mapping) 任务:选择一种(商用)DBMS(Oracle,SQL Server, Informix,DB2,Ontos),将概念DB设计变成该数据库系统对应的模式(Schema)。 结果:概念模式或逻辑模式。 对应:数据库抽象层次的物理抽象及内模式。 模式优化(Schema Refinement) 任务:解决潜在问题,利用规范化(Normalization)理论进行优化。 对应:数据库抽象层次的物理抽象及内模式。,数据库原理及设计 Dr. Yan Zh
6、u,9,数据库设计概述(3),物理数据库设计(Physical DB Design) 任务:考虑负载、性能要求,确定数据内部储存结构,存取路径,设计并选择物理存储方式等。 安全设计(Security Design) 任务:确定哪些用户(组)可/不可访问哪些数据。 注意几点: 以上各步可能需不断重复,直到满意为止; 这里忽略了DB设计的实现,即运行于DBMS之上的应用层; 数据抽象的过程实际上是一个数据建模的过程。,数据库原理及设计 Dr. Yan Zhu,10,实体联系数据模型-ERM(1),实体(Entity) 概念:一个现实世界中独立存在,有别于其它对象的对象。 特性:实体可以是具体的、物
7、理存在的,如学生Peter Bach。也可以是抽象的、概念上存在的,如,数据库课程。 每个实体都有一定的属性。 实体类型(Entity Type) 将具有相同属性的实体划分为同一类型。如学生类,教师类,课程类。 实体集 (Entity Set)(书上:实体型):简称-实体 属于同类的所有实体的集合。物以类聚,人以群分。如学生,教师,课程。一个实体集中的所有实体具有相同的属性。实体类型的实例是实体集。,数据库原理及设计 Dr. Yan Zhu,11,实体联系数据模型-ERM(2),属性(Attribute) 指实体的特征或性质。实体用属性描述。 如:学生的姓名、生日等;课程的课程号、课程名、学时
8、等。 属性的取值范围-域(Domain),属性,按结构分类,简单属性:不可再分的属性。例如: 年龄,性别。 复合属性: 可被划分为更小的子部分(子属性)。例如:住址(省、市、区、街道、门牌号、邮政编码子属性)。,按取值分类,单值属性:只有一个取值。例如学号。 多值:多于一个取值的属性。例如学位值,不同的人可以有不同的取值:无学位-空值;一个学士学位或学士、硕士、博士三个学位。 导出值:例如从生日导出年龄属性。 空值属性:值不确定或无值的属性。如书籍的附件属性可为空值。,数据库原理及设计 Dr. Yan Zhu,12,属性分类区分举例,简单属性 (结构不可分) 单值属性 (实体的性别属性只取一个
9、值)复合属性(行政区划代码+出生日期+顺序码+校验码) 单值属性 复合属性(结构上分为姓+名)多值属性 (图书可以同时有多个作者)简单属性多值属性 (一个实体上并存多个值)空值,4. 学位,1. 性别,2. 身份证号,3. 图书作者,数据库原理及设计 Dr. Yan Zhu,13,实体联系数据模型-ERM(3),键(Key) 具有唯一标识特性的一个或一组属性,用于唯一标识一类实体集中的实体。也称唯一约束。例如:唯一标识学生类集合的键是学号。由一个属性构成的键是简单键;由多个属性构成的键,成为复合键。 键是本章的一个难点。键贯穿整个关系数据库的设计和实现。在第六章(关系数据库优化)中也起重要作用
10、。 有关键的概念:超键、候选键、主键、外键、全键。,数据库原理及设计 Dr. Yan Zhu,14,超键、候选键、主键,超键(Super Key):能唯一标识实体的属性集称为超键。 候选键(Candidate Key):最小属性集合的键。 要求:候选键是超键,但候选键的任何子集都不是超键。 最简单时,候选键只包含一个属性。 最复杂时,候选键包含所有属性,称为全键。主键(Primary Key):是候选键。 当有多个候选键时,需选定一个作为实体的主键。例如:学号和身份证号都可以唯一标识一个学生,可选定学号做主键。一般不加说明时,键(键码)指主键。 例如:,数据库原理及设计 Dr. Yan Zhu
11、,15,ER图,ER模型可以用图形表示 实体集用矩形;属性用椭园;主键属性用下划线标出。 如图:其中,姓名和家庭住址为复合属性。,数据库原理及设计 Dr. Yan Zhu,16,联系,联系(Relationship)是两个或多个实体间的关联。 例如,选课是学生与课程之间的联系;门市零售可以是客户、售货员与商品之间的联系。 联系的描述属性(Description Attribute):记录联系的信息而非实体的信息。 选课的成绩,零售商品的数量就是联系的描述属性。 联系的标识:由参与的实体唯一确定。 选课(学号,课程号);零售(售货员号、客户号、商品条码、日期)。,数据库原理及设计 Dr. Yan
12、 Zhu,17,联系类型和联系集,联系类型(Relationship Type):联系的类别。 联系集(Relationship Set):同一类的一组联系(简称联系)。 联系类型的阶(Degree): 一个联系所关联的实体的数量。 阶为2的称之为二元联系(binary):两个实体集之间的联系。 阶为3的称之为三元联系(ternary):三个实体集之间的联系。 n元联系(n-ary)。 例如,选课是二元联系;零售是三元联系。 联系用菱形图形表示。,数据库原理及设计 Dr. Yan Zhu,18,联系类型的四种情况,二元联系(binary),2. 三元联系(ternary),3. 两个实体间可能
13、有多个不同的联系;例如,某员工在部门工作,又作为主管管理该部门。,4. 一个联系所关联的是同一个实体类型中的两个实体实例;如员工集合中的员工之间存在领导与被领导联系。,数据库原理及设计 Dr. Yan Zhu,19,ERM小结,ER模型使用“实体”来描述现实世界中的客观事物,实体又由“属性”来描述,并用“主键”来唯一标识; ER模型用“联系”来描述事物之间的关联,联系也可有其“描述属性”,联系由所参与实体的“主键”共同唯一标识。 ERM对数据结构(实体,属性,键)和数据约束(联系,联系的描述属性)进行了抽象描述。 一个数据模型应提供对数据操作的描述。由于ERM是高级数据模型,并不涉及任何具体的
14、数据库管理系统,因此,描述数据操作意义不大。,数据库原理及设计 Dr. Yan Zhu,20,ERM中的完整性约束之一:联系类型约束(1),联系型分类 一对一联系(one-to-one,1:1) 一对多联系(one-to-many,1:N) 多对多联系(many-to-many,M:N)定义:设联系集R,关联实体集A和B。如果对应A中的每个实体实例,B中有且仅有一个实体实例与之关联,则称R是一对一联系型,简记作1 :1联系。如果对应A中的每个实体实例,B中有n个实体实例(n0)与之关联,则称R是一对多联系型,简记作1 :N联系。如果对应A中的每个实体,B中有n个实体(n0)与之关联,如果对应B
15、中的每个实体,A中有m个实体(m0)与之关联,则称R是多对多联系型,简记作M :N联系。1,m,n被称为联系的基数。,数据库原理及设计 Dr. Yan Zhu,21,联系类型上的约束(2),1:1联系;例如:每所大学只有一个正校长,每个正校长只能主持一所大学的工作。,2. 1:n联系;例如,一个教师在一段时间中只能在一所大学中工作,而一所大学可以有许多教师。,3. m:n联系;例如,一个教师可以上多门课程,每门课程可以有多个教师.,讲授,数据库原理及设计 Dr. Yan Zhu,22,给下面各图指出联系类型,1,m,n,n,1,1,m,m,m,n,m,n,1,数据库原理及设计 Dr. Yan
16、Zhu,23,联系类型与一般性(联系类型)约束的区别,1,n,m,n,数据库原理及设计 Dr. Yan Zhu,24,完整性约束之二:键约束,前面所述联系型的三种对应关系,实际上指的是联系方面的约束,分别为:一对一约束、一对多约束和多对多约束。这是ERM中一般性的约束,而键约束是在一般性约束的基础上更细致的约束。 联系集中,联系都是同一类型(共性),如何区别每一个具体的联系呢? 实体的键可以标识它。 键约束(Key Constraints):如果在一个联系R的实例中, 它所关联的实体A的实例最多只能出现在一个联系实例中,它就可以唯一确定该联系。与“实体对应约束”同义。 仅用实体A的主键可以唯一
17、标识联系R。 只有1:1和1:n约束才存在键约束。 键约束在ER图上用箭头表示。对于1:n约束,箭头应标在1:n的n方,表明给定一个该实体,即可唯一确定其间的联系。,数据库原理及设计 Dr. Yan Zhu,25,键约束示例图,讲授,对于图中的1:1主持联系,说明:给定一个大学实体或某个特定教师实体,即可唯一地确定这个联系的实例。这时,主持联系可用大学或教师的主键(大学名或教师证号)唯一确定。对于图中的1:N工作联系,说明:给定一个教师实体,即可唯一地确定一个工作联系的实例。这时,工作联系可用教师的键(教师证号)唯一确定。,数据库原理及设计 Dr. Yan Zhu,26,键约束的扩展,键约束的
18、好处:前面曾经指出,联系由其所关联的实体共同唯一确定。但对存在键约束的联系,只需用一个关联的实体即可唯一地确定该联系。这也是为什么叫“实体对应约束”的原因。 键约束的扩展:多类实体间的联系也存在有键约束的情况。 例如,每个员工最多在一个大学,并且在一个城市。,数据库原理及设计 Dr. Yan Zhu,27,完整性约束之三:参与约束,参与约束(Participation Constraint):实体与联系之间的约束。与“实体关联约束”同义。 实体集E中每个实体都参与到联系集R中的至少一个联系中,称为完全参与(Total Participation)约束。 实体集E中只有部分实体参与到R的联系中,
19、称为部分参与(Partial Participation)约束。 教师实体与工作联系之间就是一个完全参与约束,因为(在职)教师都必须参与到工作中。大学和工作也是完全参与约束,因为每个大学必须为其教师安排工作。 主持联系中的教师的参与为部分参与,因为只有部分教师会主持一所大学的工作。而大学为完全参与,因为每所大学都会被某个教师来主持工作。,数据库原理及设计 Dr. Yan Zhu,28,参与约束的图示,讲授,在ER图中用粗线表示完全参与。 有的文献中,完全参与约束用双线表示,部分参与联系用单线表示。,第二章补充内容 ER模型例题分析,数据库原理及设计 Dr. Yan Zhu,30,实体及属性 作
20、者(身份证号、姓名、性别,) 书 (书号、书名、类别、价格、出版年份) 出版社(出版社号、名称、地址、电话) 编辑(身份证号、姓名、性别、),例题1: 用ERM为出版社数据库做概念设计 (1),数据库原理及设计 Dr. Yan Zhu,31,写作 出版(出版年份) 工作 编辑 合作 出版合同 (合同号,合同起止日期),联系及属性(2),数据库原理及设计 Dr. Yan Zhu,32,实体与联系的各种完整性约束(3),m:n,1:n,完全参与约束完全参与约束,1:n,m:n,部分参与约束部分参与约束,m:n,完全参与约束完全参与约束,完全参与约束完全参与约束,完全参与约束完全参与约束,递归联系型
21、,完全参与约束完全参与约束,数据库原理及设计 Dr. Yan Zhu,33,出版社数据库的ER图 (4),数据库原理及设计 Dr. Yan Zhu,34,强化:几个概念,上例中,作者表示为一个实体集。如果在书这个实体中再加一个作者名属性可不可以? 不好!1.冗余。两个实体中都有该信息。2.维护数据库的困难。易忘记修改其中之一。 书的超键:唯一能标识一个实体的一组属性。ISBN,ISBN+title,ISBN+, (title+author)。 书的候选键:属于超键,但必须满足:键的任何子集都不是一个超键。故:只有 ISBN,(title+author)是候选键。 书的主键:选用最坚实的键属性,
22、ISBN。节约空间和查询时间,避免不唯一性。,数据库原理及设计 Dr. Yan Zhu,35,强化:几个概念,实体联系类型约束是1:1和1:n,是否存在键约束,要检查键约束定义来决定。 不是存在键约束才会存在参与约束。 联系类型约束是m:n, 也会存在参与约束。 要检查参与约束定义。,数据库原理及设计 Dr. Yan Zhu,36,弱实体(Weak Entities),前面所涉及的实体,均基于这种假设:总有一个属性是键,即实体可以独立存在。实际情况中,并不总是如此。例如,大楼中的房间必须依附于大楼,不能独立存在。一个实体集A的键不是出自它自身的属性,而是出自于与之相联接的其他实体集B(一个或多
23、个)的键,A与B的联系是1:N的关系。 弱实体是没有键属性的实体。 属于弱实体类型的实体,可以通过另一个实体类型的特定实体及其部分属性值识别。,数据库原理及设计 Dr. Yan Zhu,37,弱实体的例子,例如:大学为教职工子女购买的儿童人身安全保险,受益人实体(儿童)是不属于大学的,他们必须通过教职工实体来识别。 例如:一栋楼中的房间也是弱实体。不通过大楼的键(楼号)是无法唯一确定某个房间的. 识别实体(Identifying entity type,Identifying owner):例如,教师。 识别联系( Identifying entity Relationship):弱实体类型和
24、识别实体类型之间的联系。 识别实体与弱实体之间的联系必须是1:n联系,该联系即为该弱实体的识别联系。 弱实体类型必须完全参与识别联系, 即具有完全参与约束(存在依赖)。,数据库原理及设计 Dr. Yan Zhu,38,弱实体的约束,但是不是所有的存在依赖都是弱实体类型。例如驾驶证实体依赖于人,但驾驶证有自己的键-驾驶证号,所以该实体不是弱实体。弱实体没有唯一表示它自己的键属性,但它有其他属性。应指定其中一个或多个属性,使得这些属性可以与识别实体型的键结合,形成相应弱实体型的键。这样的弱实体属性称为弱实体型的部分键。 例如:儿童人身安全保险受益人是弱属性,假设他们的姓名各不相同,则姓名就是部分键
25、,与教师实体的键一起构成弱实体的键。 在最坏情况,弱实体的所有属性构成的复合键将成为部分键。,数据库原理及设计 Dr. Yan Zhu,39,弱实体的图示,弱实体和识别联系用粗线条表示,部分键下加虚下划线。,保险,教师,保费,姓名,生日,教师证号,教师,子女,姓名,年龄,1,N,说明:书上P65总结了ERM各元素的图示。必须熟悉各图示,并可以使用它们画出ER图。,数据库原理及设计 Dr. Yan Zhu,40,利用ERM进行概念数据库设计,利用ER图的概念DB设计,关键是确定: (1) 一个概念是实体还是实体的属性; (2) 一个概念是实体的属性还是联系的属性; (3) 是用二元联系,三元联系
26、,还是多元联系; (4)是否有弱实体需要考虑。,数据库原理及设计 Dr. Yan Zhu,41,实体 vs. 属性,一般情况下,一个概念是用实体描述还是用属性描述是比较明确的。只是在少数情况下,较难取舍。 用属性表示 示例:“地址”,如果每个员工只需记录一个地址,则将其作为员工实体的属性是合适的。 有下列情况时,可考虑用实体而非属性 需记录多个值。例如:员工在同一部门的不同“地点”工作。院教务员有九里和犀浦两个工作地点。 需表达其结构或作细分查询示例:“地址”分成国家、省、市、区、街道等。,数据库原理及设计 Dr. Yan Zhu,42,实体属性 vs. 联系属性,一个概念是描述为实体属性还是
27、联系属性? 用实体的属性表示。例如“选修课平均成绩”,并不具体于某门选修课的成绩,是某个学生独有的。则作为实体的属性。 用联系的属性表示。例如“选修课的成绩”,必须对应是哪门选修课的成绩,不能由学生唯一决定。因此用联系的属性表示。,数据库原理及设计 Dr. Yan Zhu,43,二元 vs. 三元联系(1),用三元联系 示例:客户、产品及供应商三个实体之间,一个客户可购买多种产品、一种产品可以由多个供应商提供。要求表达:某客户从特定的供应商购买某种产品。 说明:如果用三个二元联系,只能表示: 供应商能供应产品; 客户需要产品; 客户与供应商的业务往来。 在这三个二元联系中,供应商S能供应产品P
28、;客户C需要产品P;客户C从供应商S购买,不一定意味着C确实是从S购买产品P。也不能清晰表达出合同的数量属性。,需要,数据库原理及设计 Dr. Yan Zhu,44,这时应该用一个三元联系,如图。,二元 vs. 三元联系(2),数据库原理及设计 Dr. Yan Zhu,45,一个例子:客户、担保人和贷款三个实体之间,一个客户可有多笔贷款、每一笔贷款有且仅有一个客户;一笔贷款可有多个担保人、但一个担保人只能担保一笔贷款。 当没有特别强调:客户的某笔贷款中担保人是谁时,可用二元联系。,二元 vs. 三元联系(3),数据库原理及设计 Dr. Yan Zhu,46,ERM完整性约束小结,联系类型约束,
29、实体与联系的 参与约束,ER模型例题分析(2),数据库原理及设计 Dr. Yan Zhu,48,例题2:为银行数据库设计ER图,实体和属性 客户 (客户标识, 姓名, 性别, 出生年月,所在城市) 帐户 (帐户号, 帐户类型,收支平衡) 贷款 (贷款号, 贷款期限,贷款额) 银行分支 (分支号, 分支名,资产,所在城市, 电话) 雇员 (雇员号,姓名,性别,职称),数据库原理及设计 Dr. Yan Zhu,49,联系型及属性 储蓄 借款(借款日期) 接待 帐户管理 贷款管理 工作 (起始日期) 领导 (任期),银行数据库的ER图 (2),数据库原理及设计 Dr. Yan Zhu,50,完整性约
30、束,数据库原理及设计 Dr. Yan Zhu,51,银行数据库的ER图 (4),数据库原理及设计 Dr. Yan Zhu,52,例3:含弱实体的ER图 (1),设计学生管理数据库的ER图 实体及属性 系(系名,地址,电话) 班级(班号,班名) 学生 (学号,姓名,性别,出生年月) 学生家长(称谓,姓名,性别,家庭住址,电话) 辅导员(工作证号,姓名,性别,电话) 宿舍(宿舍号),数据库原理及设计 Dr. Yan Zhu,53,联系及完整性约束 系有班级 (1:n,键约束,两个实体均为完全参与约束) 班级由学生组成(1:n,键约束,两个实体均为完全参与约束) 学生有家长(1:n,两个实体均为完全
31、参与约束) 辅导员管理班级(1:n,键约束,两个实体均为完全参与约束) 学生住宿在宿舍(1:n,键约束,宿舍完全参与到联系中),含弱实体的ER图(2),数据库原理及设计 Dr. Yan Zhu,54,含弱实体的ER图 (3),数据库原理及设计 Dr. Yan Zhu,55,强化:几个问题引出的概念,弱实体与识别实体之间的联系类型必须是1:n(上例)。 弱实体是完全参与到联系中。 弱实体因为没有独立主键,所以没有键约束。 弱实体的主键全部或部分来自识别实体。,数据库原理及设计 Dr. Yan Zhu,56,同一家庭兄弟姐妹之间的排序,一元联系的一般性约束,雇员之间的上下级关系,零件之间的组合关系
32、: 一个零件由多个子零件构成 一个零件可以是多个零件的子零件。,数据库原理及设计 Dr. Yan Zhu,57,关于数据模型的几个重要问题 数据库系统的设计步骤和作用 概念数据库设计的重要工具-ER Model ERM的概念: 实体、实体类型、实体集(实体型);属性;键;联系、联系类型、联系集(联系型);联系的类型(一个联系联结几个实体等)。 完整性约束: 联系类型约束(二元约束的基数比-1:1;1:N;M:N) 键约束(只有联系类型约束中的1:1和1:N才存在键约束) 键约束扩展(三元联系等也存在键约束) 参与约束(完全参与,部分参与),本章小结,数据库原理及设计 Dr. Yan Zhu,5
33、8,弱实体 弱实体的约束 扩展ER Model EERM的概念: 超类,子类,类层次 演绎和归纳 聚集使用ERM进行概念数据库设计 确定实体或属性、实体或联系、联系的类型、 是否需要聚集,本章小结,数据库原理及设计 Dr. Yan Zhu,59,作业 (第三周),P90 一。 1.名词解释:候选键、主键、二元联系、1:1联系类型约束 一。3,4 补充: 3. 用ERM作为工具去描述现实系统时,现实系统中的数据本身用什么描述,数据联系又用什么去描述? 4. 键约束的用处? 二。单项选择题 三。判断题,数据库原理及设计 Dr. Yan Zhu,60,作业(第三周),综合题: 1. 设某商业集团数据
34、库中有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售每一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。试画出ER图,并在图上注明联系的约束类型和键约束。,数据库原理及设计 Dr. Yan Zhu,61,作业(第四周),2.一个电影资料库有四个实体“电影”,“演员”,“导演”,“电影公司”。 “电影”的属性有电影编号,电影名,电影类型,对白语言; “演员”的属性有演员工作证号,姓名,出生年,性别; “导演”的属性有导演工作证号,姓名,出生年,性别; “电影公司”的属性有公司名称,所在国家。 这些实体间的联系及它们的属性有:演员出演电影,为多对多联系,该联系含角色属性;导演执导电影,每部电影只由一个导演执导;演员和导演属于电影公司;电影公司出品电影,有出品年份属性。请画出ER图,要求标出实体的主键、联系的约束类型和键约束。,