公务员期刊网 论文中心 正文

数据库关系模式整合方法

数据库关系模式整合方法

本文作者:张丽君 单位:河南科技学院

一、引言

在整个数据库系统的设计过程中,总共分为六个基本阶段,即需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施、数据库试运行阶段就。其中在逻辑结构设计阶段的主要任务是如何将概念结构转换的关系模式进行优化。因为单纯的从概念结构转换的关系模式不一定具有“好”的性质。一个具有“好”的性质的关系模式中,没有不必要的冗余数据,也没有异常现象存在。所谓的冗余数据是指没有必要重复、大量出现的数据,在数据库中我们也不可能完全避免冗余现象,但是我们可以尽量减少冗余数据。异常现象主要是指在对数据库进行增、删、改操作的时候可能会出现的一些错误现象。

二、实例分析

下面通过一个实例说明一个“不好”的数据库中存在的问题。现有一个学生信息管理系统,其中的一个“学生选课管理表”包含以下属性:学号(sno),系别(sdept),系主任名(mname),课程号(cno),成绩(grade)。假设这个表中总共有4名学生,分别选修了不同的课程,如下表1所示:那么在这个关系模式中存在什么问题呢?经过分析,主要存在以下问题:

1.数据冗余严重:每个院系的学生选一门课程,其系名就重复存储一次;每个院系有多少个学生选课,系主任名就重复存储多少次。

2.更新异常(UpdateAnomalies):由于存在数据冗余必然会导致更新数据时,操作更加复杂,使得维护数据完整性代价大。稍一疏忽,就会导致数据库中数据的不一致。

3.插入异常(InsertionAnomalies):想要插入到表中的数据系统不允许插入,如新转来一个学生,该生还没有选课,因此这个元组信息就不允许插入,因为违反了实体完整性规则。

4.删除异常(DeletionAnomalies):不想删除的数据却不得不从数据库中删除,如数学系的学生王五退学了,在删除王五信息的同时,也把该院系的系主任信息删除掉了,可是系主任信息只取决于院系,跟具体的学生没有关系。

三、优化方法

为了解决上述表中出现的各种问题,把一个“不好”的关系模式变成一个x性质“好”的关系模式。可以通过模式分解的方法来实现。把低级别的关系模式通过简单的分解,逐步去除其中的冗余和异常现象,转换为若干个高一级范式的关系模式集合,这个过程就叫关系模式的规范化。关系数据库模式优化就是以规范化理论为基础,通过分析关系模式中属性和属性之间的函数依赖关系,按照一定的标准把一个大的关系模式进行分解,生成一些小的子关系模式,目的是通过破坏不合理的函数依赖,解决关系模式中存在的各种异常问题

(一)函数依赖基本概念

设R(U)是一个属性集U上的关系模式,W和Z是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在W上的属性值相等,而在Z上的属性值不等,则称“W函数确定Z”或“Z函数依赖于W”,记作W→Z。也就是说,对t,s∈r,若t[W]=s[W],则t[Z]=s[Z]那么称“W函数决定Z”,或“Z函数依赖于W”。需要说明的是,函数依赖是一个语义范畴的概念,而且函数依赖也不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。

(二)范式基本概念

范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。各种范式之间存在联系:1NF2NF3NFBCNF4NF5NF某一关系模式R为第n范式,可简记为R∈nNF。1.1NF:第一范式要求关系中的所有分量都必须是不可再分的原子项。1NF是每个关系数据库中的关系模式都应满足的最低要求,也就是说如果一个关系模式不满足第一范式,那么它就不能称之为是关系数据库。如图1所示的关系模式就不满足1NF,也就是不允许在一张表中又出现小表。2.2NF:若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。3.3NF:关系模式R<U,F>中若不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集),使得X→Y,Y→Z成立,Y→X,则称R<U,F>∈3NF。4.BCNF:设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。5.4NF:若关系模式R中的每个非平凡多值依赖X→Y(YX),X都含有码,则R∈4NF。6.5NF:若R∈4NF,且不存在连接依赖,则R∈5NF。

(三)优化的方法

规范的关系模式可保证关系中消除数据冗余、消除插入困难、消除修改困难。关系模式优化的基本思想就是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的”分离”。其基本步骤如图2所示。

(四)优化实例

有关系模式学生(学号,课号,姓名,性别,系号,课名,成绩,系主任,楼号),其中各个属性之间的函数依赖如图3所示。1.消除部分依赖,得到满足2NF的关系模式:Student(学号,姓名,性别,系号,系主任,楼号)Sc(学号,课号,成绩)Course(课号,课名)2.消除传递依赖,得到满足3NF的关系模式:Student(学号,姓名,性别,系号)Deparment(系号,系主任,楼号)Sc(学号,课号,成绩)Course(课号,课名)

四、结论

规范化首先要保证关系中所有属性都是原子项,也就是在保证其满足1NF的基础上,如果关系的码是由单属性组成,则这个关系模式必然满足2NF,否则消除部分函数依赖可得2NF关系;如果一个关系模式中所有属性都是主属性,则这个关系模式必然满足3NF。如果有非主属性存在,则还需要判断是否对候选码有传递函数依赖,如果有就消除之可得3NF关系;依此类推。直到消除了操作异常现象。