1、E-R模型,内容 实体联系模型(E-R模型)的概念 E-R模型的设计方法 E-R模型向关系模型的转化,概述(续),信息世界中的数据模型又称为概念模型 概念模型独立于数据库逻辑结构和具体的DBMS 概念模型的特点: 能充分反映现实世界,是现实世界的真实模型; 易于理解; 易于向关系等数据模型转化。,现实世界 (事物,事物性质 事物间的联系),信息世界 (实体,实体属性 实体联系),数据世界 (记录,数据项),抽象化,数据化,概念模型描述,数据模型描述,概述(续),概念模型最常见的描述方法:采用图形化方法。直观、自然,易于描述系统的层次结构、功能组成,且简单易学,通常还有工具软件支持,因而成为信息
2、系统的主要描述工具。,概述(续),最著名的图示化描述方法是“实体联系方法”,简称E-R方法。用这种方法建立的概念模型称为E-R模型(实体联系模型)。 ERwin主要用于E-R模型的设计和数据库模式的设计。,局部E-R 模型设计,总体E-R 模型设计,转换为具体的 DBMS所支持的 数据模型,需求分析,逻辑设计,物理设计,子模式设计,2.1 实体联系模型的概念,实体联系模型的基本构成 E-R模型的三个组成部分:实体(集)、联系(集)、属性 实体集:具有相同类型和性质(属性)的实体集合。 联系集:同类联系的集合。 属性:实体的性质和特征。 表示: 实体用方框表示,联系用菱形框表示,属性用椭圆框表示
3、; 在框中标注实体名、联系名、属性名。实体 联系 属性用以上三种图形元素描述的概念模型称为E-R图。,实体名,联系名,属性名,实体联系模型的概念(续),E-R图可以看成是描述数据库概念模型的图形语言,实体是名词,属性是名词,联系是动词。 例如:右图可念作 仓库可存放物品。 或 物品可存放于仓库。,仓库,存放,物品,1,n,实体联系模型的概念(续),画E-R图的方法:1. 先画出各实体及其属性,其中的主属性(即主键)用下划线表示。 2. 在有联系的实体之间插入联系框,并用无向边把它们连接起来(联系也可能包含属性); 3. 在无向边上标注联系的类型。,实体联系模型的概念(续),E-R图中的基本联系
4、方式 二元联系(两实体间的联系),包括三种类型,丈夫,夫妻,妻子,1,1,部门,拥有,职工,1,n,学生,选修,课程,m,n,一对一 一对多 多对多,实体联系模型的概念(续),两实体间的多个联系 一个职工可参加多项工程;一项工程由多个职工参加。 一个职工可负责多项工程;一项工程只有一个负责人。 实体内部的联系 一个零部件可由多个其他零部件组成; 一个零部件可以是多个其他零部件的组成部分。,职工,参加,工程,m,n,负责,1,n,零部件,组成,m,n,职工,领导,n,1,实体联系模型的概念(续),供应商,供应,零件,m,n,工程,k,多元联系(两个以上实体间的联系),实体联系模型的概念(续),多
5、元联系(两个以上实体间的联系) 一个制片公司可以为一部电影与多名演员签约; 一名演员可以同一个制片公司签约演出多部电影; 一部电影可以由一个制片公司与多名演员签约演出。 多元联系可分解为多个二元联系。,制片公司,签约,演员,m,n,电影,k,制片公司,签约,演员,m,n,制片公司,拍摄,电影,1,n,电影,演员,m,n,演出,实体联系模型的概念(续),联系的属性 联系也是一种关系,它也可能拥有属性。例如: 上例中“签约”若需要记录各演员的演出酬金: 酬金不是电影的属性:不同的演员有不同的酬金; 酬金不是制片公司的属性:不同的演员或电影有不同的酬金; 酬金不是演员的属性:不同的电影或制片厂有不同
6、的酬金。所以酬金应作为“签约”联系的属性。,制片公司,签约,演员,m,n,电影,k,酬金,实体联系模型的概念(续),子类和父类 子类除共享父类的公共属性外,它还有自己的特殊属性。 父类是子类的泛化实体,它具有其下属的所有子类的公共属性。,帐户,支票帐户,存款帐户,贷款帐户,d,帐号,类型,开户日期,复核日期,结余,手续费,结余,利率,利率,总额,子类实体特点:1. 子类可以继承父类的所有属性2. 子类的主键就是父类的主键,类型,2.2 如何设计E-R模型,E-R模型要在需求分析的基础上进行设计。 1. 根据需求分析确定实体、属性和实体间的联系 2. 设计局部E-R模型 3. 对局部E-R模型进
7、行综合,设计出总体E-R模型 4. 消除冗余,优化总体E-R模型 E-R模型的设计三原则: 相对原则 E-R模型没有绝对的结果,不同的设计者基于不同的考虑所建立的模型很可能不同。但只要能满足业务的需求,它们都是正确的。 简单原则 现实世界的事物能作为属性对待的,尽量作为属性处理,而不要作为实体处理。(设计局部E-R模型时应考虑的问题) 一致原则 同一对象在不同的业务子系统(即局部E-R模型)中的抽象结果要求保持一致。(对局部E-R模型进行综合时应考虑的问题),如何设计E-R模型(续),如何确定一个事物是属性还是实体? 应根据应用环境来确定是否关心该事物的“细微结构”。 例1:职工和工资。 若不
8、需要了解工资的构成,则工资可作为职工的属性;否则就应把工资作为实体。,职工,职工号,姓名,性别,年龄,职称,工资,职工,职工号,姓名,性别,年龄,职称,基本工资,拥有,工资,奖金,补贴,工资号,如何设计E-R模型(续),例2:课程和教室。 若不需要考虑教室的特性,则教室可作为课程的属性;否则就应把教室作为实体。,课程,课程号,课程名,学分,学时,类型,教室,课程,课程号,课程名,学分,学时,类型,设施情况,地点,教室,座位数,面积,教室号,如何设计E-R模型(续),例3:货物和仓库。 如果货物只存放在一个仓库,则仓库可作为货物的属性; 若应用还关心仓库的地点、面积、类型、储运成本等,则应把仓库
9、作为实体。,货物,货号,名称,型号,批次,存量,仓库,货物,货号,名称,型号,批次,存量,地点,存放,仓库,类型,面积,仓库号,距离,E-R模型的设计步骤,E-R模型的设计步骤分为三个阶段: 要旨:化整为零,化零为整。 化整为零:进行子系统划分,即把整个应用系统分为若干个相对独立的应用,这样就可以对每一个子系统分别进行设计,得出局部E-R模型。 化零为整:把局部E-R模型进行整合,设计出总体E-R模型。 1. 设计局部E-R模型关键是确定子系统中有哪些实体,实体又包含哪些属性,它们之间的联系如何。 2. 设计总体E-R模型对局部E-R模型进行综合:对相同实体进行合并;为属于不同的局部E-R模型
10、的实体间建立联系。 3. 优化总体E-R模型消除由于合并带来的冗余和冲突。,E-R模型的设计步骤(续),E-R模型设计举例 某学校的管理信息系统。学校有4个部门要求实现计算机管理: 人事处:教职工管理 学生处:学生学籍管理 教务处:教学管理 后勤处:住宅、宿舍管理,E-R模型的设计步骤(续),假定在设计之前,已进行了调研和需求分析。主要信息如下: 学校包括多个管理部门和多个系; 每个部门或系有多名教职工,一名教职工只能属于一个部门或一个系; 每个系有多个班级,一个班级只能属于一个系; 每个班级有若干名学生,一名学生只能属于一个班级; 学校开设多门课程,一门课程可被多名学生选修,一名学生也可选修
11、多门课程; 一门课程可由多名教师讲授,一名教师也可讲授多门课程; 学校有多间教室,一间教室同一时间只能安排一门课程,而一门课程在同一时间可安排在多个教室(由多名教师讲授,见上); 学校有多座教工住宅楼,每个住宅楼有多套住房,每套住房只能分配给一名教工,每名教职工只能分配一套住房; 学校有多座学生宿舍楼,每个宿舍楼有多个房间,每个房间可安排多名学生住宿,每个学生只能安排一个房间。,E-R模型的设计步骤(局部),1. 设计局部E-R模型 1)确定局部应用范围 通常情况下可按系统的使用部门划分:本例中划分为四个模块。 人事管理人事处 学生管理学生处 教学管理教务处 住房管理后勤处 通常,校长需要了解
12、整个学校的运行情况,所以还应有一个校长查询模块,提供决策指导信息。,E-R模型的设计步骤(局部),2)确定实体集(以“人事管理”为例) 通过调研和需求分析,人事部门需要管理教职工、部门、职称和职务,所以实体集有:教职工、部门、职称和职务。 3)确定联系集 决定各实体集间的联系: 部门教职工:1:N 部门职称:没有联系 部门职务:没有联系 教职工职称:N:1 教职工职务:N:1 职称职务:没有联系 根据以上两个步骤,画出初步E-R图如下:,部门,教职工,职务,拥有,担任,n,1,1,n,职称,具有,1,n,E-R模型的设计步骤(局部),4)确定实体集的属性 通过调研和需求分析,各实体的属性如下:
13、 教职工:教职工号,姓名,性别,出生日期,学历 部门(包括管理部门和教学院系):部门号,类型,名称,办公电话 职务:代号,名称 职称:代号,名称 5)确定联系集的属性 部门教职工:无 教职工职称:聘任日期 教职工职务:任职日期,E-R模型的设计步骤(局部),6)画出局部E-R模型,部门/系,教职工,职务,具有,担任,n,1,1,n,职称,聘任,1,n,姓名,出生日期,学历,性别,任职日期,聘任日期,代号,名称,代号,名称,类型,办公电话,部门号,名称,教职工号,E-R模型的设计步骤(局部),其他三个子模块的局部E-R模型的设计基本类似。 学生管理的局部E-R模型,班级,学生,具有,n,1,学号
14、,姓名,出生日期,入学日期,性别,班级名,班级号,家庭住址,系,班长,E-R模型的设计步骤(局部),教学管理的局部E-R模型,教师,课程,教室,讲授,使用,n,m,1,n,学生,选修,n,m,课程号,名称,学时,使用时间,成绩,学号,出生日期,教室号,学分,姓名,性别,班级,教职工号,姓名,性别,系,座位数,类型,E-R模型的设计步骤(局部),住房管理的局部E-R模型,教职工,住宅,宿舍,分配,住宿,1,1,学生,房号,地点,面积,学号,宿舍号,姓名,性别,班级,教职工号,姓名,性别,职务,人数,职称,部门,1,n,租金,类型,E-R模型的设计步骤(总体),2. 设计总体E-R模型 把所有局部
15、E-R模型进行整合,形成一个统一的E-R模型。整合时,在兼顾各模块的需求前提下,主要应解决冲突问题。 命名冲突 同义异名:同一对象在不同的局部E-R图中具有不同的名字 需要把名字进行统一。例如,教职工和教师统一为教职工。 同名异义:不同的对象在不同的局部E-R图中具有相同的名字 需要重新命名加以区别。 属性冲突 属性值类型、取值范围、取值单位(如公斤磅) 需要进行统一,以同时满足各部门的需求。 结构冲突 同一对象在不同的局部E-R图中抽象级别不同 需要进行调整。如系在教学管理中为属性,而在人事管理中为实体 同一实体在不同的局部E-R图中包含的属性个数不同 需要进行统一。如教学管理的教师实体与人
16、事管理的教职工实体。,E-R模型的设计步骤(总体),在进行整合时,有时可能需要增加新的联系。 例如,人事管理与学生管理整合时,部门(系)实体与班级实体之间可以增加一个联系:系班级 有时还可能要删除冗余的联系,这主要是指从其他联系可以推导出来的联系。 为便于检查联系,可把所有实体的属性临时删除。 整合时,一般采用两两整合的方法,直到所有局部E-R图合并成一个完整的总体E-R图。 注意选取一个公共的关键实体,用它为基准进行两两整合。本例中可选取学生实体或课程实体。 整合后的总体E-R图,E-R模型的设计步骤(优化),3. 消除冗余,优化总体E-R模型 优化的目标是:在满足需求的前提下 实体的属性尽
17、可能少; 实体联系尽可能少; 实体的属性无冗余; 实体间的联系无冗余。 在本例中: 职称和职务实体只有一个有效属性“名称”,所以可以把它们作为教职工的属性,同时把相关的联系的属性(聘任日期、任职日期)也作为教职工的属性。 最终完成的总体E-R图,E-R模型的设计步骤(优化),在优化时注意,消除冗余不是绝对的。为了提高效率,有时必要的冗余也是允许的。冗余数据的完整性(一致性)可通过两种方法解决: 1. 对一个数据的增/删/改时,对另一个数据也进行同步操作,两个操作放在一个事务中; 2. 使用触发器。对一个数据的增/删/改,用触发器对另一个数据进行同步操作。,2.3 E-R模型向关系模型转化,E-
18、R模型独立于DBMS可用于任何一种数据库。 把E-R模型转换为某个具体的DBMS所能接受的数据模型,称为数据库的逻辑设计,或称为建立数据库逻辑模式。 E-R模型转换为关系模型: 主要解决的问题是: 如何用关系来表达实体和实体间的联系。,E-R模型向关系模型转化(续),转换规则: 1.实体的转换:每个实体都转换为一个关系模式。 实体的属性关系的属性; 实体的主属性关系的键。 例:,学生(学号,姓名,性别,出生日期,入学日期,家庭住址),学生实体:,学生关系模式:,E-R模型向关系模型转化(续),2. 联系的转换: 每个联系也转换成相应的关系模式,但一般情况下: 1:1、1:N和子类的联系不需要增
19、加单独的关系模式; M:N的联系需要增加单独的关系模式。 当不增加单独的关系模式时,联系的转换需要对与联系相关的实体的关系模式作适当的修改通常需要增加键属性。 转换时对以下联系类型需要进行不同的处理: 两个实体间的1:1联系 两个实体间的1:N联系 实体内的1:N联系 两个实体间的M:N联系 实体内的M:N联系 两个以上实体间的M:N联系,E-R模型向关系模型转化(续),1)两个实体间的1:1联系 任选一个实体,把它的主属性作为对方实体对应的关系中的属性。 或一个独立的关系模式:各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。例:下图中经理实体与公司实体间是1:
20、1联系。,转换为如下的关系模型:经理(经理号,姓名,性别,公司代号)公司(公司代号,公司名,地点,邮编,帐号,税号) 或:经理(经理号,姓名,性别)公司(公司代号,公司名,地点,邮编,帐号,税号,经理号),方案1 职工(职工号,姓名,年龄) 产品(产品号,产品名,价格) 负责(职工号,产品号),方案2 职工(职工号,姓名,年龄,产品号)产品(产品号,产品名,价格)方案3 职工(职工号,姓名,年龄) 产品(产品号,产品名,价格,职工号)方案3比较合理,E-R模型向关系模型转化(续),2)两个实体间的1:N联系 把“1”端实体的主属性作为“N”端实体对应的关系中的外键属性; 若联系有属性,则将其放
21、到“N”端实体对应的关系中。 或一个独立的关系模式:与该联系相连的各实体的码以及联系本身的属性均换为关系的属性,而关系的码为n端实体的码 例:下图中仓库实体与产品实体间是1:N联系。,转换为如下的关系模型(方案1):仓库(仓库号,地点,面积)产品(产品号,仓库号,品名,规格,价格,数量),方案2(独立的关系模式): 1:n联系形成的关系独立存在。仓库(仓库号,地点,面积)产品(产品号,产品名,规格,价格)仓储(仓库号,产品号,数量),E-R模型向关系模型转化(续),3)两个实体间的M:N联系 转换为一个单独的关系(有时被称为指示器或关联器),此关系的主键属性为两个相关实体的主键属性。若联系有属
22、性也放在此关系中。(这实际上是把M:N联系转换为两个1:N联系) 例:学生和课程之间的选修关系是M:N联系。,转换为如下关系模型:学生(学号,姓名,性别,出生日期,班级)课程(课程号,名称,学时,学分)选修(学号,课程号,成绩),E-R模型向关系模型转化(续),4)两个以上实体间M:N联系 也要转换为一个单独的关系,此关系的主键属性来自于所有相关实体的主键属性。若联系有属性也放在此关系中。 例:制片公司和演员关于电影的签约关系。,制片公司,签约,演员,M,N,电影,K,酬金,公司编号,名称,地址,电影编号,分级,类型,演员编号,姓名,出生日期,性别,电影名,转换为如下关系模型:制片公司(公司编
23、号,名称,地址)演员(演员编号,姓名,性别,出生日期)电影(电影编号,电影名,类型,分级)签约(公司编号,演员编号,电影编号,酬金),供应商(供应商号,供应商名,地址) 零件(零件号,零件名,单价) 产品(产品号,产品名,型号) 供应(供应商号,零件号,产品号,数量),方案1:转换为两个关系模式。职工(职工号,姓名,年龄)领导(领导工号,职工号) 方案2:转换为一个关系模式。职工(职工号,姓名,年龄,领导工号),(5)同一实体集联系,,按上述1:1,1:n和m:n三种情况分别处理。,零件(零件号,名称,价格) 组装(组装件号,零件号,数量),2.4数据模型的优化,以规范化理论为指导 (1)确定
24、数据依赖。按需求分析,写出各属性之间的数据依赖。 (2)考查是否存在部分函数依赖、传递函数依赖等,确定各关系模式分别属于第几范式。 (3)按照需求分析对数据处理的要求,确定是否需要对它们进行合并或分解。,2.5设计用户模式,利用视图功能设计更符合局部用户需要的用户外模式。(1)使用更符合用户习惯的别名 (2)针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求。,2.6数据库物理设计及实施,物理设备上的存储结构与存取方法称为数据库的物理结构 1确定数据的存储结构 综合考虑存取时间、存储空间利用率和维护代价3方面的因素。 2设计数据的存取路径 在关系数据库中,选择存取路径主要是指确定如何
25、建立索引。,3确定数据的存放位置,数据库数据备份、日志文件备份等,可以考虑存放在磁带上。 可以考虑将表和索引分别放在不同的磁盘上。在查询时,由于两个磁盘驱动器分别在工作,因而可以保证物理读写速度比较快。,4确定系统配置,同时使用数据库的用户数 同时打开的数据库对象数 使用的缓冲区长度、个数 时间片大小 装填因子,5数据库的实施,(1)定义数据库结构(2)数据装载,例子建立图书馆,需求分析 查询图书:通过书名和类别查询库中的图书,其中书名为模糊查询。 借书处理:在查询的基础上完成借书登记处理。借书时需要输人书号和读者编号,修改图书表记录和增加借阅表的记录。 还书处理:实现还书处理操作。还书时需要
26、先修改图书记录,改变其借出否标志,再删除相关的借阅记录。,数据库设计,概念模型 读者,图书,借书,数据库逻辑模型,读者(编号,姓名,单位,性别,电话),图书(书号,类别,出版社,作者,书名,定价,借出否),借阅(书号,读者编号,借阅日期),规范化,图书:书号类别,书号出版社,书号作者,书号书名,书号定价,书号借出否; 读者:编号姓名,编号单位,编号性别,编号电话; 借阅:(书号,读者编号)借阅日期; 所有非主属性对码完全并直接依赖。各表均为第三范式。,完整性约束,主码约束: 在“图书”表中,“书号”为主码; 在“读者”表中,“编号”为主码; 在“借阅”表中,“书号”和“读者编号”为主码。这些主码的属性值具有惟一性和非空性。,借阅表和图书表间的外码约束:,借阅中书号为外码,参照表为图书,参照属性为书号。 在借阅关系中插入元组(借阅图书)时,仅当图书表中有相应书号时,系统才执行插人操作,否则拒绝此操作。,借阅表和读者表间的外码约束,借阅中读者编号为外码,参照表为读者,参照属性为编号。在借阅关系中插入元组(借阅图书)时,仅当读者表中有相应读者编号时,系统才执行插人操作,否则拒绝此操作。,关系的属性设计,关系属性的设计包括属性名、数据类型、数据长度、该属性是否允许空值、是否为主码、是否为索引项及约束条件。,读者表,图书表,借阅表,