第第2 2章章 设计数据库设计数据库复习复习1.数据模型的三要素数据结构、数据操作和数据约束条件2.几种常用的数据模型层次模型、网状模型、关系模型3、数据库系统的组成硬件、软件(DBMS、DB、应用程序、OS)和人员(DBA、设计人员、一般用户)第第2 2章章 设计数据库设计数据库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.7 课堂实践:设计数据库第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【任务分析】设计人员在进行数据库设计时,应首先了解数据库设计的基本步骤课堂任务】本节要了解数据库设计的基本步骤第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现按照规范化设计的方法,考虑数据库及其应用系统开发的全过程,将数据库的设计分为以下6个设计阶段(如下图所示):需求分析、概念设计、逻辑设计、物理设计、数据库实施、数据库运行和维护。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1.需求分析阶段需求分析就是根据用户的需求收集数据,是设计数据库的起点需求分析的结果是否准确反映用户的实际需求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用2.概念结构设计阶段概念结构设计是整个数据库设计的关键,它通过对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.逻辑结构设计阶段逻辑结构设计是指将概念模型转换成某个DBMS所支持的数据模型,并对其进行优化4.数据库物理设计阶段数据库物理设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现5.数据库实施阶段在数据库实施阶段,设计人员运用DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果创建数据库(此项工作在第3章具体实现),编制与调试应用程序,组织数据入库,并进行试运行。
6.数据库运行与维护阶段数据库运行与维护是指对数据库应用系统正式投入运行后,在数据库系统运行过程中必须不断地对其进行评价、调整与修改第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【任务分析】设计人员在理解了数据库的理论基础后,现在开始进行学生信息管理系统数据库设计的第一步,即将学生信息管理中的数据收集起来,那么收集的步骤及方法是什么?【课堂任务】本节要理解收集数据的步骤和方法需求分析的任务及目标需求分析的步骤及方法第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.2.1 需求分析的任务及目标需求分析的任务就是收集数据,要尽可能多地收集关于数据库要存储的数据以及将来如何使用这些数据的信息,确保收集到数据库需要存储的全部信息第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现在与用户进行讨论和沟通时,要进行详细的记录。
明确下面一些问题将有助于帮助实现数据库设计目标1)有多少数据,数据的来源在哪里,是否有已存在的数据资源?(2)必须保存哪些数据,数据是字符、数字或日期?(3)谁使用数据,如何使用?(4)数据是否经常修改,如何修改和什么时候修改?(5)某个数据是否依赖于另一个数据或被其他数据引用?(6)某个信息是否要唯一?(7)哪些数据是组织内部的和哪些是外部数据?(8)哪些业务活动与数据有关,数据如何支持业务活动?(9)数据访问的频度和增长的幅度如何?(10)谁可以访问数据,如何保护数据第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.2.2 需求分析的方法进行需求分析首先是调查清楚用户的实际需求,与用户达成共识,然后分析与表达这些 需求调查用户需求的具体步骤如下1)调查组织机构情况2)调查各部门的业务活动情况3)在熟悉了业务的基础上,协助用户明确对新系统的各种要求4)确定新系统的边界第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现常用的调查方法如下:(1)跟班作业。
2)开调查会3)请专人介绍4)询问5)问卷调查6)查阅记录第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【任务分析】设计人员完成了数据库设计的第一步,收集到了与学生信息管理系统相关的数据,下一步的工作是将收集到的学生信息管理的数据进行分析,找出它们之间的联系,并用E-R图来表示课堂任务】本节要理解E-R图的设计方法设计局部E-R模型设计全局E-R模型消除合并局部E-R图存在的冲突第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.3.1 概念结构设计的方法和步骤 1.概念结构设计的方法概念结构设计的方法通常有以下4种自顶向下自底向上逐步扩张混合策略第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.概念结构设计的步骤概念结构的设计可分为以下两步1)进行数据抽象,设计局部E-R模型。
2)集成各局部E-R模型,形成全局E-R模型第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.3.2 局部E-R模型设计E-R图通用的表示方式如下1.用矩形框表示实体型,在框内写上实体名2.用椭圆形框表示实体的属性,并用无向边把实体和属性连接起来3.用菱形框表示实体间的联系,在菱形框内写上联系名,用无向边分别把菱形框与有关实体连接起来,在无向边旁注明联系的类型如果实体间的联系也有属性,则把属性和菱形框也用无向边连接起来第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.3.2 局部E-R模型设计例:设计一个图书馆数据库,此数据库对每个借阅者都保持读者记录,包括:读者号、姓名、地址、性别、年龄、单位对每本书有:书号、书名、作者、出版社对每本被借出的书有:读者号、借出日期、应还日期第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.3.2 局部E-R模型设计实际上实体和属性是相对而言的。
同一事物在一种应用环境中作为“属性”,在另一种应用环境中就有可能作为“实体”因此,为了解决这个问题,应当遵循两条基本准则1)属性不能再具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成2)属性不能与其他实体具有联系联系只发生在实体之间第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-1】设有如下实体学生:学号、系名称、姓名、性别、年龄、选修课程名课程:编号、课程名、开课单位、任课教师号教师:教师号、姓名、性别、职称、讲授课程编号单位:单位名称、、教师号、教师姓名上述实体中存在如下联系1)一个学生可选修多门课程,一门课程可为多个学生选修2)一个教师可讲授多门课程,一门课程可为多个教师讲授3)一个系可有多个教师,一个教师只能属于一个系根据上述约定,可以得到学生选课局部E-R图和教师授课局部E-R图 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.3.3 全局E-R模型设计 1.集成局部E-R图的方法局部E-R图的集成有两种方法。
1)多元集成法(2)二元集成法 2.集成局部E-R图的步骤E-R图集成均分为如下两个步骤1)合并,消除各局部E-R图之间的冲突,生成初步E-R图2)优化,消除不必要的冗余,生成基本E-R图第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1.合并分E-R图,生成初步E-R图 由于各个局部应用所面向的问题不同,并且通常由不同的设计人员进行局部E-R图设计,因此,各局部E-R图不可避免地会有许多不一致的地方,通常把这种现象称为E-R图中的冲突有3种:属性冲突、命名冲突和结构冲突第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1)属性冲突 属性冲突又分为属性值域冲突和属性的取值单位冲突1)属性值域冲突2)属性的取值单位冲突2)命名冲突(1)同名异义(2)异名同义 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3)结构冲突(1)同一对象在不同应用中有不同的抽象,可能为实体,也可能为属性。
这类冲突在解决时,就是使同一对象在不同应用中具有相同的抽象,或把实体转换为属性,或把属性转换为实体2)同一实体在不同局部应用中的属性组成不同,可能是属性个数或属性的排列次序不同解决办法是,合并后的实体的属性组成为各局部E-R图中的同名实体属性的并集,然后再适当调整属性的排列次序3)实体之间的联系在不同局部应用中呈现不同的类型解决方法:根据应用语义对实体联系的类型进行综合或调整第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-1】局部E-R图的合并首先,这两个局部E-R图中存在着命名冲突,学生选课局部E-R图中的实体“系”与教师任课局部E-R图中的实体“单位”都是指系,即所谓异名同义,合并后统一改为“系”,这样属性“名称”和“单位名称”即可统一为“系名”其次,还存在着结构冲突,实体“系”和实体“课程”在两个局部E-R图中的属性组成不同,合并后这两个实体的属性组成为各局部E-R图中的同名实体属性的并集解决上述冲突后,合并两个局部E-R图,就能生成初步的全局E-R图第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.消除不必要的冗余,生成基本E-R图通常采用分析的方法消除冗余。
数据字典是分析冗余数据的依据,还可以通过数据流图分析出冗余的联系第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-1】优化全局E-R图在初步E-R图中,“课程”实体中的属性“教师号”可由“讲授”这个教师与课程之间的联系导出,而学生的平均成绩可由“选修”联系中的属性“成绩”计算出来,所以“课程”实体中的“教师号”与“学生”实体中的“平均成绩”均属于冗余数据另外,“系”和“课程”之间的联系“开课”,可以由“系”和“教师”之间的“属于”联系与“教师”和“课程”之间的“讲授”联系推导出来,所以“开课”属于冗余联系这样,初步E-R图在消除冗余数据和冗余联系后,便可得到基本的E-R模型,如下图所示第2章 设计数据库 系 课程 教师 学生 属于 拥有 选修 讲授 系名 课程号 课程名 学号 姓名 性别 年龄 教师号 姓名 性别 职称 成绩 1 1 n m n m n n 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【任务分析】设计人员用E-R方法表示了数据和数据之间的联系。
这种表示方法不能直接在计算机上实现,为了创建用户所要求的数据库,需要把概念模型转换为某个具体的DBMS所支持的数据模型设计人员使用关系数据库存储学生信息管理的数据,因此按照转换规则将E-R模型转换成关系模式(表),并将关系模式进行规范化,保证关系模式达到3NF第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【课堂任务】本节要掌握将E-R模型转换为关系模式的原则及关系模式的规范化E-R模型转换为关系模式的原则关系模式的规范化非规范化关系模式存在的问题第一范式、第二范式、第三范式第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现数据库逻辑设计的过程是将概念结构转换成特定DBMS所支持的数据模型的过程从此开始便进入了“实现设计”阶段,需要考虑到具体的DBMS的性能、具体的数据模型特点一般的逻辑设计分为以下3步1)初始关系模式设计2)关系模式规范化3)模式的评价与改进第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.4.1 初始关系模式设计 1.转换原则规则2.1 实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体的标识符即为关系模式的码。
规则2.2 联系类型的转换:根据不同的联系类型做不同的处理第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1.转换原则规则2.2.1 若实体间联系是11,可以在两个实体类型转换成的两个关系模式中任意一个关系模式中加入另一个关系模式的码和联系类型的属性规则2.2.2 若实体间的联系是1n,则在n端实体类型转换成的关系模式中加入1端实体类型的码和联系类型的属性第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1.转换原则规则2.2.3 若实体间联系是mn,则将联系类型也转换成关系模式,其属性为两端实体类型的码加上联系类型的属性,而码为两端实体码的组合规则2.2.4 3个或3个以上的实体间的一个多元联系,不管联系类型是何种方法,总是将多元联系类型转换成一个关系模式,其属性为与该联系相连的各实体的码及联系本身的属性,其码为各实体码的组合规则2.2.5 具有相同码的关系可合并第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.实例【例2-2】将下图中含有11联系的E-R图根据上述规则转换为关系模式。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现方案一:“负责”与“职工”两关系模式合并,转换后的关系模式如下职工(职工号,姓名,年龄,产品号)产品(产品号,产品名,价格)方案二:“负责”与“产品”两关系模式合并,转换后的关系模式如下职工(职工号,姓名,年龄)产品(产品号,产品名,价格,职工号)将上面两个方案进行比较,方案一中,由于并不是每个职工都负责产品,就会造成产品号属性的NULL值较多,所以方案二比较合理一些第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-3】将下图中含有1n联系的E-R图根据上述规则转换为关系模式第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现根据规则2.1和规则2.2.2可转换为如下关系模式(带下划线的属性为码)仓库(仓库号,地点,面积)产品(产品号,产品名,价格,仓库号,数量)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-4】将下图中含有同实体集1n联系的E-R图根据上述规则转换为关系模式。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现该例只有一个实体,实体集内部存在着1n的联系,根据规则2.1和规则2.2.2可转换为如下关系模式(带下划线的属性为码)职工(职工号,姓名,年龄,领导工号)其中,“领导工号”就是领导的“职工号”,由于同一关系中不能有相同的属性名,故将领导的“职工号”改为“领导工号”第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-5】将下图中含有mn联系的E-R图根据规则转换为关系模式第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现该例包含两个实体,实体间存在着mn的联系,根据规则2.1和规则2.2.3可转换为如下关系模式(带下划线的属性为码)商店(店号,店名,店址,店经理)商品(商品号,商品名,单价,产地)经营(店号,商品号,月销售量)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.4.2 关系模式的规范化数据库逻辑设计的结果不是唯一的。
为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化关系数据模型的优化通常以规范化理论为指导关系模式设计的好坏将直接影响到数据库设计的成败将关系模式规范化,使之达到较高的范式是设计好关系模式的唯一途径,否则,设计的关系数据库会产生一系列的问题第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1.存在的问题及解决方法1)存在的问题(1)数据冗余太大(2)插入异常(3)删除异常(4)更新异常 2)解决方法对于存在问题的关系模式,可以通过模式分解的方法使之规范化第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.函数依赖基本概念1)规范化规范化是指用形式更为简洁、结构更加规范的关系模式取代原有关系模式的过程2)关系模式对数据的要求关系模式必须满足一定的完整性约束条件以达到现实世界对数据的要求完整性约束条件主要包括以下两个方面1)对属性取值范围的限定。
2)属性值间的相互联系(主要体现在值的相等与否),这种联系称为数据依赖第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.函数依赖基本概念3)属性间的联系客观世界的事物间存在着错综复杂的联系,实体间的联系有两类:一类是实体与实体之间的联系;另一类是实体内部各属性间的联系这里主要讨论第二类联系属性间的联系可分为3类1)一对一联系(1 1)(2)一对多联系(1 n)(3)多对多联系(m n)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.函数依赖基本概念4)数据依赖数据依赖是指通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质数据依赖共有3种:函数依赖(Functional Dependency,FD)、多值依赖(MultiValued Dependency,MVD)和连接依赖(Join Dependency,JD),其中最重要的是函数依赖和多值依赖。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现5)函数依赖在数据依赖中,函数依赖是最基本、最重要的一种依赖,它是属性之间的一种联系,假设给定一个属性的值,就可以唯一确定(查找到)另一个属性的值第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现函数依赖:定义1:设有关系模式R(U),X和Y均为U=A1,A2,An的子集,r是R的任一具体关系,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等(也就是说,如果对于r中的任意两个元组t和s,只要有tX=sX,就有tY=sY),则称X函数决定Y,或称Y函数依赖于X,记作XY,其中X叫做决定因素(Determinant),Y叫做依赖因素(Dependent)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.函数依赖基本概念相关的术语与记号。
1)XY,但Y X,则称XY是非平凡的函数依赖2)XY,但Y X,则称XY是平凡的函数依赖因为平凡的函数依赖总是成立的,所以若不特别声明,本书后面提到的函数依赖,都不包含平凡的函数依赖学号,姓名)姓名(3)若XY,YX,则称X Y4)若Y不函数依赖于X,则记作X Y/第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现定义2:在关系模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有XY,则称Y对X完全函数依赖,记作X Y若XY,如果存在X的某一真子集X,使XY,则称Y对X部分函数依赖,记作X Y/fp第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现定义3:在关系模式R(U)中,X、Y、Z是R的3个不同的属性或属性组,如果XY(Y X,Y不是X的子集),且Y X,YZ,则称Z对X传递函数依赖,记作X Z加上条件Y X,是因为如果YX,则X Y,实际上是XZ,是直接函数依赖而不是传递函数依赖。
/传递/第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现6)属性间联系决定函数依赖前面讨论的属性间的3种联系,并不是每种联系中都存在函数依赖1)1 1联系:如果两属性集X、Y之间是1 1联系,则存在函数依赖:X Y2)1 n联系:如果两属性集X、Y之间是n 1联系,则存在函数依赖:XY,即多方决定一方3)m n联系:如果两属性集X、Y之间是m n联系,则不存在函数依赖第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-10】设有关系模式:学生课程(学号,姓名,课程号,课程名称,成绩,教师,教师年龄),在该关系模式中,成绩要由学号和课程号共同确定,教师决定教师年龄所以此关系模式中包含了以下函数依赖关系学号姓名(每个学号只能有一个学生姓名与之对应),课程号课程名称(每个课程号只能对应一个课程名称),(学号,课程号)成绩(每个学生学习一门课只能有一个成绩),教师教师年龄(每一个教师只能有一个年龄)。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.范式利用规范化理论,使关系模式的函数依赖集满足特定的要求,满足特定要求的关系模式称为范式关系按其规范化程度从低到高可分为5级范式(Normal Form),分别称为1NF、2NF、3NF(BCNF)、4NF、5NF规范化程度较高者必是较低者的子集,即 5NF 4NF BCNF 3NF 2NF 1NF一个低一级范式的关系模式,通过模式分解可以转换成若干个高一级范式的关系模式的集合,这个过程称为规范化第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.范式1)第一范式(1NF)定义4:如果关系模式R中不包含多值属性(每个属性必须是不可分的数据项),则R满足第一范式(First Normal Form),记作R1NF1NF是规范化的最低要求,是关系模式要遵循的最基本的范式,不满足1NF的关系是非规范化的关系关系模式如果仅仅满足1NF是不够的。
尽管学生关系模式S满足1NF,但它仍然会出现插入异常、删除异常、更新异常及数据冗余等问题,只有对关系模式继续规范化,使之满足更高的范式,才能得到高性能的关系模式第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.范式2)第二范式(2NF)定义5:如果关系模式R(U,F)1NF,且R中的每个非主属性完全函数依赖于R的某个候选码,则R满足第二范式(Second Normal Form),记作R 2NF第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【例2-11】关系模式S-L-C(U,F)U=SNO,SDEPT,SLOC,CNO,SCORE,其中,SNO是学号,SDEPT是学生所在系,SLOC是学生的宿舍(住处),CNO是课程号,SCORE是成绩该关系模式的码=(SNO,CNO)函数依赖集F=(SNO,CNO)SCORE,SNOSDEPT,SNOSLOC,SDEPTSLOC非主属性=SDEPT,SLOC,SCORE非主属性对码的部分函数依赖:(SNO,CNO)SDEPT,(SNO,CNO)LOC显然,该关系模式不满足2NF。
pp第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现不满足2NF的关系模式,会产生以下几个问题1)插入异常2)删除异常3)更新异常第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现解决办法:投影分解把关系模式分解为多个关系模式上述关系模式分解的结果如下S-C(SNO,CNO,SCORE)码=(SNO,CNO)F=(SNO,CNO)SCORE S-L(SNO,SDEPT,SLOC)码=SNO F=SNOSDEPT,SNOSLOC,SDEPTSLOC经过模式分解,两个关系模式中的非主属性对码都是完全函数依赖,所以它们都满足2NF第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.范式3)第三范式(3NF)定义6:如果关系模式R(U,F)2NF,且每个非主属性都不传递函数依赖于任何候选码,则R满足第三范式(Third Normal Form),记作R 3NF。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现S-L(SNO,SDEPT,SLOC)码=SNO F=SNOSDEPT,SNOSLOC,SDEPTSLOCSLOC传递函数依赖于码SNO,所以S-L不满足3NF解决的方法同样是将S-L进行投影分解,结果如下S-D(SNO,SDEPT)码=SNO F=SNOSDEPTD-L(SDEPT,SLOC)码=SDEPT F=SDEPTSLOC第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3NF是一个可用的关系模式应满足的最低范式,也就是说,一个关系模式如果不满足3NF,实际上它是不能使用的第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.范式4)BCNFBCNF(Boyce Codd Normal Form)是由Boyce和Codd提出的,比上述的3NF又进了一步,通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
定义7:关系模式R(U,F)1NF,若XY且Y X时,X必含有码,则R(U,F)BCNF也就是说,关系模式R(U,F)中,若每个决定因素都包含码,则R(U,F)BCNF第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【任务分析】设计人员得到了规范化的关系模式后,下一步的工作是考虑数据库在存储设备的存储方法及优化策略,如采取什么存储结构、存取方法和存放位置,以提高数据存取的效率和空间的利用率设计人员进行数据库的物理设计时,要确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构;确定系统配置等课堂任务】本节要理解物理设计的目的及内容存取方法的选择存储结构的确定第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现物理设计的目的是为了有效地实现逻辑模式,确定所采取的存储策略此阶段是以逻辑设计的结果作为输入,并结合具体DBMS的特点与存储设备特性进行设计,选定数据库在物理设备上的存储结构和存取方法。
数据库的物理设计可分为两步1)确定数据库的物理结构,在关系数据库中主要指存储结构和存取方法2)对物理结构进行评价,评价的重点是时间和空间效率第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.5.1 关系模式存取方法选择数据库管理系统一般都提供多种存取方法,常用的存取方法有3类:第一类是索引方法;第二类是聚簇(Cluster)方法;第三类是HASH方法第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现1.索引存取方法的选择所谓索引存取方法就是根据应用要求确定对关系的哪些属性列来建立索引、哪些属性列建立组合索引、哪些索引要设计为唯一索引等1)如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)2)如果一个属性经常作为最大值或最小值等聚集函数的参数,则考虑在这个属性上建立索引3)如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.聚簇存取方法的选择设计聚簇的规则如下。
1)凡符合下列条件之一,可以考虑建立聚簇对经常在一起进行连接操作的关系可以建立聚簇如果一个关系的一组属性经常出现在相等比较条件中,则该关系可建立聚簇如果一个关系的一个或一组属性上的值的重复率很高,即对应每个聚簇码值的平均元组数不是太少,则可以建立聚簇如果元组数太少,聚簇的效果不明显第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.聚簇存取方法的选择设计聚簇的规则如下2)凡存在下列条件之一,应考虑不建立聚簇需要经常对全表进行扫描的关系在某属性列上的更新操作远多于查询和连接操作的关系第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.聚簇存取方法的选择使用聚簇需要注意的问题如下1)一个关系最多只能加入一个聚簇2)聚簇对于某些特定应用可以明显地提高性能,但建立聚簇和维护聚簇的开销很大3)在一个关系上建立聚簇,将导致关系中的元组移动其物理存储位置,并使此关系上的原有索引无效,必须重建。
4)当一个元组的聚簇码值改变时,该元组的存储也要做相应的移动,所以聚簇码值要相对稳定,以减少修改聚簇码值所引起的维护开销第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现3.HASH存取方法的选择有些数据库管理系统提供了HASH存取方法选择HASH存取方法的规则如下如果一个关系的属性主要出现在等值连接条件中或主要出现在相等比较选择条件中,并且满足下列两个条件之一时,则此关系可以选择HASH存取方法1)如果一个关系的大小可预知,并且不变2)如果关系的大小动态改变,并且所选用的DBMS提供了动态HASH存取方法第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.5.2 确定数据库的存储结构确定数据库的物理结构主要是指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构;确定系统配置等1.确定数据的存放位置2.确定系统配置第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现数据库的实施和维护1)数据的载入2)数据库试运行3)数据库的运行与维护第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现【任务分析】设计学生信息管理数据库。
课堂任务】通过上面的学习,设计人员已经了解了关系数据库设计的全过程,即设计关系数据库包括下面几个步骤收集数据创建E-R模型创建数据库关系模型规范化数据确定数据存储结构及存取方法第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.6.1 收集数据为了收集数据库需要的信息,设计人员与学生管理人员和系统的操作者进行了交谈,从最初的谈论中,记录了如下要点1)数据库要存储每位学生的基本信息、各系部的基本信息、各班级的基本信息、教师基本信息、教师授课基本信息和学生宿舍基本信息2)管理人员可以通过数据库管理各系部、各班、各教师、全院学生的基本信息3)按工作的要求查询数据,如浏览某系部、某班级、某年级、某专业等学生基本信息4)根据要求实现对各种数据的统计,如学生人数,应届毕业生人数,某系、某专业、某班级男女生人数,各系部教师人数,退、休学人数等第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.6.1 收集数据(5)能实现对学生学习成绩的管理(录入、修改、查询、统计、打印)。
6)能实现对学生住宿信息的管理,如查询某学生的宿舍楼号、房间号及床位号等7)能实现历届毕业生的信息管理,如查询某毕业生的详细信息8)数据库系统的操作人员可以查询数据,而管理人员可以修改数据9)使用关系数据库模型第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.6.2 创建E-R模型1.进行数据抽象,设计局部E-R模型设计人员在对收集到的大量信息进行分析、整理后,确定了数据库系统中应该存储如下一些信息:学生基本信息;系部基本信息;班级基本信息;教师基本信息;课程基本信息;学生学习成绩信息;学生综合素质成绩信息;毕业生基本信息;宿舍基本信息;系统用户信息设计人员根据这些信息抽象出系统将要使用的实体:学生、系部、班级、课程、教师、宿舍,定义实体之间的联系以及描述这些实体的属性,最后用E-R图表示这些实体和实体之间的联系第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现学生实体的属性:学号,姓名,性别,出生日期,身份证号,家庭住址,联系,邮政编码,政治面貌,简历,是否退学,是否休学。
码是学号系部实体的属性:系号,系名,系主任,办公室,码是系号班级实体的属性:班级号,班级名称,专业,班级人数,入学年份,教室,班主任,班长码是班级号课程实体的属性:课程号,课程名,学期码是课程号+学期教师实体的属性:教师号,姓名,性别,出生日期,所在系别,职称码是教师号宿舍实体的属性:楼号,房间号,住宿性别,床位数码是楼号+房间号第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现实体与实体之间的联系为:一个系拥有多个学生,每个学生只能属于一个系;一个班级拥有多个学生,每个学生只能属于一个班级;一个系拥有多名教师,一位教师只能属于一个系;一个学生只在一个宿舍里住宿,一个宿舍里可容纳多名学生;一个学生可学习多门课程,一门课程可由多名学生学习;一位教师可承担多门课程的教授任务,一门课程可由多位教师讲授因此,系部实体和班级实体的联系是一对多联系;系部实体和教师实体是一对多联系;班级实体和学生实体是一对多联系;学生实体和课程实体是多对多联系;课程实体和教师实体多对多联系;宿舍实体和学生实体是一对多联系。
第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现根据上述抽象,可以得到学生选课、教师授课、学生住宿、学生班级等局部E-R图 学生选课局部E-R图第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现根据上述抽象,可以得到学生选课、教师授课、学生住宿、学生班级等局部E-R图 教师授课局部E-R图 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现根据上述抽象,可以得到学生选课、教师授课、学生住宿、学生班级等局部E-R图 学生住宿局部E-R图 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现根据上述抽象,可以得到学生选课、教师授课、学生住宿、学生班级等局部E-R图 学生班级局部E-R图 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.全局E-R模型设计 1)合并局部E-R图,生成初步E-R图 合并局部E-R图的关键是合理消除各局部E-R图中的冲突。
学生选课局部E-R图和教师授课局部E-R图中“系”的命名存在冲突,学生选课E-R图中的“系”命名为“系别”,教师授课局部E-R图中“系”命名为“单位”;同时两局部E-R图中存在结构冲突,学生选课局部E-R图中“系”的属性有“系名,系主任”,教师授课局部E-R图中“系”的属性有“单位名称、领导、办公室、联系”学生选课局部E-R图、学生住宿局部E-R图和学生班级局部E-R图中同一个“学生”实体的属性组成不同,属性的个数和排列次序均不同第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.全局E-R模型设计 合并局部E-R图,生成初步E-R图 合并局部E-R图的关键是合理消除各局部E-R图中的冲突学生选课局部E-R图和教师授课局部E-R图中“系”的命名存在冲突,学生选课E-R图中的“系”命名为“系别”,教师授课局部E-R图中“系”命名为“单位”;同时两局部E-R图中存在结构冲突,学生选课局部E-R图中“系”的属性有“系名,系主任”,教师授课局部E-R图中“系”的属性有“单位名称、领导、办公室、联系”。
学生选课局部E-R图、学生住宿局部E-R图和学生班级局部E-R图中同一个“学生”实体的属性组成不同,属性的个数和排列次序均不同第2章 设计数据库学生信息管理系统的全局E-R图 第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.6.3 设计关系模式 第一步,处理E-R图中的实体E-R图中共有6个实体,每个实体转成一个表,实体的属性转换为表的列,实体的码转换为表的主码得到6个关系模式如下学生(学号,姓名,性别,出生日期,身份证号,家庭住址,联系,邮政编码,政治面貌,简历,是否退学,是否休学)系(系号,系名,系主任,办公室,)班级(班级号,班级名称,专业,班级人数,入学年份,教室,班主任,班长)课程(课程号,课程名,学期)教师(教师号,姓名,性别,出生日期,职称)宿舍(楼号,房间号,住宿性别,床位数)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.6.3 设计关系模式 第二步,处理E-R图中的联系。
在E-R图中共有两种联系类型:一对多的联系和多对多的联系设计人员在经过讨论后决定,对于一对多的联系类型,不创建单独的表,而是通过添加外码的方式建立数据之间的联系转换后得到关系模式如下学生(学号,姓名,性别,出生日期,身份证号,家庭住址,联系,邮政编码,政治面貌,简历,是否退学,是否休学,楼号,房间号,床位号,班级号)系(系号,系名,系主任,办公室,)班级(班级号,班级名称,专业,班级人数,入学年份,教室,班主任,班长,系号)课程(课程号,课程名,学期)教师(教师号,姓名,性别,出生日期,职称,系号)宿舍(楼号,房间号,住宿性别,床位数)对于多对多的联系类型,则创建如下关系模式选修(学号,课程号,成绩)讲授(教师号,课程号)第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现2.6.4 规范化在对关系模式进行规范化的过程中,设计人员从第一范式1NF开始,一步步进行规范第一步,判断关系模式是否符合1NF要求设计人员分析的每个关系模式的所有属性,都是最小数据项,因此满足1NF的要求第二步,判断关系模式是否符合2NF要求。
下面以教师关系模式为例,判断该关系模式是否满足2NF该关系模式的函数依赖集F=教师号姓名,教师号性别,教师号出生日期,教师号职称,教师号系号该关系模式的码为教师号,不存在非主属性对码的部分函数依赖,因此该关系模式达到2NF设计人员查看了第一步之后的所有关系模式,每个关系模式中的所有非主属性都是由主码决定的,因此是满足2NF的第第2 2章章 设计数据设计数据库库2.1 数据库设计概述2.2 需求分析2.3 概念结构设计2.4 逻辑结构设计2.5 数据库的物理设计2.6 任务实现第三步,判断关系模式是否符合3NF要求设计人员查看了第二步之后的所有表,每个表中的所有非主属性都只依赖于码,因此满足3NF经过分析、设计和判断,得到的最终关系模式如下学生(学号,姓名,性别,出生日期,身份证号,家庭住址,联系,邮政编码,政治面貌,简历,是否退学,是否休学,楼号,房间号,床位号,班级号)系(系号,系名,系主任,办公室,)班级(班级号,班级名称,专业,班级人数,入学年份,教室,班主任,班长,系号)课程(课程号,课程名,学期)教师(教师号,姓名,性别,出生日期,职称,系号)宿舍(楼号,房间号,住宿性别,床位数)选修(学号,课程号,成绩)讲授(教师编号,课程号)第2章 设计数据库。