关系数据库的模式设计
- 格式:docx
- 大小:53.07 KB
- 文档页数:6
现有图书管理数据库的三个关系模式现有图书管理数据库的三个关系模式:图书(总编号,分类号,书名,作者,出版单位,单价) 读者(借书证号,单位,姓名,性别,职称,地址) 借阅(借书证号,总编号,借书日期)1、创建“图书管理”数据库;Create database图书管理2、创建“图书”、“读者”和“借阅”三个基本表(保证三个表的实体完整性、参照完整性及用户定义的完整性,各完整性根据实际情况自行定义,越全面越好,要求至少实现一个CHECK约束的定义);Create table图书(总编号 char(10) primary key not null;分类号 char(10);书名 char(20);作者 char(10);出版单位 char(20);单价 char(10))Create table读者(借书证号 char(10) primary key not null;单位 char(10);姓名 char(10);性别 char(10);职称 char(10);地址 char(20))Create table借阅(借书证号char(10) not null; 总编号char(10) not null;借书日期 datetimePrimary key(借书证号,总编号)Foreign key(借书证号) peferences 读者(借书证号)Foreign key(总编号) peferences 图书(总编号)3、使用SQL语句完成如下查询:(1)求出各个出版社图书的最高价格、最低价格和册数。
SELECT出版单位,MAX(单价),MIN(单价),COUNT(*) FROM 图书GROUP BY 出版单位(2)找出姓李的读者所借图书的所有图书的书名及借书日期。
select 书名,姓名,借书日期from 借阅,图书,读者where 借阅.借书证号=读者.借书证号 and 图书.总编号=借阅.总编号 and 读者.姓名 like '李%'(3)找出与赵正义在同一天借书的读者姓名、所在单位及借书日期。
数据库——数据库设计E-R图向关系模型的转换1、将下列物资管理E-R图转换为关系模式:转换原则⒈ ⼀个实体型转换为⼀个关系模式。
关系的属性:实体型的属性关系的码:实体型的码⒉ ⼀个m:n联系转换为⼀个关系模式(初步,以后可能调整)。
关系的属性:与该联系相连的各实体的码以及联系本⾝的属性关系的码:各实体型码的组合⒊ 1:n联系---与n端对应的关系模式合并在n端关系中加⼊1端关系的码和联系本⾝的属性⒋ ⼀个1:1联系,可以与任意⼀端对应的关系模式合并。
⒌ 3个或3个以上实体间的⼀个多元联系转换为⼀个关系模式。
关系的属性:与该多元联系相连的各实体的码以及联系本⾝的属性关系的码:各实体码的组合供应(供应商号,项⽬号,零件号,供应量)⒍ 同⼀实体集的实体间的联系,即⾃联系,也可按上述1:1、1:n和m:n三种情况分别处理。
⒎ 具有相同码的关系模式可合并。
⽬的:减少系统中的关系个数1.⼀个实体型转换为⼀个关系模式:供应商(供应商号,姓名,地址,电话号,账号)2.⼀个实体型转换为⼀个关系模式:项⽬(项⽬号,预算,开⼯⽇期)3.⼀个实体型转换为⼀个关系模式:零件(零件号,名称,规格,单价,描述)4. 3个或3个以上实体间的⼀个多元联系转换为⼀个关系模式。
供应(供应商号,项⽬号,零件号,供应量)5.⼀个实体型转换为⼀个关系模式:仓库(仓库号,⾯积,电话号)6. ⼀个实体型转换为⼀个关系模式。
1:n联系---与n端对应的关系模式合并。
(1:n⼯作联系)同⼀实体集的实体间的联系,即⾃联系,也可按上述1:1、1:n和m:n三种情况分别处理。
(职⼯与领导职⼯的⾃联系)职⼯(职⼯号,姓名,年龄,职称,仓库号,领导职⼯号)7. ⼀个m:n联系转换为⼀个关系模式。
库存(仓库号,零件号,库存量)2019/6/19更新后天考试,这⾥再给出两道课本样题1.学校中有若⼲系,每个系有若⼲班级和教研室,每个教研室有若⼲教员,其中有的教授和副教授每⼈各带若⼲研究⽣; 每个班有若⼲学⽣, 每个学⽣选修若⼲课程, 每门课可由若⼲学⽣选修。
自考04735数据库原理及应用关系模式设计理论要求、目标:了解关系数据库规范化理论及其在数据库设计中的作用,重点是函数依赖和范式,要求掌握这些概念并能运用它们来进行模式分解。
一、关系模式的设计准则1.数据冗余:同一个数据在系统中多次重复出现。
2.关系模式设计不当引起的异常问题:数据冗余、操作异常(包括修改异常、插入异常和删除异常)3.关系模式的非形式化设计准则1)关系模式的设计应尽可能只包含有直接联系的属性,不要包含有间接联系的属性。
也就是,每个关系模式应只对应于一个实体类型或一个联系类型。
2)关系模式的设计应尽可能使得相应关系中不出现插入异常、删除和修改等操作异常现象。
3)关系模式的设计应尽可能使得相应关系中避免放置经常为空值的属性。
4)关系模式的设计应尽可能使得关系的等值连接在主键和外键的属性上进行,并且保证以后不会生成额外的元组。
4.习惯使用的一些符号:1)英文字母表首部的大写字母“A,B,C,…”表示单个的属性。
2)英文字母表尾部的大写字母“…,U,V,W,X,Y,Z”表示属性集。
3)大写字母R表示关系模式,小写字母r表示其关系。
4)关系模式的简化表示方法:R(A,B,C,…)或R(ABC…)5)属性集X和Y的并集简写为XY。
二、函数依赖1.函数依赖(FD)的定义:设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形成X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X→Y在关系模式R(U)中成立。
说明:1)t[X]表示元组t在属性集X上的值,其余类同。
2)X→Y读作“X函数决定Y”或“Y函数依赖于X”。
3)FD是对关系模式R的一切可能的关系r定义的。
对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即有一个X值就有一个Y值与之对应,或者说Y值由X值决定。
例:设关系模式R(ABCD),在R的关系中,属性值间有这样的联系:A值与B值有一对多联系;C值与D值之间有一对一联系。
数据库中的三种关系模式数据库是一种用于存储和管理数据的软件。
数据库中的关系模式定义了数据在数据库中的组织方式。
数据库中的三种关系模式分别是关系型、层次型和网状型。
1. 关系型模式关系型数据库最为常见,它是基于表格的模式。
每一个表格代表着一个实体,每一行代表着一个实例。
关系型数据库在存储数据时将数据分解为多个表格,并利用多个表格之间的关系保证数据的完整性和一致性。
关系型数据库的特点:(1)表格之间存在明确的关系,比如一对多、多对多。
(2)表格中存储的数据具有一定的关联性。
(3)表格中每一列的数据类型都是预定义好的,保证了数据的一致性。
(4)数据在表格中以行的形式存储,方便进行查询、更新、插入和删除操作。
(5)可以通过使用SQL语言来查询和操作关系型数据库。
2. 层次型模式层次型模式中的数据是以树状结构来组织的,一个节点可以有多个子节点,但只能有一个父节点。
这种模式适合存储有层次关系的数据,比如组织机构、文件系统等。
层次型数据库的特点:(1)数据以树状结构来组织,父节点和子节点之间存在明确的层次关系。
(2)在查询子节点时,需要沿数组逐级向下查询,比较麻烦。
(3)不适合存储数据之间存在多对多关系的数据。
(4)层次型数据库由于数据的层次性使得它适合存储树状数据结构。
3. 网状型模式网状型模式中的数据是以网络结构来组织的。
一个节点可以有多个父节点和多个子节点,这种模式适合存储数据之间存在复杂的关系,比如生物介绍中的食物链、人员之间的关系等。
网状型数据库的特点:(1)数据之间的关系非常复杂,可以用网状结构来建模。
(2)节点之间没有严格的层次关系,查询起来比较方便。
(3)数据的完整性和一致性需要人工进行维护。
(4)网状型数据库管理系统性能好,但不够普及。
总结数据库中的三种关系模式各有特点,适合存储不同类型的数据。
关系型模式以表格为基础,并在表格之间建立明确的关系,适合存储数据之间有一定关联的数据。
层次型模式以树状结构为基础,适合存储树状数据结构。
数据库设计中的关系模型数据库设计是现代信息技术的重要组成部分,它是数据管理领域的核心内容之一。
关系模型作为数据库中最为基础的一种结构模型,也是数据库设计的核心和基石之一。
本文将结合实例进行阐述,详细介绍数据库设计中的关系模型以及其相关内容。
一、关系模型的定义和特点关系模型是一种用于数据库设计的模型,它采用了表格的形式来存储数据,并且采用了关系代数的思想来操作数据。
相对于其他数据结构模型,比如层次模型和网状模型,它具有以下几个特点:1、关系模型采用表格的形式来表示数据,可以更好的表达数据之间的关系,容易理解和操作。
2、关系模型的数据结构简单,易于实现和维护。
3、关系模型支持事务的一致性和复原,保证了数据的可靠性和安全性。
二、关系模型中的主键和外键在关系模型中,每张表都有一个主键,它用于唯一的标识表中的每一行数据。
主键是一种特殊的列,其中的值必须是唯一的,并且不能为空值。
使用主键可以更加方便地对数据进行查询和更新操作。
除了主键之外,关系模型还有外键这一概念。
外键是一种用于连接表格之间关系的机制,它实际上是另外一张表的主键。
例如,在一个订单表中,每一个订单都对应一个客户,订单表中就可以定义一个外键,来连接客户表中的主键。
这样,就可以通过订单表中的这个外键,来查询对应的客户信息。
三、关系模型中的范式在关系模型中,范式是指一种设计规范,它要求在一个表格中,每一个属性都应该只依赖于主键。
关系模型定义了一系列范式,包括1NF、2NF、3NF、BCNF等等。
其中,1NF是最为基础的范式,它要求表格中的每一个属性都是原子的,不可再分。
2NF要求表格中的每一个非主键属性都完全依赖于主键。
3NF要求表格中的每一个非主键属性都不依赖于其他非主键属性。
BCNF则要求表格中每一个函数依赖都满足一定的条件。
使用范式可以有效的减少数据冗余和不一致性,提高数据存储的效率和安全性。
四、关系模型中的重要性质在关系模型中,有两个重要的性质:ACID和CAP。
关系数据库的设计步骤
1、用户需求分析:首先需要了解客户所需要的数据库的应用背景,
包括存储的数据的功能,以及数据库所需要进行的各项功能和运算,分析
它们之间的联系及关系,从而明确出用户需求,为后续数据库设计提供依据。
2、确定逻辑模型:根据用户需求,选择合适的ER模型,确定实体和
实体与实体之间的关联关系,以及实体的属性,形成逻辑模型,此逻辑模
型是数据库设计的核心步骤。
3、确定数据字典:确定数据字典,定义每一个属性的属性名称、属
性类型以及键的类型,确定每一个实体的主键,并且定义属性及其属性之
间的关系,以及各表之间的关联关系。
4、确定完整性约束:确定完整性约束,包括主键约束、外键约束、
参照完整性等,以及实体与实体之间可能存在的业务约束,确保数据库中
数据的准确性、完整性、可靠性。
5、设计物理结构:将建立的逻辑模型转换为物理模型,针对不同的
数据库管理系统,利用数据库设计工具建立出恰当的索引、表等物理结构,使之能够被系统所识别并支持。
关系模式的格式关系模式是数据库中的一个重要概念,它描述了实体之间的关系。
在关系模式中,实体和关系被定义为两个或多个表格或行和列。
关系模式可以帮助我们描述世界的复杂关系,从而使数据库的设计和维护更加容易。
本文将介绍关系模式的格式。
关系模式由三个部分组成:实体、属性和关系。
其中,实体描述了现实世界中的一种对象或概念,属性和关系描述了实体之间的关系。
实体是关系模式中的第一个组成部分。
它描述了一个具体的对象或概念,具有唯一的名称和定义。
在关系模式中,实体通常用大写字母表示,例如“Customer”。
属性是关系模式中的第二个组成部分。
它描述了实体的特征或属性,可以是数据类型、长度、约束条件等等。
例如,“Customer”实体可以有许多属性,如“CustomerID”、“FirstName”、“LastName”、“Email”等。
关系是关系模式中的第三个组成部分。
它描述了实体之间的关系。
在关系模式中,关系通常用括号表示,例如“{Customer,Order}”。
关系模式还可以包含其他元素,如索引、约束条件和数据类型说明。
索引是一种特殊的关系,用于加速查询。
约束条件用于定义实体的约束条件,例如唯一约束、主键约束和外键约束等。
数据类型说明用于定义实体的数据类型和长度。
关系模式的格式对于数据库的设计和维护至关重要。
它可以帮助我们描述复杂的关系,使我们的数据更加结构化和可维护。
当我们需要修改关系模式时,我们应该先备份原始数据,然后将修改后的关系模式与原始数据进行比较,最后将修改后的关系模式应用于数据库中。
关系模式的格式对于数据库的设计和维护至关重要。
它可以帮助我们描述复杂的关系,使我们的数据更加结构化和可维护。
多个实体间关系关系模式关系模式是数据库中的一种数据结构,它定义了实体之间的关系以及这些关系的属性。
在数据库设计中,关系模式起着非常重要的作用,可以帮助我们更好地理解实体之间的联系和属性的关系。
在一个关系模式中,通常会涉及多个实体,并且这些实体之间会有不同的关系。
下面将以几个具体的关系模式为例,分别介绍多个实体间的关系。
1. 学生-课程关系模式在一个学生-课程关系模式中,学生和课程是两个主要的实体。
学生和课程之间的关系可以表示为一个学生可以选择多门课程,而一门课程可以被多个学生选择。
此外,这个关系模式还可以包含学生和课程的属性,例如学生的学号、姓名和年龄,课程的编号、名称和学分等。
2. 商品-订单-客户关系模式在一个商品-订单-客户关系模式中,商品、订单和客户是三个主要的实体。
商品和订单之间的关系可以表示为一个订单包含多个商品,而一个商品可以属于多个订单。
订单和客户之间的关系可以表示为一个客户可以下多个订单,而一个订单只能属于一个客户。
此外,这个关系模式还可以包含商品、订单和客户的属性,例如商品的名称、价格和库存,订单的编号、日期和总金额,客户的姓名、地址和联系方式等。
3. 员工-部门-项目关系模式在一个员工-部门-项目关系模式中,员工、部门和项目是三个主要的实体。
员工和部门之间的关系可以表示为一个员工属于一个部门,而一个部门包含多个员工。
部门和项目之间的关系可以表示为一个项目属于一个部门,而一个部门可以负责多个项目。
此外,这个关系模式还可以包含员工、部门和项目的属性,例如员工的姓名、工号和职位,部门的名称、编号和所在地,项目的名称、编号和开始日期等。
通过以上几个关系模式的介绍,我们可以看到多个实体间关系的模式可以非常复杂,涉及到不同的实体和关系属性。
在数据库设计中,合理地定义实体间的关系模式可以帮助我们更好地管理数据,并进行高效的数据查询和分析。
同时,合理地设计关系模式还可以提高数据的一致性和完整性,避免数据冗余和错误。
数据库工程师复习重点:关系数据库逻辑设计关系数据库逻辑设计5.1 概述5.2 基本概念5.2.1 关系模型1、关系模型采用一个二维表格在计算机中组织、存储、处理和管理数据。
(1) 关系名(数据库名):由字母数字组成;(2) 属性名;(3) 关系模式和关系:描述模式描述关系的静态结构,由模式名、关系模式所包含的属性及属性值所满足的条件组成模式定义。
(4) 元组:描述关系中的行;(5) 域:它定义关系的每个属性取值的类型;(6) 主码:能够惟一标识关系中每一个元组的属性或属性组;(7) 关系的数学定义:关系模式是建立在集合集论的基础上的,用数学的概念定义关系有;(A) 定义一:域是值的集合,同一个域中的值具有相同的数据类型;(B) 定义二:(C) 定义三:(D) 当关系引用了属性名后关系具有以下属性:[1] 不能有重复的元组;[2] 元组上下无序;[3] 按属性名引用时属性左右无序;[4] 所有属性值都是原子项(不可再分);(8) 总结:关系是一张二维表,表中的一行被称为一个元组,一列称为属性,由一组域值组成。
关系是元组的集合,关系中的每个元组在数学上被定义为这个关系所涉及的全部域值中笛卡儿积的一个元素。
5.2.2 关系数据库1、关系数据库是按照二维表组织和存储的相互关联的关系的集合,关系数据库模式是关系模式的集合;5.2.3 关系的完整性1、关系的完整性(完整性约束):是对关系的某种约束规则和关系满足的定义。
通常这组约束规则用来限定和检查数据库所含实例的合法性和正确性;2、完整性约束分静态和动态两种,静态完整性约束是基于关系模式的,主要有主码、外码约束和域约束组成;动态完整性约束是基于企业的业务规则的。
3、静态完整性约束规则:(1) 主码约束:主码必须满足:(A) 惟一性:在一个关系中不存在两个元组,它们具有相同的主码值;(B) 最小性:不存在从组成主码的属性集中去掉一个属性,还仍能保持数据的惟一性;(2) 外码约束:(3) 用户定义的完整性:5.3 关系数据库设计理论5.3.1 问题的提出究竟一个关系数据库包含哪些属性是合理的,如何评价一个关系模式设计的优劣?5.3.2 函数依赖函数依理论利用一个关系中属性之间的依赖关系评价和优化关系模式,以保证存储到数据库中的关系具有较好特性;1、函数依赖:(1) 设R(U)为一关系模式,X和Y为属性全集U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数决定Y”或“Y函数依赖于X”,并记作X Y,其中X称为决定因素,因为根据函数依赖定义,给定一个X,就能惟一决定一个Y。
1 关系数据库的模式设计 本章的理论性较强,学习时有无从下手的感觉,在学习时应多加思考,从概念出发去理解理论,前后的理论有较强的联系,因此要逐个理解,但对于理论的证明等内容则不必深究,本章重点是函数依赖,无损联接、保持依赖和范式的概念。
一、关系模式的设计问题( 识记 ) 关系数据库 是以关系模型为基础的数据库,它利用关系来描述现实世界。一个关系既可以用来描述一个实体及其属性 ,也可以用来描述实体间的联系。关系实质上就是一张二维表 ,表的 行称为元组 ,列称为属性 .
关系模式是用来定义关系的,这里的关系模式我们可以简单地理解为一个表的结构,一个关系数据库包含一组关系,也就是包含一组二维表,这些二维表结构体的集合就构成数据库的模式(也可以理解为数据库的结构)。
关系数据库 设计理论包括三个方面内容: 数据依赖 、范式 、模式设计方法。核心内容是数据依赖。
泛关系模式 :把现实问题的所有属性组成一个关系模式R(U),这个关系模式就称为泛关系模式。
数据库模式 :把泛关系模式用一组关系模式的集合ρ来表示时,这个ρ就是数据库模式。
下面我们总结一下关系模式的相关内容从“大”到“小”的排列 泛关系模式→数据库模式→关系数据库→表结构→关系模式实例(表)→记录(行、列。) 关系模式的存储异常: 数据冗余 、更 新异常 、 插入异常和删除异常 二、函数依赖(FD) 1、函数依赖的定义 ( 领会 ):设有关系模式R(A1,A2,„„An)或简记为R(U),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y.X→Y为模式R的一个函数依赖。
这个定义可以这样理解 :有一张设计好的二维表,X,Y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,这就是说Y函数依赖于X.
2、函数依赖的逻辑蕴涵 ( 识记 ) 设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从F中的函数依赖能够推出X→Y,则称F逻辑蕴涵X→Y,记为F|=X→Y. 2
而函数依赖的闭包F + 是指被F逻辑蕴涵的函数依赖的全体构成的集合。 3、键和FD的关系 ( 领会 ) 键是唯一标识实体的属性集。对于键和函数依赖的关系:有两个条件:设关系模式R(A1,A2„„An),F是R上的函数依赖集,X是R的一个子集,
(1)X→A1A2„„An∈F + (它的意思是X能够决定唯一的一个元组) (2)不存在X的真子集Y,使得Y也能决定唯一的一个元组,则X就是R的一个候选键。(它的意思是X能决定唯一的一个元组但又没有多余的属性集)
包含在任何一个候选键中的属性称为主属性 ,不包含在任何键中的属性为非主属性(非键属性),注意主属性应当包含在候选键中。
4、函数依赖(FD)的推理规则 ( 简单应用 ) 前面我们举的例子中是以实际经验来确定一个函数依赖的逻辑蕴涵,但是我们需要一个推理规则才能完全确定F或F+的所有函数依赖。
设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下:
自反律 :如果Y X U,则X→Y在R上成立。 增广律 :如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。(XZ表示X∪Z,下同) 传递律 :如果X→Y和Y→Z在R上成立,则X→Z在R上成立。 合并律 :如果X→Y和X→Z成立,那么X→YZ成立。 伪传递律 :如果X→Y和WY→Z成立,那么WX→Z成立。 分解律 :如果X→Y和Z Y成立,那么X→Z成立。 5、函数依赖推理规则的完备性 ( 识记 ) 函数依赖推理规则系统(自反律、增广律和传递律)是完备的。由推理规则的完备性可得到两个重要结论:
属性集X + 中的每个属性A,都有X→A被F逻辑蕴涵,即X + 是所有由F逻辑蕴含X→A的属性A的集合。
F + 是所有利用Amstrong推理规则从F导出的函数依赖的集合 6、函数依赖集的等价和覆盖 ( 识记) 3
在关系模式R(U)上的两个函数依赖集F和G,如果 满足F + =G + ,则称F和G是 等价 的,称F和G等价也称F 覆盖 G或G覆盖F.
每个函数依赖集F都可以被一个 右部只有单属性的函数依赖集 G所覆盖。 如果函数依赖集合F满足: (1)F中每一个函数依赖的右部都是单属性; (2)F中的任一函数依赖X→A,其F-{X→A}是不等价的; (3)F中的任一函数依赖X→A,Z为X的子集。(F-{X→A})∪{Z→A}与F不等价。 则称F为最小函数依赖集合。 如果函数依赖集F和G等价,并且G是最小集,那么称G是F的一个 最小覆盖 . 这一段并不要求掌握最小集的求法,但是应当通过其求法理解最小集的概念 . 三、关系模式的分解特性 1、 模式分解中存在的问题 :( 识记 ) 模式分解 就是将一个泛关系模式 R分解成 数据库模式ρ ,以ρ代替R的过程。它不仅仅是属性集合的分解,它是对关系模式上的函数依赖集、以及关系模式的当前值分解的具体表现。
分解一个模式有很多方法,但是有的分解会出现失去函数依赖、或出现插入、删除异常等情况,而有的分解则不出现相关问题。
衡量一个分解的标准有三种: 分解具有无损联接 ; 分解要保持函数依赖 ;分解 既要保持依赖,又要具有无损联接 .
那么什么是无损联接呢?什么又是保持依赖? 2、 无损联接的定义和性质 ( 识记 ) 设R是一关系模式,分解成ρ={R1,R2,„„,Rk},F是R上的一个函数依赖集。无损联接就是指R中每一个满足F的关系r(也就是一个关系实例)都有r=π R1 (r)|X|π R2 (r)„„|X|π R3 (r),即r为它在Ri上的投影的自然联接。
最简单的理解, 也就是说,分解后的关系 自然连接后 完全等于 分解前的 关系,则这个分解相对于F是无损联接分解。
设R的分解为ρ={R1,R2},F为R所满足的函数依赖集,则分解ρ具有无损联接性的 充分必要条件 是: 4
R1∩R2→(R1-R2) R1∩R2→(R2-R1) 也就是说,分解后的两个模式的交能决定这两个模式的差集,即R1、R2的公共属性能够函数决定R1或R2中的其他属性 ,这样的分解就必定是无损联接分解 .
3、 保持函数依赖的分解 ( 识记 ) 在分解过程中,要求模式分解的无损联接是必要的,只有无损联接分解才能保证任何一个关系能由它的那些投影进行自然联接得到恢复。
同时,分解关系模式时还应保证关系模式的函数依赖集在分解后仍在数据库模式中保持不变,这就是保持函数依赖的问题。也就是所有分解出的模式所满足的函数依赖的全体应当等价于原模式的函数依赖集。只有这样才能确保整个数据库中数据的语义完整性不受破坏。
四、关系模式的范式( 领会 ) 1、1NF、2NF、3NF、BCNF的定义: 1NF:第一范式 . 即关系模式中的属性的 值域 中 每一个值 都是 不可再分解 的值。如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。
2NF:第二范式 . 如果关系模式R为 第一范式 ,并且R中每一个 非主属性 完全函数依赖于 R的某个候选键,则称为 第二范式模式 .
在这里要先了解“非主属性”、“完全函数依赖”、“候选键”这三个名词的含义。 候选键 就是指可以唯一决定关系模式R中某元组值且不含有多余属性的属性集。 非主属性 也就是非键属性,指关系模式R中不包含在任何建中的属性。 设有函数依赖W→A,若存在X W,有X→A成立,那么称W→A是局部依赖,否则就称W→A是 完全函数依赖 .
在分析是否为第2范式时,应 首先确定 候选键 ,然后把关系模式中的非主属性与键的依赖关系进行考察,是否都为完全函数依赖,如是,则此关系模式为2NF.如果数据库模式中每个关系模式都是2NF的,则此数据库模式属于2NF的数据库模式。
3NF:第三范式 . 5
如果关系模式R是 第二范式 ,且 每 个 非主属性 都 不 传递依赖 于R的 候选键 ,则称R为第三范式的模式。
这里首先要了解 传递依赖 的含义: 在关系模式中,如果Y→X,X→A,且X不决定Y和A不属于X,那么Y→A是传递依赖。
注意的是,这里要求非主属性都不传递依赖于候选键。 BCNF :这个范式和第三范式有联系,它是3NF的改进形式。若关系模式R是 第一范式 ,且 每个属性 都 不 传递依赖于R的候选键。这种关系模式就是BCNF模式。
纵观四种范式,可以发现它们之间存在如下关系:
5、 分解成BCNF模式集的算法( 识记 ) 对于任一关系模式,可找到一个分解达到3NF,且具有无损联接和保持函数依赖性。而对于BCNF分解,则可以保证无损联接但不一定能保证保持函数依赖集。
无损联接分解成BCNF模式集的算法: (1)置初值ρ={R}; (2)如果ρ中所有关系模式都是BCNF,则转(4); (3)如果ρ中有一个关系模式S不是BCNF,则S中必能找到一个函数依赖集X→A有X不是S的键,且A不属于X,设S 1 =XA,S 2 =S-A,用分解S 1 ,S 2 代替S,转(2);
(4)分解结束。输出ρ。 在这个过程中, 重点在于(3)步 ,判断哪个关系不是BCNF,并找到X和A.这里,S的判断用BCNF的定义,而X不是S的键则依靠分析。
6、 分解成3NF模式集( 识记 )