1. 数据库系统概论
1.1 数据库与数据管理
1.1.1 数据库的基本概念
-
数据与信息:数据是信息的载体,信息是数据的内涵。数据是信息的符号表示,而信息通过数据描述,有时数据的语义解释。
-
数据库(DB):按照一定结构组织并长期储存在计算机内的、可共享的大量数据的有机集合。
-
数据库管理系统(DBMS):由DB、DBMS、DBA、应用程序组成的存储,管理,处理和维护数据的系统。
-
数据库系统(DBS):由DB、DBMS、软件平台与硬件支撑环境以及各类人员。
-
信息系统:由计算机硬件,网络和通信设备,计算机软件、信息资源、信息用户等做成的以处理信息流为目的的人机一体化系统。5个基本功能:输入、储存、处理、输出、控制。
1.1.2 数据库管理技术的发展
人工管理阶段是计算机数据管理的初级阶段。
-
人工管理阶段
-
-
问题:
-
数据不能长期保存:当时计算机主要用于科学计算,数据量少、不能保存。
-
数据不能共享,冗余多:数据面向应用,多个应用涉及的数据相同时,由于用户各自定义自己的数据,无法共享,因此存在大量的数据冗余。
-
数据独立性差:没有专门的软件对数据进行管理,程序员在设计程序时不仅要规定数据的逻辑结构,而且还要设计其物理结构,这样使得程序与数据相互依赖、密切相关(即数据独立性差),一旦数据的存储地址、存储方式稍有改变,就必须修改相应的程序。
-
-
-
文件系统管理阶段
-
改进:
-
数据可以长期存储:计算机不仅用于科学计算,而且大量用于数据管理,因此出现磁盘等大容量存储设备。
-
-
问题:
-
逻辑独立性差(但是物理独立性好):文件的逻辑结构和物理结构分开,一旦数据的逻辑结构改变,必须修改文件结构的定义,修改应用程序。
-
数据冗余度较大:文件是为某一特定应用服务,文件之间相对独立。
-
文件应用编程复杂
-
-
-
数据库系统管理阶段
-
-
优点:
-
共享型好:将所有应用程序中使用的数据汇集起来,按照一定结构组织集成,在DBMS软件的统一监督和管理下使用,使得多用户多应用充分共享。
-
冗余度小:数据之间共享,不会有太多重复数据出现。
-
逻辑独立性和物理独立性好:按照一定结构组织集成,DBMS统一监督管理。
-
-
-
-
改进:
-
数据管理规模日趋增大,数据量激增,数据库管理系统出现,关系数据库理论被提出。
-
-
总结:
1.2 数据模型与信息模型
1.2.1 三个世界以及联系
为了将现实世界错综复杂联系的事物最后能以计算机所理解和表现的形式反映到数据库中,形成了由现实世界
到信息世界
再到机器世界
一个逐步转化的过程,一共3个阶段。将现实世界存在的客观事物及其联系,经过人们大脑的认识、分析和抽象,最后用物理符号、图形等表示出来,得到信息世界的信息,最后将信息世界的信息进一步描述成计算机所能接受的形式。
联系如图:
-
现实世界:真实客观存在的世界。
-
信息世界:
-
实体:将客观世界的事物抽象加工成信息世界的实体。(例如学生,课程,公司等)
-
属性:实体某些方面的特性。(例如学生的学号、姓名、性别等)
-
属性分类
-
简单属性与复合属性:简单属性不可再分,例如性别,年龄;复合属性可以再分,例如地址可以再分为省,市,县等。
-
单值属性和多值属性:单值属性只有一个值,例如性别;多值属性可能有多个值,例如一个人可以有多个电话号码。
-
储存属性(也称基本属性、导出属性)和派生属性:储存属性例如学生的成绩;派生属性例如学生的平均成绩。
-
-
-
属性域:属性的取值范围
-
实体键:唯一能标识每个实体的最小属性集。
-
实体型:实体与属性均有“型”和“值”之分。
-
实体集:同类型实体的集合,例如全体学生。
-
-
机器世界:
机器世界对信息进行数据化,得到机器世界的数据,可以被计算机识别、储存并处理。
三个关系世界的关系图:
-
两类模型:
-
信息模型(概念模型):信息世界中对所研究信息需要建立一个抽象的模型,用来反应实体集以及实体集之间的联系。
-
数据模型(数据库模型):从计算机系统的观点来对数据建模。
1.2.2 信息模型的表示
-
实体间的联系:
实体集间的联系分为实体集之间的联系和实体集内部的联系,实体集内部的联系又分为一对一联系、一对多联系和多对多联系。
-
图示:
-
信息模型的表示方法:
信息模型的表示方法有多种,最常用的一种是实体-联系方法,简称E-R法。该方法用E-R图来描述现实世界的信息模型,故又称实体联系模型。E-R图提供了表示
实体集
、属性
和联系
的方法。在E-R图中,事物用实体集表示,事物的特征用属性表示,事物之间的关联用联系表示。实体联系模型是数据库设计的有效工具。E-R图
-
E-R图基本成分
-
实体集(矩形)
-
属性(椭圆)
-
联系(菱形)
-
图示:
-
1.2.3 数据模型的组成
数据模型是描述数据特征及数据之间联系的模型。它是在信息模型的基础上建立的一个适于计算机表示的数据层的模型,是对信息模型进一步数据描述得到的模型。
-
数据模型三要素:
-
数据结构 2.数据操作 3.数据的完整性约束
-
-
数据模型分类:
层次模型
-
结构:树形结构,适合一对多,不适合多对多
-
优缺点:
-
结构简单,查询快(该结构采用树的储存方式,遍历起来速度快,提高查询效率)
-
良好的完整性支持
-
不易多对多(树形结构只支持一对多,一个儿子没法有多个父亲)
-
数据操作限制多,独立性差(对数据进行增删改查必须遵循父子结构约束、一致性约束、数据的型和值必须保持树的结构,使得它适应变化的能力特别差)
-
网状模型
-
结构:无向图结构,一个子节点可以有多个父节点,但是依旧不适合多对多,原因是再进行操作的时候必须先进行转换,将其分解为多个一对多的形式。
-
优缺点:
-
较为直接地描述现实世界
-
存取效率较高
-
结构较复杂,不易使用:进行操作的时候必须遵循父子约束,主从约束等多项规则。
-
数据独立性差
-
关系模型(目前使用最广泛的模型)
关系模型的建立是数据库领域历史发展中最重要的事件。它的实体之间通过表格自然表示,表之间还有型和值用于完整性约束和关联查询的隐式联系
-
结构:若干二维表结构。
-
优缺点:
-
有坚实的理论基础
-
结构简单、易用
-
数据独立性以及安全性好
-
查询效率较低
-
总结:
层次模型使用的是树结构,适用于表示1:n层次的联系;网状结构使用的是图结构,可以间接表示m:n层次的联系。前两者都是通过指针的方式进行联系,使用都较为困难但是效率高,数据操作语言都是过程化语言,没有理论基础。
而关系模型采用的是表结构,便于表示m:n的联系,通过自然联系以及创建联系,使用容易方便但是效率低,操作语言为非过程化及过程化扩展,有坚实的关系理论基础。
1.3 数据库系统结构
1.3.1 三级模式结构
数据库内部的体系结构通常采用3级模式结构,由子模式
模式
内模式
组成。
-
外模式
-
外模式也称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式通常是模式的子集,一个数据库可以有多个外模式。
-
-
模式
-
模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。只有一个。
-
-
内模式
-
内模式也称为存储模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。只有一个
-
-
3级结构示意图
-
二级映像
-
外模式/模式映像
当模式改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使用外模式保存不变。应用程序是依据数据的外模式编写的,从而程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
-
模式/内模式映像
当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
-
1.3.2 数据库系统体系结构
为了满足不同应用的需求,数据库系统外部的体系结构分为单用户式、主从式、客户/服务器式、分布式和并行式结构。
-
单用户结构
又称桌面型数据库系统将应用程序、DBMS和数据库都装在一台计算机上,由一个用户独占使用。适合未联网用户、个人用户等。 DBMS提供较弱的数据库管理和较强的应用程序和界面开发工具,既是数据库管理工具,同时又是数据库应用程序和界面的前端工具
-
主从式结构
是大型主机带多终端的多用户结构的系统,又称主机/终端模式
优点 :结构简单,易于管理、控制与维护。 缺点:当终端数目太多时,主机的任务会过分繁重,成为系统瓶颈。 系统的可靠性依赖主机,当主机出现故障时,整个系统都不能使用。
-
客户/服务器结构
把DBMS的功能与应用程序分开。分为:数据库服务器(简称服务器,Server)、客户机(Client)
优点 :网络运行效率大大提高 缺点 :维护升级很不方便
-
分布式结构 是分布式网络技术与数据库技术相结合的产物。数据库分布存储在计算机网络的不同结点上。
(1)数据在物理上是分布的 (2)所有数据在逻辑上是一个整体 (3)结点上分布存储的数据相对独立
优点:多台服务器并发的处理数据,提高效率 缺点:数据的分布式存储给数据处理任务协调与维护带来困难。
-
并行式结构
用高速网络连接各个数据处理节点,整个网络中的所有结点构成逻辑上统一的整体。
优点:高性能、高可用性、高可扩展性
缺点:实现技术较为复杂
1.3.3数据库系统的组成
-
硬件平台及数据库
由于数据库系统的数据量都很大,加之数据库管理系统丰富的功能使得其自身的规模也很大,因此整个数据库系统对硬件资源提出了较高的要求,这些要求是: (1)要有足够大的内存,存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序。 (2)、有足够大的磁盘或磁盘阵列等设备存放数据库,有足够大的磁带(或光盘)作数据备份。 (3)、要求系统有较高的通道能力,以提高数据传送率。
-
软件
数据库系统的软件主要包括:DBMS、操作系统、语言工具与开发环境、数据库应用软件、数据库。
-
人员
开发、管理和使用数据库系统的人员主要包括数据库管理员、系统分析员和数据库设计人员、应用程序员和最终用户。不同的人员涉及不同的数据抽象级别,具有不同的数据视图。
数据库系统具有数据集成性好、数据共享性高、数据独立性强、数据控制力度大的特点
1.3.4 数据库管理系统
-
DBMS功能:DBMS是数据库系统的核心,其职能是有效地实现数据库3级模式之间的转换,它还承担着数据库的维护及并发操作的协调工作,能够按照数据库管理员所规定的要求,保证数据库的安全性和完整性。主要包括一下六个方面
-
数据定义
-
数据操作
-
数据组织和管理
-
数据库运行管理
-
数据库的建立和维护
-
数据接口
-
-
DBMS的工作过程:
-
用户程序A向DBMS发出命令
-
DBMS分析指令,取出应用程序A对应的子模式,从中找出有关记录的数据库描述,检查A的存储权限,决定是否执行A的命令。
-
决定执行后,DBMS取出对应模式,根据子模式与模式变换的定义,决定为了读取记录需要哪些模式记录类型。
-
DBMS取出内模式,并通过模式与内模式的变换找到这些记录类型的内模式名以及有关数据存放的信息。决定从哪台设备,用什么方式读取哪个物理记录。
-
DBMS根据第4步的结果,向操作系统(OS)发出执行读取记录的命令。
-
OS向记录所在的物理设备发出调页命令,由 DBMS送至系统缓冲区。
-
DBMS根据模式、子模式导出应用程序所要读取的逻辑记录,并将数据从系统缓冲区传送到程序A的用户工作区。
-
DBMS在程序调用的返回点提供成功与否的状态信息。
-
记载工作日志。
-
应用程序检查状态信息,若成功则对工作区中的数据正常处理;若失败则决定下一步如何执行。
-
2. 关系数据库(重点为关系代数)
2.1关系模型
2.1.1 关系模型的特点
-
关系模型使用表结构表示实体集与实体集之间联系的一种模型。它具有以下特点:
-
结构简单,表达能力强。(用关系表示,用户透明度高,易于理解)
-
语言一体化。(数据模式的描述与数据操纵统一语言表示,简化了数据语言,便于使用)
-
非过程化操作。(用户不必了解系统内的数据存取路径,只需要提出怎么做,不需要知道怎么做)
-
坚实的数学基础。(以关系代数为基础,可以用数学方法来表示,为进一步扩展创造了条件)
-
2.1.2 关系数据结构及性质
-
数据结构的定义:
关系模型中,实体集与实体集之间均用关系来表示。二维表中的每一行成为关系的元组,每一列称为关系的属性,列中的元素为该属性的值,称为分量。每个属性对应的值的范围叫做属性的域。
在一个关系中,如果某一属性可以唯一的标识每一个元组,则该属性称为候选键(例如学生表中的学号),也称为键或者候选码。当用关系组织数据时,被选用作为组织该关系及唯一性操作的对象,被选用的候选键称为主键。如果关系R1的属性A1不是R1候选键而是另一关系R2的候选键,则称A1为R1的外键。
-
关系的性质:
(1)列的同质性,既每一列中的分量为同一类型的数据,来自同一个域。 (2)列名唯一性,不同的列可出自同一个域,称其中的每列为一个属性,不同的属性的要给予不同的属性名。 (3)列序无关性,列的顺序无所谓,即列的次序可以任意交换。 (4)元组相异性,任意两个元组不能完全相同。 (5)行序无关性,行的顺序无所谓,即行的次序可以任意交换。 (6)分量原子性,分量必须取原子值,即每一个分量都必须是不可分的数据库。
2.2 关系代数
2.2.1 集合运算
-
关系代数是一种抽象语言,通过对关系的运算来表达查询。可以分为:
-
集合运算(并、交、差、广义笛卡尔积)
-
关系运算(投影、选择、连接、除)
-
扩充的关系运算(广义投影、外连接、半连接、聚集等)
-
-
并:R∪S={t|t∈R∨t∈S}
-
差:R-S={t|t∈R∧t∉S}
-
交:R∩S={t|t∈R∧t∈S} R∩S=R-(R-S)
2.2.2 关系运算(此处省略公式以及案例)
-
关系运算分为:
-
选择σ(行操作)
-
投影Π(列操作)
-
连接(表操作):分为等值连接和自然连接。
-
除(表操作)
-
5 数据库设计
5.1数据库设计概述
-
数据库设计是指对于一个给定的应用环境,构造(设计)最优的数据模型,然后据此建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。数据库设计的优劣将直接影响信息系统的质量和运行效果。
5.1.1 数据库设计的特点和方法
-
数据库设计的特点:
(1)数据库建设是硬件、软件和干件(技术与管理的界面)的结合。
(2)结构/数据设计和行为/处理设计的结合。
-
结构特性设计:
数据库总体概念与结构的设计,使得其具有最小数据冗余,能反映不同用户数据要求,满足数据共享。
-
行为特性设计:
数据库用户的业务活动可以通过应用程序去实现。
-
数据库设计的目标:
-
满足应用要求:符合用户提出的数据要求和处理要求,按照软件工程的原理和方法进行设计
-
模拟精确程度高:能够更好地反映客观实际。
-
良好的数据库性能:有较好的存取效率和储存效率,容易修改、移植和扩充。
-
-
数据库设计方法:
-
数据库设计方法按照自动化程度分为4类:手工的、设计指南或规则指导的、计算机辅助的、自动设计的。
5.1.2 数据库设计阶段及内容
按照数据库生存期的设计方法,考虑到数据库及其应用系统的开发过程,数据库设计分为6个步骤:
-
需求分析:收集并分析用户的信息及应用处理的要求,按照一定的格式形成需求说明书。
-
概念结构设计:对用户的需求进行综合、归纳和抽象,形成E-R图。
-
逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型(如关系模型),并进行优化。
-
物理结构设计:为逻辑数据选用一个物理结构。
-
数据库实施:运用DBMS建数据库,进行编制与调试应用程序,组织数据入库。
-
数据库的运行和维护:在数据库正式投入运行以后不断的对其进行评价、调整与修改。
数据库设计内容与方式表:
5.2 需求分析
-
需求芬妮是整个数据库设计的基础
5.2.1&5.2.2 需求分析的任务以及方法
-
任务:
-
需求分析期间需要明确好用户的各种需求,确定任务目标和功能。
-
调查的重点为:
-
信息要求:用户对数据库的要求,保存哪些数据,获取哪些数据等。
-
处理需求:用户需要对数据进行何种处理,各种数据使用频率,查询方式等。
-
功能需求:信息系统需要有哪些功能。
-
企业环境特征:企业的规模与结构、部门的地理分布、数据库的安全性等。
-
-
方法:
首先调查好组织机构情况,了解部门组成与各部门职能,调查各部门的业务活动(包括各部门的输入和数据的使用,信息的输出),协助用户明确新系统的各种要求(包括信息要求、处理要求、完整性与完全性),确定新系统的哪些功能让计算机完成,那些人工完成。
-
常用调查方法:
-
检查文档:通过查阅原有系统或者实际工作文档、了解用户为什么要建立数据库应用系统。
-
跟班作业:通过亲自参加业务工作了解业务活动。
-
面谈调研:通过与用户座谈来了解业务活动情况及用户需求。
-
网上搜集:网上搜集资料、案例、进行调查问卷。
-
5.2.3 需求分析的工具
-
数据流图(DFD)
-
椭圆表示一个处理
-
矩形表示一个输入源点或输出汇点
-
箭头表示一个数据流
-
横线之间的文字描述一个数据储存
-
-
DBMS的数据字典
-
数据字典的作用:
-
为了让DBMS可以管理大量的、共享的、持久的数据,对数据库中数据实行进行集中控制,数据字典要储存各种对象的描述信息,储存系统管理所需的各种对象细节信息。
-
-
数据字典的内容:
-
数据库系统所有对象及其属性的描述信息。
-
数据库系统对象之间关系的描述信息。
-
登记所有对象、属性的自然语言含义。
-
记录数据字典变化的历史。
-
-
3.应用系统的数据字典
-
数据字典共有5部分:数据项、数据结构、数据流、数据储存、处理过程。(案例略)
5.3 概念结构设计
-
将需求分析得到的用户需求抽象为信息模型的过程就是概念结构设计。
在进行数据库设计时,通常是将现实世界中的客观对象首先抽象为不依赖任何DBMS和具体机器的信息模型,然后再把信息模型转换成具体机器上DBMS支持的数据模型。故信息模型可以看成是现实世界到机器世界的一个过渡的中间层次。信息模型最常见的是用E-R图表示的模型(也称E-R模型)。
-
信息模型特点:
-
能真实的反映现实世界中事物及其之间的联系,有丰富的语义表达能力。
-
易于交流和理解,便于数据库设计人员和用户之间沟通。
-
易于改进,当需求改变时,容易对信息模型修改和扩充。
-
易于向关系、网状、层次等各种数据模型转换。
-
5.3.1 概念结构设计的方法
自顶向下:首先定义全局概念结构框架,然后逐步细化。
自底向上:首先定义各局部应用的概念结构,然后集成起来得到全局概念结构。
逐步扩张:首先定义最核心的概念结构,然后向外扩充。
混合策略:自底向上和自顶向下结合。
5.3.2 E-R图及其扩展描述
设计E-R图首先要对实际的人、物、事和概念进行抽象、抽取人们关心的共同特征。通过聚集、概括或者数据抽象层次等方法组成概念模型。模型中的属性可能有单值属性、多值属性、派生属性、复合属性等多种属性。互相联系的实体中,实体出现一次而引起其他实体出现的最小次数和最大次数为前一个实体的基数。
注意:如果一个实体存在必须以另一个实体或多个实体的存在为前提,则该实体为弱实体。
5.4 逻辑结构与物理结构的设计
-
进行数据结构的逻辑设计(将设计阶段的E-R图转换为DBMS所支持的关系模式与子模式)。
步骤:
(1)将E-R图转化为关系模式
实际上就是将实体、属性和实体之间的联系转化为关系模式。 例如:学生(学号,姓名,性别,专业,所在院系)
(2)将关系模式进行优化
对关系模式进行范式化,消除数据冗余,提高利用率
(3)为不同的用户子模式进行设计
-
对于给定的逻辑数据模型数据库物理设计。
-
确定数据库的物理结构
-
进行评价,重点是时间和空间效率
物理设计的内容:
-
为关系模式选择存取方法(索引存取,聚簇存取,哈希存取)
-
设计关系,索引等数据库文件的物理存储结构(确定数据存放位置,确定系统配置)
性能评价:存取效率是否快,存储效率是否高,其他性能等。
-
5.5数据库的实施与维护
-
数据库实施:
-
定义数据库结构:选用DBMS提供的数据定义语言来建立数据库结构
-
组织数据入库:步骤依次为筛选数据、转换数据格式、输入数据、校验数据
-
编制与调试应用程序:与组织数据入库同时进行
-
数据库试行:主要包括功能测试和性能测试
数据库试运行符合目标后,就可以投入正常的适用于行了。运行阶段还需要进行维护工作,主要是由DBA完成
-
-
数据库的维护4个方面:
-
数据的转储与回复
-
数据库安全与完整的控制
-
数据库的性能监督、分析、改造
-
数据库的重组织与重构造
-
4. 关系数据库理论
-
本章节的学生关系模式基本采用一下关系为例:
S(sno,sname,class,cno,tno,tname,tage,address,grade)
属性分别为:学号,学生姓名,班级,课程号,教师号,教师姓名,教师年龄,教师地址,学生成绩。
-
本章节的一些符号说明:
-
我们定义R(U)是属性集U上的关系模式。
-
X、Y是U的子集
-
r是R的任意具体关系
-
4.1 函数依赖
4.1.1 关系模式设计中的问题
建立一个数据库应用系统,关键问题是如何把现实世界表达成适合于它们的数据模型,这是数据库的逻辑结构设计问题。关系模型有严格的数学理论基础,因此人们就以关系模式为背景来讨论这个问题,形成了数据库逻辑结构设计的一个有力工具——关系模式的规范化理论。这是一个不断探索创新,不断发展的理论。
在S表中(sno,cno)是该关系模式的主键。
-
该关系存在的问题:
-
数据冗余度高:如果一个学生选修多门课程,则(sno,sname,class,tno,tname,tage,address)将会多次出现,造成空间浪费。
-
数据修改复杂:如果一个学生改名,则所有的sname都要修改
-
插入异常:如果学生还没有选课,则没有cno,学生信息也没法插入
-
删除异常:如果所有选择张三老师的学生都退掉课程,那么张三老师的信息也全部消失。
-
-
问题反思:S存在多余的数据以来,不够规范。如果将S分拆为ST(sno,sname,class),CT(cno,tno),TA(tno,tname,tage,address),SC(sno,cno,grade)就可以解决前四个问题。
对于属性间的联系:人们称之为(sno,sname,class,数据依赖主要有函数依赖和多值依赖。
4.1.2 函数依赖的概念
定义4.1:
如果s[X]=t[X]能导致s[Y]=t[Y],则称X函数决定Y,或者Y依赖于X,记为X->Y
-
例如S中存在的函数依赖:
sno->sname;sno->class;tno->tname;tno->address;(sno,cno)->grade;cno->tno。
函数依赖分为:
-
平凡函数依赖和非平凡函数依赖(当X->Y,如果Y不包含于X,则为非平凡函数依赖,否则为平凡函数依赖)
-
完全函数依赖和部分函数依赖(当X->Y,对于X的任意真子集X‘,不存在X’->Y,则Y完全依赖于X,否则为部分函数依赖)
-
传递函数依赖:X->Y(Y不包含于X),X不依赖于Y,Z依赖于Y,则Z传递依赖于X
4.1.3 候选键的形式定义
候选键是能唯一标识实体而不包含多余的属性的属性集。
-
候选键有唯一确定性:唯一确定表中的一行
-
候选键的最小性:构成候选键的属性数要最少
-
存在性和不唯一性:任何一个关系都有候选键,而且可能不止一个
定义:
-
主键:一个关系的候选键可能不唯一,选择一个为主键
-
主属性:包含在任何一个候选键中的属性
-
非主属性:不包含在任何一个候选键的属性为非主属性
4.2 关系模式的规范化
4.2.1关系与范式
为了让数据库设计的方法走向完备,人们研究了规范化理论。在关系数据库中,将满足不同要求的关系等级称为范式。
目前有6类范式,从严格程度递减来排序:
5NF,4NF,BCNF,3NF,2NF,1NF
4.2.2 第1范式(1NF)
-
定义:如果关系R的每个属性值都是不可再分的最小数据单位,则R满足第1范式,记为R∈1NF。
-
需要满足的条件:
-
不存在组合属性:如工资分为基本工资和补助,属于组合属性,不满足要求。
-
关系中不存在重复组
-
-
规范化方法:
-
去掉组合属性:将工资去掉,拆分为基本工资和补助。
-
对重复组进行拆分。
-
4.2.3 第2范式(2NF)
-
定义:如果关系R∈1NF,且R的每个非主属性值都完全依赖于R的任意候选键,则R满足第2范式,记为R∈2NF。
-
需要满足的条件:
-
R∈1NF
-
R的每个非主属性值都完全依赖于R的任意候选键
-
-
举例:S中(sno,cno)---P--->sname等,所以S不满足2NF。
-
存在的问题:
-
数据冗余:如果一个教师承担多门课程,则教师的编号,年龄,姓名,地址重复储存多次
-
修改复杂:如果教师更改地址,需要修改多个元组
-
插入异常:新教师报道时,因为没有cno而不能插入
-
删除异常:删除某门课,就会丢失任课教师的所有信息。
-
-
规范化方法:
-
投影:如把S拆分为ST(sno,sname,class),CTA(cno,tno,tname,tage,address),SC(sno,cno,grade)。
-
4.2.4 第3范式(3NF)
-
定义:如果关系R∈2NF,且R的每个非主属性值都不传递依赖于R的任意候选键,则R满足第3范式,记为R∈3NF。
-
性质:一个3NF的关系必定符合2NF。
-
需要满足的条件:
-
每个非主属性值都不传递依赖于R的任意候选键
-
-
举例:CTA中主键为(cno,tno),cno->tno,tno->address ,但是cno不依赖于tno,cno不能决定address,所以address传递依赖于cno,不符合3NF。
-
存在的问题:
-
插入异常:如果一门课没有安排老师,则课程无法进入CTA表
-
-
规范化方法:
-
投影:CTA拆分为CT(cno,tno)与TA(tno,tname,tage,address)
-
4.2.5 BC范式(BCNF)
-
定义:R<U,F>∈1NF,若函数依赖集合F中的所有函数依赖X--->Y(Y不含于X)的左部都包含R的任一候选键,则R∈BCNF。
-
性质:一个BCNF的关系必定符合3NF。
-
需要满足的条件:
-
函数依赖集合F中的所有函数依赖X--->Y(Y不含于X)的左部都包含R的任一候选键
-
-
举例:SCT(sno,cname,tname),候选键为(sno,cname)(sno,tname),而cname-->tname,左部未包含任意候选键,所以SCT不∈BCNF。
-
规范化方法:
-
投影:SCT拆分为SC(sno,cname) 和CT(cname,tname)
-