在针对一个实际应用来进行数据库的设计时,首先遇到的一个问题就是:
应该如何构造一个适合于它的数据模式,即如何构造它的逻辑结构。
因为关系模型有严格的数据理论基础,人们就以关系模型为背景来讨论上述问题,这就形成了关系规范化理论。
实际上,该理论对于一般的数据库设计理论均有指导意义。
关系模型的五元组定义:
R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)在这个定义中: R R R 是关系名称; U U U 是属性名集合; D D D 是 U U U 中属性所来自的域的集合; D O M DOM DOM 是属性到域的映射; F F F 是属性 U U U 上的数据依赖集合。
在这个关系模型定义中,D和DOM对数据库设计关系不大,因此可将上述关系模式简化为一个三元组。
关系模型的三元组定义:
R < U , F > R R<U,F>当且仅当 U U U 上的一个关系 r r r 满足 F F F 时,称为关系模式 R R R 的一个关系。
对于一个关系模式,如何来评价它的优劣呢?
对上述关系的观察可以发现,这个关系模式存在如下问题:
鉴于以上种种问题,可以说,SELECTS关系模式不是一个好的模式。
一个“好”的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少。
为什么会发生这样的问题呢?
这是因为在这个关系模式中的数据依赖存在某些不好的性质。
一个关系模式之所以会产生以上诸如数据冗余、操作异常等问题,是由存在于模式中的某些数据依赖引起的。
规范化理论正是在对数据依赖进行分析研究的基础上,通过一定方法来消除其中不合适的数据依赖,以改造关系模式,进而解决在关系模式中的插入异常、删除异常、更新异常和数据冗余的问题。
规范化理论要研究关系模式中的数据依赖。
所谓数据依赖,即指实体属性值之间相互联系和相互制约的关系,是数据内在的性质,是语义的体现。
数据依赖性也是关系数据库设计理论的中心问题,研究中发现数据依赖有多种类型,而函数依赖和多值依赖是最其中重要的两种数据依赖。
函数依赖是关系属性之间联系中广泛存在的一种数据依赖,其定义如下:
设关系模式R(U),X和Y是属性集U的子集,对于R(U)中任意一个可能关系r中的两个元组 t、s,若有 t [ X ] = s [ X ] t[X]=s[X] t[X]=s[X],则有 t [ Y ] = s [ Y ] t[Y]=s[Y] t[Y]=s[Y],就称X函数决定Y,或Y函数依赖于X。记为: X → Y X→Y X→Y 。
在上述定义中: t[X]表示元组t在属性集X上的值,其余依此类推。
函数依赖示例
设有关系模式 R ( A , B , C , D ) R(A,B,C,D) R(A,B,C,D) 的一个关系r如下表所示:
几种特定的函数依赖
码:
关系模式的优与劣,用什么标准评价?
这个标准就是模式的 范式(Normal Forms,简记为NF) 。
范式指的是符合某一种级别的关系模式的集合,满足最低要求的叫第一范式,简称为1NF 。
在第l范式基础上,进一步满足一些要求的称为第二范式,简称为2NF。其余以此类推。
范式的种类与数据依赖(FD)有着直接的联系,基于FD的范式有1NF、2NF、3NF、BCNF等。
通常把某关系模式R为第n范式简记为 R ∈ n N F R∈nNF R∈nNF 。
定义:
如果关系模式R的=每个关系r的属性值都是不可分的原子值==,那么称R是第二范式(first normal form,简记为1NF)。记为 R ∈ 1 N F R∈1NF R∈1NF 。
满足1NF的关系称为规范化的关系。关系数据库研究的关系都是规范化的关系。
1NF是关系模式应具备的最起码的条件。不满足第l范式的数据库模式不能称为关系数据库。
定义:
如果关系模式R∈1NF,并且每个非主属性完全函数依赖于码,那么称R是第二范式(2NF)。
记为 R ∈ 2 N F R∈2NF R∈2NF 。
实际上,从上述关于2NF的定义可看到,对于一个满足1NF基础的规范化关系,去除部分函数依赖后,该关系模式即符合2NF 。
如果数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。
很显然,如果关系模式 R ∈ 1 N F R∈1NF R∈1NF,并且R的码是单个属性,那么 R ∈ 2 N F R∈2NF R∈2NF,因为它不可能存在非主属性对码的部分函数依赖。
定义:
如果关系模式 R ∈ 1 N F R∈1NF R∈1NF,且每个非主属性都不传递依赖于R的码,则称R是第三范式。
记为 R ∈ 3 N F R∈3NF R∈3NF 。
由3NF的定义可以证明,若 R ∈ 3 N F R∈3NF R∈3NF,则在R中的每一个非主属性即不部分依赖于码,也不传递依赖于码。因此很显然,若R是3NF关系模式,那么R也是2NF的关系模式。
关于3NF还可证明:设关系模式R,当R上每一个函数依赖X→Y满足下列三个条件之一时:
满足BCNF的关系模式具有如下3个性质:
定义:
设关系模式R(U),X,Y,Z是U的子集,且Z=U-X-Y。当且仅当R的任一关系r,r在(X,Z)上的每一个值对应一组Y的值,这组值仅仅决定于X而与Z值无关,则称Y多值依赖于X,记为:X→→Y 。
若X→→Y,而Z=Φ(为空),则X→→Y称为平凡的多值依赖;否则称X→→Y为非平凡的多值依赖
多值依赖具有下列性质:
定义:
关系模式R∈1NF,如果对于R的每个非平凡多值依赖 X → → Y X→→Y X→→Y(Y不是X的子集,XY未包含R的全部属性),X都含有候选码,则称R是第四范式,记为 R ∈ 4 N F R∈4NF R∈4NF 。
根据定义,对于每一个非平凡的多值依赖X→→Y, X都含有候选码,于是就有X→Y,所以4NF所允许的非平凡的多值依赖实际上是函数依赖。4NF所不允许的是非平凡且非函数依赖的多值依赖。
因此若一个关系模式是4NF,则其必为BCNF。
上述规范化步骤,会改进规范化程度低的关系可能存在的插入异常、删除异常、修改复杂和数据冗余等问题,并将其转换成高级范式。
但并不意味着规范化程度越高的关系模式就越好。特别是在对实际应用进行设计时,必须对现实世界的实际情况和用户应用需求作进一步分析,以确定一个合适的、能够反映现实世界的模式。
换句话说,以上的规范化步骤可以在其中任何一步终止。
一般而言,数据库设计是对于给定的应用环境,设计并优化数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使其能有效地存储数据,满足用户的应用需求。
数据库设计的目标是为用户和应用系统提供一个信息基础设施和高效率的运行环境。以满足用户对信息管理的要求以及对数据操作的要求。
需求分析是整个设计过程的基础,需求分析就是要分析用户的要求。这包括对数据及其处理的要求,对数据完整性、安全性的要求。
因此,这一阶段主要任务是通过对现行的手工系统或已有的计算机系统进行调查和分析,以确定企业对即将建立的数据库应用系统的信息要求和处理要求。
在本阶段调查分析结果的准确与否将直接影响后面各个阶段的设计,并影响到设计结果是否合理和实用。
在这一阶段的工作成果,即其所收集的基础数据(用数据字典来表达)和一组数据流程图(Data Flow Diagram)则是下一步进行概念设计的基础。
数据流图(Data Flow Diagram 简称DFD)是系统处理模型的主要组成部分,它摆脱了具体的物理细节,在逻辑上精确地描述了系统中数据和处理的关系,详尽表示了系统的功能、输入、输出和数据存储等。
数据字典(Data Dictionary 简称DD)是对系统中各类数据的详细描述,是各类数据属性的清单。
是进行详细的数据收集和数据分析所获得的主要成果。数据字典中的内容在数据库设计过程中还要不断修改、充实和完善。
根据需求分析阶段形成的所要建立的新系统需求分析说明书,把用户的信息需求抽象为信息结构即概念模型的过程就是概念结构设计。
概念结构设计是整个数据库设计的关键。概念结构设计将现实世界中的客观对象首先抽象为独立于具体机器,独立于具体DBMS的信息结构。
目前常用的ER方法,即用E-R图来描述现实世界的概念模型。
如前所述,描述概念设计的有力工具是实体-联系(E-R)模型,因此,概念结构设计就归结为E-R模型、方法的分析和设计。
设计概念结构通常有 自项向下、自底向上,逐步扩张和混合策略 等4类方法。
在概念结构设计的阶段,经常采用的策略是自底向上方法。
即自项向下地进行需求分析,然后再自底向上地设计概念结构。
自底向上设计概念结构的方法通常又可以为两步:
因此,使用E-R方法设计概念模型一般要经过三个步骤:
局部视图设计:
概念结构设计的第一步就是对需求分析阶段收集到的数据按照E-R模型的要求进行分类、组织,形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(1:l,1:n,m:n),设计分E-R图。
具体做法是:
为了简化E-R图的处置,在给定的应用环境中,可遵循以下基本准则来划分实体和属性:
符合以上准则的数据项,可作为属性。现实世界的事物能作为属性对待的,尽量作为属性对待。
总体E-R图设计:
集成局部的分E-R图时都需要两个步骤:
本阶段的任务是把概念结构设计阶段设计好的全局概念模式 转换成 与所选用的具体的DBMS所支持的数据模型相符合的 逻辑结构。
换言之,逻辑设计是要把概念模式转换成DBMS能处理的模式。
因此,逻辑设计,就是采取一定的策略,按照若干准则将(E-R图)概念模型转换为关系数据库管理系统所能接受的一组关系模式,并利用规范化的理论和方法对这组关系模式进行处理。
根据上述逻辑结构设计阶段任务可知,当从E-R图向关系模式转换时,需要做以下两项工作:
完成逻辑结构设计阶段的任务,有不同的方法:
逻辑结构设计步骤如下:
1. 将E-R图转换为关系模型
将E-R图转换为适当的模型。由于现在常用的DBMS都是基于关系模型的关系数据库,所以,通常只需要将E-R图转换为关系模型即可。
将E-R图转换为关系模型一般应遵循的原则是:一个实体转换为一个关系模式,实体名转换为关系名,实体属性转换为关系属性。
由于实体之间的联系分为一对一、一对多和多对多3种,所以实体之间的联系转换时,则有不同的情况:
2. 数据模型优化
数据库的物理结构主要是指数据库在物理设备上的存储结构和存取方法,它依赖于选定的数据库管理系统。
数据库物理结构设计就是为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程。
数据库物理设计步骤包括:
数据库实施的步骤是:
数据库交付用户投入运行后,即进入数据库运行与维护阶段,对数据库经常性的维护工作是由DBA完成的,它包括以下工作: