数据库范式设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国海洋大学实验报告年月日姓名系年级2012级专业计算机学号科目数据库题目通过实验体会关系数据理论,函数依赖以及范式。

❖实验要求

1.设计一个关系,使之满足2NF而不满足3NF;

设计一个关系,使之满足3NF而不满足BCNF;

2.详细描述关系的语义,分析关系中存在的函数依赖;

3.使用商用数据库SQL Server设计实现,录入数据;

4.体会数据冗余、增加异常、删除异常、修改复杂。

❖实验环境

Windows7系统下 Microsoft SQL Server

❖实验步骤

1.首先要弄清楚2NF、3NF、BCNF的定义与区别,再开始设计;

2.满足2NF而不满足3NF,则代表了这个关系消除了非主属性对码的部分

依赖,但没有消除非主属性对码的传递函数依赖,那么就可以开始设计

了:设这个关系为R1,设u={Sno,Sclass,Cmon},Sno代表学生的

学号,Sclass代表班号,Cmon代表班主任的工号,且存在这样的函数依

赖:Sno->Sclass,Sclass->Cmon,Sno->Cmon;Sno为主码,Sno为主属

性,Sclass、Cmon为非主属性。容易知道,Sclass与Cmon的真子集都

无法函数确定Sno,所以非主属性Sclass、Cmon对Sno完全函数依赖,

所以满足2NF;而由于Sno->Sclass(Sclass不是Sno的子集,也不能函

数确定Sno),Sclass->Cmon,所以非主属性Cmon对码Sno传递函数依赖,

所以它不是3NF。因此,R1满足2NF而不满足3NF。

3.满足3NF而不满足BCNF,代表了这个关系消除了非主属性对码的部分依

赖、传递依赖,但并不是每一个决定因素都包含码,那门就可以从这里

入手了:设这个关系为R2,要满足要求,则需找到一个或一组属性,让

它既不是码,又能够函数决定另外一个或一组属性,为了简单方便,这

里只找一个而不是一组;设u={Sno,Tno,Cno},Sno代表学生的学号,Tno代表教师的工号,Cno代表课程号,一个老师只教授一门课,但一门课可以由多个教师来上,一个学生选定一门课,那么就对应一个固定的老师。即(Sno,Cno)->Tno,Tno->Cno,且由Tno->Cno可以推出(Sno,Tno)->Cno,再根据候选码的定义可以知道,(Sno,Cno)与(Sno,Tno)都是候选码,而Tno不是,但Tno是决定因素,所以R2不是BCND;又可以容易看出R2中不存在非主属性对码的部分依赖与传递依赖,所以R2满足3NF。因此,R2是3NF而不是BCNF。

4.R1的实现:

输入数据

5.R2的实现:

输入数据:

6.数据冗余:如图所示:R1中

R2中

7.增加异常:R1中不存在,因为学生一入学就会有一个独一无二的学号,

R2中存在,一个学生想选一门新加入的课,可能这门课还没有分配老师,

只是请了一些人暂时代课,那么这条记录就无法添加了。

8.删除异常:R1中不存在,R2中也不存在;

9.修改复杂:R1中,如果有两个同学是同一个班级的,那么如果这个班级

换了班主任,修改数据时,在修改了一个条目之后,会导致数据库内容

不一致,需要将另外一个条目也修改才可以;R2中,如果一个老师换了

教授的课程,那么在数据库中可能有很多条选了这个老师的学生的所在

条目要作出修改。

❖实验心得

1.设计一个好的数据库,需要多次反复地思考、实践,并不能一蹴而就,需要

考虑到很多方面的内容;

2.在测试时还要想到方方面面不同情况的例子,来检验各种异常,否则容易有

局限性;

3.BCNF是一个比较难以掌握的范式,必须要多看定义、多加理解、多看例子进

行分析,才能够进一步理解范式。

相关文档
最新文档