1、电子信息工程系授课教师:邓伟华第二讲概念设计教学重点教学重点。数据库概念设计第二讲概念设计掌握数据库的范式理论。掌握数据库的设计的三个模式理论。掌握利用ER图进行数据库概念设计教学目的教学目的教学难点教学难点数据库的范式理论0 0 回顾前讲的内容回顾前讲的内容1、数据库的基本知识和数据库设计技术;2、数据库设计的重要性;3、数据库设计的步骤;4、数据库设计的需求分析;回顾一:数据建模的概念将现实世界的数据转换成信息世界的数据的过程称为建模回顾二:数据库设计的必要性好的数据库结构有利于:-节省数据的存储空间节省数据的存储空间-能够保证数据的完整性能够保证数据的完整性-方便进行数据库应用系统的开发
2、方便进行数据库应用系统的开发设计不好的数据库结构将导致-数据冗余、存储空间浪费数据冗余、存储空间浪费-各种数据操作异常各种数据操作异常-内存空间浪费内存空间浪费需求收集和分析设计概念结构设计逻辑结构数据模型优化设计物理结构评价设计,性能预测物理实现试验性运行使用、维护数据库应用需求数据、处理转换规则、DBMS功能优化方法应用要求,DBMS详细特征需求分析阶段数据库运行、维护阶段不满意不满意数据库实施阶段物理设计阶段逻辑设计阶段概念设计阶段回顾三:数据库设计的步骤数据库的设计步骤数据库的设计步骤需求收集和分析需求收集和分析设计概念结构设计概念结构设计逻辑结构设计逻辑结构设计物理结构设计物理结构物
3、理实现物理实现数据库的设计步骤数据库的设计步骤需求收集和分析需求收集和分析用户关心什么用户关心什么用户要什么结果用户要什么结果设计概念结构设计概念结构设计逻辑结构设计逻辑结构设计物理结构设计物理结构物理实现物理实现数据库的设计步骤数据库的设计步骤需求收集和分析需求收集和分析设计概念结构设计概念结构存什么存什么关系(联系)如何关系(联系)如何E/R图,是各种数据模型的共同基础图,是各种数据模型的共同基础设计逻辑结构设计逻辑结构设计物理结构设计物理结构物理实现物理实现数据库的设计步骤数据库的设计步骤需求收集和分析需求收集和分析设计概念结构设计概念结构设计逻辑结构设计逻辑结构用什么数据模型用什么数据
4、模型数据库的模式(数据库的模式(database schema)用户子模式用户子模式设计物理结构设计物理结构物理实现物理实现数据库的设计步骤数据库的设计步骤需求收集和分析需求收集和分析设计概念结构设计概念结构设计逻辑结构设计逻辑结构设计物理结构设计物理结构数据怎么存数据怎么存根据根据DBMS产品、环境特点产品、环境特点物理实现物理实现数据库的设计步骤数据库的设计步骤需求收集和分析需求收集和分析设计概念结构设计概念结构设计逻辑结构设计逻辑结构设计物理结构设计物理结构物理实现物理实现运行运行DDL装入测试数据装入测试数据应用程序应用程序8.2.2需求分析的方法一.调查用户需求的具体步骤1.调查组织
5、机构情况;2.调查各部门的业务活动情况;3.协助用户明确对新系统的各种要求;4.确定新系统的边界.二.常用的调查方法1.跟班作业;2.开调查会;3.请专人介绍;4.询问;5.设计调查表请用户填写;6.查阅记录.8.2 需需 求求 分分 析析8.2.1需求分析的任务.需求分析调查组织机构总体情况熟悉业务活动明确用户需求确定系统边界用户数据库设计人员.DDDDDFD概念设计需求分析过程8.3 概念结构设计概念结构设计8.3.1概念结构的主要特点:1.能真实、充分地反映现实世界;2.易于理解;3.易于更改;4.易于向关系模式转变。8.3.2:实体关系模型实体关系模型:DB 设计过程,并且表示 DB
6、的整个逻辑结构 实体:实体可以是具体的(例如一个人或一本书),也可以是抽象的(如一个节日或一个概念)属性:实体是由一组属性来表示的。例如:Person(个人)实体的属性有 Name(名称)、SSN、Age(年龄)、Street(街道)、City(城市)关系:关系是两个或多个实体之间的联系数据抽象2.聚类聚类(Aggregation)学生张英王平刘勇赵亮“ismemberof”3.概括概括(Generalization)学生学号姓名 专业 班级“ispartof”实体型属性学生本科生研究生“issubsetof”三种抽象1.分类分类(Classification)关系的类型X X X X Y Y
7、 Y Y 一对一一对一X X X X Y Y Y Y 一对多一对多X X X X Y Y Y 多对一多对一X X X X Y Y Y Y 多对多多对多E-R 图的符号符号含义实体类型属性关系E-R 图姓名Person性别身份证结合11时间E-R 图客户客 户号名称汽车汽 车号名称订购日期1mE-R 图学生学号姓名课程课程号名称学分选课时间nm8.3.3:采用ER的概念模型设计步骤1、局部设计需求分析结果确定局部结构范围定义实体属性分配定义联系进入全局ER模式设计还有局部结构等待分析吗是8.3.3:采用ER的概念模型设计步骤2、全局设计局部ER模式确定公共实体合并两个局部ER模式检查并消除冲突进
8、入全局ER模式优化是还有冲突?还有局部模式?是 3 视图的集成视图的集成视图集成的两种方式视图集成的两种方式:*多个分E-R图一次集成.(a)*逐步集成,用累加的方式一次集成两个分E-R图.(b)(E-R)1(E-R)2(E-R)n基本E-R初步E-R(E-R)3(E-R)12(E-R)2(E-R)1初步E-R基本E-R(a)(b)视图集成的两种方式 合并分合并分E-R图,生成初步图,生成初步E-R图图1、属性冲突(1)属性域冲突(2)属性取值单位冲突2、命名冲突(1)同名异义(2)异名同义3、结构冲突(1)同一对象在不同应用中具有不同定抽象(2)同一实体在不同分E-R图中所包含的属性个数和属
9、性排列次序不完全相同.合理消除各分E-R图的冲突是合并分E-R图的主要工作与关键所在。各分E-R图之间主要有三类冲突。8.3.3:采用ER的概念模型设计步骤3、全局ER模式优化加工加工消耗存储零件数Q1耗用量Q2存放量Q5库存量Q4用电量Q3产品材料仓库零件消除不必要的冗余,设计基本消除不必要的冗余,设计基本E-R图图(一).采用分析方法消除冗余(二).用规范化理论消除冗余1.确定分E-R图实体之间的数据依赖.2.求FL的最小覆盖GL,差集为:D=FL-GL8.3.4:范式理论范式理论:第一范式:1NF第二范式:2NF第三范式:3NF带有问题的表格工程号工程名称职工号姓名职务小时工资率工时A1
10、花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1004葛宇洪律师6019A2立交桥1001齐光明工程师6515A2立交桥1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技术员6014问题分析1表中包含大量的冗余,可能会导致数据异常:a.更新异常 例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行。b.添加异常 若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)c.删除异常 例如,1001号职工要辞职,
11、则必须删除所有职工号1001的数据行。这样的删除操作,很可能丢失了其它有用的数据。什么是规范化 研究设计一个“好”的(没有“毛病”的)关系模式的办法。第一范式第二范式第三范式第一范式第一范式的定义:指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。在第一范式(1NF)中表的每一行只包含一个实例的信息第一范式要求:属性是原子性的要求:属性是原子性的客户号客户号姓名姓名联系方法联系方法宅电宅电手机手机邮址邮址不可以出现如上的关系不可以出现如上的关系 联系方法非原子性联系方法非原子性第二范式第二范式的定义:如果一个表属于1NF,且不
12、包含部分依赖性,既没有任何属性只依赖于关键字的一部分,则这个表属于第二范式(常记成2NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分.将1NF转换成2NF的方法是分解。第二范式在符合第一范式的基础上,在符合第一范式的基础上,再要求:关系中不存在这样的函数依赖:再要求:关系中不存在这样的函数依赖:x-Ax-Ax x是部分主键,是部分主键,A A是某一属性是某一属性送货单号产品码数量客户号客户宅电客户地址客户邮编经办人=送货单号客户号客户宅电客户地址客户邮编经办人送货单号产品码数量第三范式第三范式的定义:如果一个表属于2NF,且不包含传递依赖性,则这个表是第三范式(常记成
13、3NF)。满足3NF的表中不包含传递依赖,即没有一个非关键属性依赖于另一个非关键属性,或者说没有一个非关键属性决定另一个非关键属性。第三范式就是属性不依赖于其它非主属性。第三范式第三范式:在符合第一、第二范式的基础上,再要求不存在传递依赖 客户号-决定了客户地址,客户地址决定了客户地址邮编。是传递依赖。客户号客户宅电客户地址客户邮编送货单号客户号客户宅电客户地址客户邮编经办人送货单号客户号经办人客户号客户宅电客户地址客户邮编=案例分析Select学号姓名年龄所在学院学院地点学院电话把学生关系表分为如下两个表:学生:(学号,姓名,年龄,所在学院);学院:(学院,地点,电话)。规范化实例1-2假设
14、某建筑公司要设计一个数据库。公司的业务规则概括说明如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等;公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等;公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)。公司定期制定一个工资报表,如图-1所示。规范化实例2-2工程号工程名称职工号姓名职务小时工资率工时实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇宏律师60191140.00小计2945.00A2立交桥1001齐光明工程师6515975
15、.001003鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00 某公司的工资表某公司的工资表再看这三个表的函数依赖图工程号工程名称职工号姓名职务小时工资率工程号职工号工时图图 三个表的函数依赖图三个表的函数依赖图画出四个表的函数依赖图 从函数依赖图可见,已经消除职工表中的传递依赖,这四个表都属于第三范式。在绝大多数情况下,一个数据库的所有表都满足3NF,就基本达到数据库设计的目标。工程号工程名称职工号姓名职务职务小时工资率工程号职工号工时案例分析SelectCourse学号姓名年龄课
16、程名称成绩学分把选课关系表SelectCourse改为如下三个表:学生:Student(学号,姓名,年龄);课程:Course(课程名称,学分);选课关系:SelectCourse(学号,课程名称,成绩)。案例分析及实现一X员工在X日期收到X订单中的X货品X件到仓库中.X员工在X日期在仓库中提取X货品X件案例分析及实现一员工:员工:员工号员工号姓名姓名货品:货品:货品编号货品编号货品描述货品描述库仓:库仓:库仓号库仓号库仓描述库仓描述收货收货:员工员工日期日期订单号订单号出货出货:员工员工日期日期出货号出货号收货明细:收货明细:订单号订单号货品货品数量数量出货明细出货明细出货号出货号货品货品日
17、期日期数量数量正规化选择将表格分得过细有时并不好,因为这样需要将各表进行各种的关联,这会令查询时变得复杂,而且效率也可能降低,这些正规化的规定可以参考,在实际应用时,要根据项目的大小,必要时可以进行一些测试,以设计出更合理的表格结构。8.4 逻辑设计逻辑设计概念结构基本E-R图一般数据模型关系、网状、层次特定的DBMS支持下的数据模型优化的数据模型转换规则DBMS的特点和限制优化方法ER模型向逻辑模型转换每个实体转换成一个关系模式一个1:1的联系可以转换为一个关系模式,或与任意一端的关系模式合并若独立转换为一个关系模式,两端的关系码及联系的属性为该关系的属性;若与一端合并,那么将另一端的码及联
18、系的属性合并到该端.一个1:n的关系可以转换成一个关系模式,或与n端的关系模式合并.若独立转换为一个关系模式,两端的关系码及联系的属性为该关系的属性,n端的码为该关系的码.一个m:n的联系可以转换为一个关系模式,那么两端的关系码及联系的属性为该关系的属性,关系的码为两端实体码的组合.E-R图向关系模型的转换方法一、转换一般遵循如下原则:1、一个实体型转换为一个关系模式.2、一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。3、一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。4、一个m:n联系可以转换为一个关系模式。5、三个或三个以上实体
19、间的一个多元联系可以转换为一个关系模式。6、具有相同码的关系模式可合并。二、自联系1、1:1的联系转换在实体中增加一个表示关系的字段2、1:n联系的转换方法一:在n端增加1端关键字方法二:为联系增加表3、M:N的联系转换三、多元联系的转换1、最多只有一个实体的基数大于12、其他情况四、多重联系的转换1、转换方法:每重单独考虑2、弱实体的处理:弱实体不能独立存在,他必须依附于一个所有者实体,在关系转换时,弱实体对应的关系必须包含所有者实体的主键。8.4.2数据模型的优化1、确定数据依赖2、对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。3、按照数据依赖的理论对关系模式逐一进行分析,确定各关系模式分别属于第几范式。4、按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适。5、对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率。课堂小结数据库设计方法