荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 管理信息系统开发中的关系设计
发信站: BBS 荔园晨风站 (Thu Jan 21 22:39:22 1999), 转信


  利用Foxpro进行管理信息系统的应用软件开发时,其核心任务是数
据库中的关系设计,它是系统应用软件设计的基础。其质量的好坏,直
接影响到信息管理系统的功能和质量。
    关系设计的任务是消除数据删除、插入操作中的异常现象,最大
限度地降低数据的冗余度,并保证数据的一致性。

    关系设计的原则
    关系设计的理论基础是规范化理论,设计数据库的过程实际上是
对关系模型进行规范化和分解的过程,使非规范化的关系满足规范化
理论的要求。要做到这一点,在关系设计时我们应遵循以下原则:

    1.关系分解后信息不丢失,不增加,即是无损连续分解。必须把全
局模式的数据分解到各个子模式关系中,不能丢失数据,也不能因分解
而增加数据,以保证数据的完整性。
    2.合理选择规范程度。记录数多的关系,低级规范造成的冗余度
很大,浪费了存储空间又影响了数据的一致性;但对相互联接的运算,
低级模式又比高级范式好。另一方面,从存取、插入速度上,又希望一
个子模式的属性越少越好,即取高级范式。因此速度与空间、速度与
一致性在范式上是矛盾的。所以应根据情况,合理选择规范化程度。
    3.正确性与可实现性原则。
    下面以一个"大学生信息管理系统"为例进行阐述。
    关系设计
    在大学生信息管理系统开发中,有一个关于大学生选课情况的汇
总登记表,表中包括学号NO、姓名XM、性别XB、专业ZY、年级NJ、课
程代号KH、课程名KM、学时XS、学分XF、成绩C J、任课教师JS等字
段,如表1。
表1 大学生选课情况的汇总登记表
    表1是一种非规范化的关系,表中出现了重复组,这些重复的属性
是:课程代号、课程名、学时、学分及任课教师。
    对每位同学而言,选课的门数不一样多,因此,重复组重复的次数
就不一样,所以描述每位同学选课情况的记录的长度各不相同,形成可
变长记录,造成存取困难,甚至无法实现。为此,需用规范化理论对此
关系进行规范。

    1.消去重复组
    对表1分析知,(1)每位同学有一个学号,但他(她)可选多门课,所
以学号决定课程号,同时学号NO也决定XM、XB、ZY、NJ;(2)每门的任
课教师、课程名、学时及学分由课程号决定;() 每个学生的成绩因其
所选课而变,因此,成绩由学号和课程号共同决定,由此得到一组函数
依赖。
    F1={NO→(XM,XB,ZY,NJ),KH→(KM,XF,XS,JS),(NO,KH)→CJ}
    此函数依赖可用表2表示,其中(NO,KH)为关键字。表2 满足第一
式的大学生选课情况登记表
    表2构成的关系R消去了重复组,属于1NF(Normal Form),但仍存在
以下问题:
    (1)若某同学毕业了,在删除其情况时,连同课程信息一起删掉了,
出现了删除异常;
    (2)若某教师要开新课,但因还没有学生选,就无法把该课的信息
存入库中,以供学生查询,出现了插入异常;
    (3)每个同学的信息(NO,XM,XB,ZY,NJ)与其选课门类出现的次数
一样多,这一方面造成存储空间的浪费,冗余大;另一方面使系统的完
整性难以维护。如某门课的教师更换,则需在库中逐一修改该门课的
任课教师信息,如有疏忽,就会产生数据不一致。
    2.消去部分函数依赖
    表2中出现上述问题的原因在于,某些数据项对关键字(NO,KH)属
部分函数依赖。如:XM、XB、ZY、NJ部分函数依赖于关键字(NO,KH),
实际上它们只由NO决定,这就导致了插入、删除异常。
    因此,对表2进行分解,使非主属性完全函数依赖于主关键字,从而
得到如下三组函数依赖
    F2={NO→(XM,XB,ZY,NJ)}
    F3={NO→KH,KH→(KM,XS,XF,JS)}
    F4={(NO,KH)→CJ}
    F2、F3、F4函数依赖关系分别如表3、表4、表5示。表3 学生情

    表3、表5构成的关系消除了部分函数依赖,属于2NF,它解决了上
面提出的问题,只要知道NO,即可将学生的情况插入,或从库中删除,且
NO将学生情况与选课情况和成绩联系起来。但表4所示关系仍存在以
下问题:
    (1)某一教师的新课在无学生选时,不能进入库中,即库中只登了
那些选了的课,这不利于教师与学生之间的联系,有碍于课程的发展;
表4 选课情况
表5 成绩
    (2)如某课的名称或学时或任课教师有变时,则需逐个修改库中所
出现的这门课的情况, 显然十分麻烦,且易出错,同时也存在数据冗余
问题。
    因此,对表4所示关系需进一步分解。

    3.消去传递函数依赖
    非主属性传递函数依赖于主关键字是出现上述问题的根本原因。
表4中,NO是关键字,K完全函数依赖于NO,但KM、XS、XF完全函数依赖
于KH,因此它们是传递函数依赖于NO,消去传递函数依赖关系,得到下
面两组依赖函数:
    F5={NO→KH}
    F6={KH→(KM,XS,XF,JS)}
    其中F5可与F4合并,结果如表5,函数依赖F6所表示的关系,如表6
示。表6 课程信息
    由此得到的三个关系表3、表5、表6,解决了插入、删除异常及数
据冗余问题。这样可通过Foxpro有关多库操作的命令,方便地在三个
关系之间建立联系,实现数据的编辑、查询、统计、计算等操作。

    规范化设计的作用
    以上设计仅为学生信息管理系统开发过程中数据库设计的一小部
分,对复杂的关系设计,可以继续进行到第4NF,甚至第5NF,视具体情况
而定。对上面的问题,做到第3NF就可以了。由以上设计可见,规范化
设计有以下作用:
    (1)可消除数据插入、修改和删除时的相互牵扯,有效地保持了数
据的一致性;
    (2)提高了存储空间的利用率,使数据的冗余度降到最低。上面三
个关系中,NO和KH是两个重复存储的数据项,它们是非有害重复;
    (3)分解后的关系之间可通过Foxpro命令建立联系,方便地进行各
种操作;
    (4)为对数据库编程,进行软件设计奠定了良好基础

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店