500 likes | 674 Views
第三章 数据库的逻辑结构与 物理结构设计. 逻辑模型 关系模型 关系规范化 逻辑结构设计的任务 数据库的物理结构设计. 第一节 逻辑模型. 一、 主要的逻辑模型 二、 逻辑模型的三要素. 一、主要的逻辑模型. 1. 层次模型 层次模型( Hierarchical Model )是按照层次结构的形式组织数据库数据的数据模型,是数据库中使用较早的一种数据模型,其典型代表是 IBM 公司研制的、曾经被广泛使用的第一个大型商用数据库信息管理系统 IMS ( Information Management System )。. R1. R2. R3. R4.
E N D
第三章 数据库的逻辑结构与物理结构设计 • 逻辑模型 • 关系模型 • 关系规范化 • 逻辑结构设计的任务 • 数据库的物理结构设计
第一节 逻辑模型 一、主要的逻辑模型 二、逻辑模型的三要素
一、主要的逻辑模型 1. 层次模型 层次模型(Hierarchical Model)是按照层次结构的形式组织数据库数据的数据模型,是数据库中使用较早的一种数据模型,其典型代表是IBM公司研制的、曾经被广泛使用的第一个大型商用数据库信息管理系统IMS(Information Management System)。
R1 R2 R3 R4 R5 (1)数据结构 层次模型使用树形结构表示实体及实体间的联系。层次模型的基本特点是:有且只有一个结点没有父结点,这个结点称为根结点;根以外的其他结点有且只有一个父结点。 图3-1 层次模型示例
2. 网状模型 网状模型的典型代表是DBTG系统,亦称CODASYL系统。这是20世纪70年代数据系统语言研究会(Conference on Data System Language, 简称CODASYL)下属的数据库任务组(Data Base Task Group,简称DBTG)提出的一个系统方案。DBTG系统虽然不是实际的软件系统,但是它提出的基本概念、方法和技术具有普遍意义,对于网状数据库系统的研制和发展起了重大的影响。
C A B D (1)数据结构 网状模型是用网状结构表示实体及其之间联系的模型。网状模型的特点如下:可以有一个以上结点无父结点;至少有一个结点有一个以上父结点。 图3-2 网状数据模型
3. 关系模型 关系模型是目前最重要、应用最广泛的一种数据模型。现在主流的数据库系统大都是基于关系模型的关系数据库系统(Relational Database System)。关系模型是由美国IBM公司San Jose研究室的研究员E.F.Codd于1970年首次提出的。20世纪80年代以来,计算机新推出的DBMS几乎都支持关系模型。
(1)数据结构 在关系数据模型中,把二维表格称为关系,表中的列称为属性,属性的取值范围称为域,表中的一行称为一个元组,元组用关键字标识。关系模型是由若干关系模式组成的集合。在关系模型中用二维表表示实体集及其属性,用二维表描述实体集间的联系。
4. 面向对象模型 面向对象的概念最早出现在程序设计语言中,20世纪70年代末、80年代初开始提出了面向对象的数据模型(Object-Oriented Data Model),面向对象模型是面向对象概念与数据库技术相结合的产物,用以支持非传统应用领域对数据模型提出的新需求。它的基本目标是以更接近人类思维的方式描述客观世界的事物及其联系,且使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致,以便对客观实体进行结构模拟和行为模拟。
面向对象模型的基本概念有:对象、类、消息与封装、继承。面向对象模型的基本概念有:对象、类、消息与封装、继承。 (1)对象(Object) 对象是现实世界中的实体的模型化。对象由状态和行为两部分组成。 • 对象的状态是对象属性的集合。属性是用来描述对象的状态、组成及特性,属性既可以是一些简单的数据类型,也可以是一个对象,即对象可以嵌套。 • 对象的行为是在对象状态上操作的方法的集合。方法用来描述对象的行为方式。方法的定义一般分为接口说明和实现两部分。方法的实现是一段程序代码,用以实现方法的功能。
(2)类(Class) 具有相同属性集和方法集的所有对象构成一个类。类可以由用户自定义,也可以从其他类派生出来,称为子类,原来的类称为超类(或父类)。 (3)消息(Message)与封装(Encapsulation) 对象与外部的通信只能借助于消息。封装使方法的接口和实现分开 (4)继承(Inheritance) 子类可以继承其所有超类中的属性和方法,同时子类还要定义自己的属性和方法。
二、逻辑模型的三要素 1.数据结构 数据结构用于描述数据库系统的静态特性 2.数据操作 数据操作用于描述数据库系统的动态特性,是指一组用于指定数据结构的任何有效的操作或推导规则。 3.数据的约束条件 数据的约束条件是一组完整性规则的集合。
第二节 关系模型 一、关系模型的数据结构 二、关系模型的数据操作 三、关系模型的数据完整性约束
一、关系模型的数据结构 1. 关系 关系就是定义在它的所有属性域上的多元关系。 关系R可表示为: 或 关系要满足以下四个条件: (1)关系中的每一列都是不可再分的基本属性。 (2)表中各属性不能重名。 (3)表中任意两个元组不能完全相同。 (4)表中的行、列次序无关紧要,可以任意交换。
2. 关系模式 关系模式是对关系的描述或定义,包括关系名、属性、属性对应的域集合、属性到域的映射以及属性之间数据的依赖关系。 关系模式和关系是型和值的关系。 3. 属性 二维表中的列称为属性(Attribute),列中的值取自相应的域(Domain),域是属性所有可能取值的集合。
4. 元组 表中的一行称为一个元组(Tuple)。 5.键 (1)候选键(Candidate key):如果关系的某一属性或属性组的值唯一地决定其他所有属性的值,即唯一地决定一个元组,而其任何真子集无此性质,则这个属性或属性组称为关系的候选键,或简称为键。 (2)主键(Primary Key):从侯选键中选定一个为主键。 (3)外键(Foreign Key):如果关系中的属性或属性组不是本关系的键,而是引用其他关系的键,则称为此关系的外键。
主键 属性 学生 元 组 外键 课程 选课
二、关系模型的数据操作 1. 传统的集合运算 (1)并(Union):设关系R和S是同一关系模式下的关系,则R和S的并是由属于R或属于S的元组组成的集合。记作 (2)差(Difference):设关系R和S是同一关系模式下的关系,则R和S的差是由属于R但不属于S的元组组成的集合。记作 (3)交(Intersection):设关系R和S是同一关系模式下的关系,则R和S的并是由既属于R又属于S的元组组成的集合。记作
例3.1已知关系R和S如表所示,求R和S的并、差、交运算。例3.1已知关系R和S如表所示,求R和S的并、差、交运算。 R-S R∪S R S R∩S
(4)笛卡尔积(Cartesian Product):设关系R和S的列数分别为r和s,元组的个数分别为m和n,则关系和的笛卡尔积是一个r+s列的元组的集合。每个元组的前r个分量来自关系R的一个元组,后s个分量来自关系S的一个元组,且元组的数目有m×n个,记作 R×S 例3.2 R S
结果 2. 专门的关系运算 (1)选择操作(Selection):选择是一种一元关系操作,它作用在一个关系R上,按给定的选择条件F,选出符合条件的元组,记作 ,其中F是一个逻辑表达式,取值为“true”或“false”。简记 例3.3 ①从学生关系中查找姓名是高明的学生。 ②从学生关系中查找出生年份为1987的所有女生。 解:①σ姓名=’高明’(学生) ② σ性别=’女’AND 出生年份=1987(学生)
(2)投影操作(Projection):投影也是一元关系操作。投影操作选取关系的某些列。关系R在属性列(2)投影操作(Projection):投影也是一元关系操作。投影操作选取关系的某些列。关系R在属性列 上的投影记作: 简记为: (<关系名>)。 结果 例3.4 从学生关系中查找所有学生的姓名和入学年份。 解:∏姓名,入学年份(学生) 注意:投影操作后的关系可能会出现内容完全相同的若干个元组,而根据关系的要求不允许出现内容完全相同的元组,因此结果只能保留其中一个元组。
例3.5从学生关系中查找所有学生的入学年份和班级号。例3.5从学生关系中查找所有学生的入学年份和班级号。 解:∏入学年份,班级号(学生) 结果如表所示(该表中去掉了内容完全相同的两个元组)。
(3)连接操作(Join):连接是二元关系操作,以符号 表示。它的定义为: R S= 连接条件(R×S) 连接与笛卡尔积的区别在于笛卡尔积包含两个关系的所有元组的组合,而连接只包含满足连接条件的元组的组合。如果连接条件为两个关系中的两个属性进行相等比较,则称为等值连接。若在等值连接中再要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中去掉重复的属性列,则称为自然连接。在自然连接表示式中一般可以省略连接条件。
例3.6 给出以下操作的结果 (1) 选课 (2) 学生 学生 选课 (1) (2)
(4)除操作(Division) 像集(Image Set):设关系R(X,Z), X,Z是属性组,则将R中属性组X上的值为x的各元组在Z分量上集合,称为x在R中的像集。记作 设关系R(X,Y)和S(Y,Z), X,Y,Z是属性组,则将R与S的除操作定义为R中满足以下条件的元组在X属性上的投影:关系R中的元组在X上分量值x的像集Yx包含S在Y上投影的集合。记作
例3-7 关系R和S如表3-14(a)、(b)所示,则R和S的除运算如表3-14(c)所示。 R S R÷S 在R中,(A,B) 取三个值{(A1,B1),(A2,B2),(A3,B2)} (A1,B1)的像集为{(C1,D1),(C2,D2),(C3,D3)} (A2,B2)的像集为{(C1,D1),(C2,D2)} (A3,B2)的像集为{(C1,D1),(C1,D2)} S在(C,D)上的投影为 {(C1,D1),(C2,D2)}
三、关系模型的数据完整性约束 1. 实体完整性 每个关系都必须有主健,各元组的主键的值不能相同,主键的属性(即主属性)值不允许取空值。 2. 参照完整性 参照完整性也称为引用完整性。参照完整性约束是不同关系之间或同一关系的不同元组间的约束。 3. 用户定义的完整性 用户定义的完整性就是针对某一具体应用领域定义的数据库约束条件。它说明某一具体应用所涉及的数据必须满足的语义要求。
第三节 关系规范化 一、函数依赖的基本概念 二、规范化
一、函数依赖的基本概念 1. 函数依赖 假设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集,即 。设 是关系R中的任意两个元组,如果由 可以推导出 。则称“X函数决定Y”或“Y函数依赖于X”,记作 。 2. 平凡函数依赖与非平凡函数依赖 在关系模式R(U)中,X和Y是U的子集,即 。如果 ,但 ,则称是非平凡函数依赖。若 ,则称 为平凡函数依赖。
3. 完全函数依赖与部分函数依赖 设X、Y是某关系的不同属性集,如 ,且不存在 ,使 ,则称Y完全函数依赖(Full Functional Dependency)于X,记作 ;否则称Y部分函数依赖(Partial Function Dependency)于X,记作 。 4. 传递函数依赖 设X、Y、Z是某关系的不同的属性集,如果 , , ,则称Z对X传递函数依赖(Transitive Functional Dependency)。
假定有如下关系:S(学号,姓名,性别,系名,系主任,课程号,课程名,成绩),主键为(学号,课程号)假定有如下关系:S(学号,姓名,性别,系名,系主任,课程号,课程名,成绩),主键为(学号,课程号) • 学号→姓名,(学号,课程号)→成绩 • (学号,课程号) 成绩 ;(学号,课程号) 姓名 • 由于学号→系名,并且有系名 学号,系名→系主任,因此学号→系主任是传递函数依赖关系。
二、规范化 1. 对关系模式进行规范化的原因 以关系S(学号,姓名,性别,系名,系主任,课程号,课程名,成绩)为例进行分析。 (1)数据冗余。 (2)数据修改复杂。 (3)数据插入异常。 (4)数据删除异常。
2. 范式 (1)第一范式 对于关系模式R的任一关系r,若其每一属性值都是基本属性(或原子属性),则称R为满足第1范式的关系,记作 (2)第二范式 若关系模式R属于第1范式,且每个非主属性都完全函数依赖于主键,则R属于第二范式,记作
例3.10前面给出的关系S,主键为(学号,课程号)。由于存在非主属性姓名、性别、课程名部分函数依赖于(学号,课程号)。因此,它不属于2NF。例3.10前面给出的关系S,主键为(学号,课程号)。由于存在非主属性姓名、性别、课程名部分函数依赖于(学号,课程号)。因此,它不属于2NF。 方法:分解为多个满足2NF的关系模式 (1)首先用组成主键的属性集合的每个子集作为主键构成一个关系。分解成3个子关系。 (2)对于每个子关系,将依赖于此主键的属性放置到此关系中 S1(学号,姓名,性别,系名,系主任),其中(学号)为主键 S2(课程号,课程名),其中(课程号)为主键 S3(学号,课程号,成绩),其中(学号,课程号)为主键 S1, S2, S3均满足2NF
(3)第三范式 若关系模式R属于第二范式,且每个非主属性都不传递依赖于主键,则R属于第三范式。记作 例3.11分解例3.10中的学生关系S1,使其满足3NF的要求 . (1)对于不是候选键的每个决定因子,从关系中删除依赖它的所有属性。得到S11(学号,姓名,性别,系名)。 (2)新建一个关系,该关系中包含原关系中不是候选键的决定因子以及所有依赖该决定因子的属性,并将决定因子作为该关系的主键。新建的关系为S12(系名,系主任),主键为(系名)。
(4)BC范式 设有关系模式R属于第一范式,F是的函数依赖集,若F中的每个非平凡函数依赖 ,都含有主键,则称R是Boyce-Codd范式,记作 或若R中每个决定因素都是候选关键字,则R是BC范式 • 例3.12设有关系模式Add(S,C,Z),其中S表示街道名,C表示城市名,Z表示邮政编码。根据语义,Add的函数依赖集 ,(S,C)是主键。 • 由于Z不是候选关键字,而它又是决定因素,所以Add不满足BC范式
第四节 逻辑结构设计的任务 一、E-R模型向关系模型的转换 二、关系模型的优化 三、设计用户子模式
一、E-R模型向关系模型的转换 1. 实体的转换 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。 2. 联系的转换 (1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端实体所对应的关系模式合并。 (2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端实体所对应的关系模式合并。 (3)一个m:n联系要转换为一个独立的关系模式
练习:图3-10所示的E-R图至少要转换成多少个关系模式?写出各关系模式练习:图3-10所示的E-R图至少要转换成多少个关系模式?写出各关系模式
3. 转换中应注意的问题 (1)命名和属性域的处理 (2)非原子属性的处理 (3)弱实体的处理。
二、关系模型的优化 1. 实施规范化处理 2. 模式评价 (1)功能评价。 (2)性能评价。 3. 模式改进 (1)合并。 (2)分解(水平分解和垂直分解)。垂直分解要保持无损连接和函数依赖。
三、设计用户子模式 (1)使用更符合用户习惯的别名。 (2)针对不同级别的用户定义不同的外模式,以满足系统安全性的要求。 (3)简化用户对系统的使用。
第五节 数据库的物理结构设计 一、确定数据库的物理结构 二、评价物理结构
一、确定数据库的物理结构 1. 存储记录结构的设计 2. 存取方法的设计(聚簇、索引) 3. 数据存储位置的设计 4.系统配置的设计
二、评价物理结构 (1)查询和响应时间 (2)更新事务的开销。 (3)生成报告的开销。 (4)主存储空间的开销。 (5)辅助存储空间的开销。
复习思考题 1、3、5、7、8