豆利

摘要:数据库的设计中,关系模式设计在整个数据库的设计过程中起着重要的指导作用。一个数据库模式设计的好坏主要取决于各个关系模式的质量。本文以教务管理数据库的关系模式讲述设计准则、函数依赖、模式分解以及规范化处理。

关键词:关系模式;教务管理;函数依赖;规范化

中图分类号:G642        文献标识码:A

文章编号:1009-3044(2021)19-0029-02

1问题提出

在数据库系统中,经常会出现数据冗余度大,且数据操作出现异常等问题,很多情况下,是由于数据库设计阶段没有选择好的关系模式。

建立一个描述学校教务管理的数据库,该数据库涉及的对象有学生的学号(Sno),学生的姓名(Sname),出生日期(Birthday),所在系(Dept)、系主任姓名(Dname),课程号(Cno),课程名称(Cname),学分(Credit)和成绩(Grade)。该关系模式如下:Student=(Sno,Sname,Birthday,Dept,Dname,Cno,Cname,Credit,Grade),其中Sno和Cno作为该关系模式的主键。

但是,这个Student关系模式存在很大问题,具体问题分析如下:

(1)数据冗余大

例如在该关系模式中,假设有1000个学生,就会存储1000次系主任姓名,每个系的系主任的姓名大量重复出现,系主任姓名重复的次数和本系学生人数保持一致,造成了存储空间的浪费。

(2)插入异常

插入异常指的是本应该插入的数据而不能插入到数据库中。不能插入的原因不是系统代码设计的问题,而是数据库设计的问题造成的。学号和课程号共同组成了该关系模式的主键,要录入课程信息,必须知道学生的学号这个关键字。但对于新开设的课程,由于还没有人选修,就没有办法录入课程信息。也就是无法给出开课计划,只能有人选修后才能录入课程信息。再比如新转入一个学生,由于还没有选课,就没法确定课程号,那幺就无法插入到数据库中。

(3)更新异常

由于数据出现了大量的冗余,系统需要更新数据,必然会花费很大的代价进行维护数据库,否则会面临数据不一致的情况。例如某个系需要更换系主任,那幺就需要更新与这个系有关的所有行的信息。由于工作量非常大,若录入不慎,就会出现数据不一致的问题。

(4)删除异常

删除异常指的是当需要删除数据时,不能删除该数据或出现删除错误,后者删除数据后,把相关联不应该删除的数据也删除了。例如在该关系模式中,如果某个学生因特殊情况退学,那幺就会把课程号、课程名称、系号、系主任等相关信息删除。

鉴于以上分析,说明该模式不是一个优质的关系模式。一个质量优的关系模式不会出现大量的数据冗余现象、不会出现操作异常、不会造成数据的不一致性等相关问题。

为什幺发生这些问题,主要因为这个模式中存在函数依赖相关问题。

2函数依赖

函数依赖指的是数据库中各属性之间的联系,例如在学生中,每个学号对应一个姓名,每个学号对应一个出生日期等。每门课可以对应多个教师等,这类联系称为函数依赖。类似于函数Y=F(x),给出一个x的值,对应一个Y的值。函数依赖的定义如下:

(1)平凡函数依赖与非平凡函数依赖

在关系模式R(U)中,对于U的子集X和Y,如果[X→Y],但Y不是X的子集,则称[X→Y]是非平凡函数依赖。若Y是X的子集,则称[X→Y]是平凡函数依赖。

(2)完全函数依赖与部分函数依赖

在关系模式R(U)中,如果[X→Y],并且对于X的任何一个真子集[X']都有[X'→Y],即[X'→Y]不成立,则称Y完全函数依赖X,记[X→Y]。

例如在关系SC(Sno,Cno,Grade)中,(Sno,Cno)[→]Grade, 且Grade不单独依赖Sno,也不单独依赖Cno,而是由Sno和Cno共同决定。则Grade完全依赖Sno和Cno。又例如在关系Student(Sno,Sname,Dept,Dname,Cno,Cname,Grade)中,Sno和Cno是主键,则Cname是有Cno决定的,与Sno无关,则Cname部分依赖(Sno,Cno)。

(3)传递函数依赖

在关系模式R(U)中,如果[X→Y],[Y→Z],且[Y→X]不成立,则称Z传递函数依赖于X。

在传递函数依赖中加入条件[Y→X]不成立,是因为如果[Y→X],则认为X与Y存在互相依赖的关系,这实际上是Z直接依赖于X,而不是传递依赖关系了。例如在关系Student(Sno,Sname,Dept,Dname,Cno,Cname,Grade)中,[Sno→Dept], [Dept→Dname],可以看出[Sno→Dname],Dname传递依赖于Sno。

3范式

关系模式的好与坏,用什幺标准衡量呢?这个标准就是模式的范式。范式是一种标准用来衡量关系模式的优劣,范式级别越高,符合的标准越高。

(1)第一范式

如果关系R中每个属性都是简单的属性,且为原子性,不可再分割,则属于第一范式,记作1NF。

第一范式是对关系数据库的最低要求,不满足第一范式的要求,不属于关系型数据库,不满足第一范式的关系称为非规范化关系。

对于U=(Sno,Sname,Birthday,Dept,Dname,Cno,Cname,Credit,Grade),满足第一范式的关系模式还会存在插入异常、更新异常、删除异常、数据冗余等相关现象,需要满足更高范式要求,以消除以上不利影响。