`

关系数据库设计理论-->3NF

 
阅读更多

关系数据库设计理论-->3NF

函数依赖<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.函数依赖定义

A-> B,即 A函数决定B ,A称为决定因素。

2.关系的键码、超键码

属性函数决定关系R的所有其它属性,并且该属性的任何真子集都不能函数决定R的所有其它属性,则属性是键码。 键码必须是最小的。

包含键码的属性集称为 超键码 。每个键码都是超键码。

例题: 已知关系R包含属性{A,B,C,D},R的键码为{A,B},则下面的选项哪1个是R

的超键码( )。

A.{A} B.{C,D} C.{A,B,C,D} D.{B,C,D}

答案:C

3.几个概念

平凡依赖:如果B是A的子集,则称该依赖为平凡的。

非平凡依赖:如果B中至少有一个属性不在A中,则称该依赖为非平凡的。

完全非平凡依赖:如果B中没有一个属性在A中,则称该依赖为完全非平凡的。

平凡依赖规则:函数依赖A1A2 An B1B2 Bm等价于A1A2 An C1C2 Ck,其中 C是B的子集,但不在A中出现。称这个规则为 平凡依赖规则

4.传递规则

如果A1A2 An B1B2 Bm和B1B2 Bm C1C2 Ck,在关系R中成立,则A1A2 An C1C2 Ck在R中也成立。这个规则就称为传递规则。

例题: 现给定一个关系R的实例如下表,则可能是函数依赖的是( B ).

Fl

F2

R

F。

F5

李华

20020330

H

1

lO

金谦

20020330

0

1

5

李华

20020218

O ·

3

15

吕宋

200201]5

H

2

5

顾小华

20020218

O

1

20

A.F1 F2 B.F1F2→F5

C.F3 F4→F5 D.F2F3→F4

学习要点二

1. 函数依赖集:假设{A1,A2, An}是属性集,记为A,S是函数依赖集。

属性集A在依赖集S下的封闭集是这样的属性集X,它使得满足依赖集S中的所有依赖的每个关系也都满足A X。

A1A2 An X是蕴含于S中的函数依赖。

2.封闭集:

对于给定的函数依赖集S,属性集A函数决定的属性的集合就是属性集A在依赖集S下的封闭集。

学会计算某属性集的封闭集,可以根据给定的函数依赖集推导蕴含于该依赖集的其他函数依赖。

例题: 假设关系模式为R(A,B,C,D),函数依赖为A→B,B→C和B→D。

(1)求蕴含于给定函数依赖的所有非平凡函数依赖;

(2)求R的所有键码;

(3)求R的所有超码(不包括键码)。

参考答案:

(1)先求各种属性组合的封闭集,再从中找出新的函数依赖。

A+=ABCD B+=BCD C+=C D+=D

A→C,A→D (2)

AB+==ABCD AC+==ABCD AD+=ABCD BC+=BCD BD+=BCD

CD+=CD

AB→C,AB→D AC→B,AC→D AD→B,AD→C BC→D BD→C

ABC+=ABCD ABD+=ABCD BCD+=BCD

ABC→D ABD→C

ABCD+=ABCD

蕴含于给定函数依赖的非平凡函数依赖共12个。

(2)A为键码。

(3)AB,AC,AD,ABC,ABD,ABCD为超键码。

学习要点三

1. 几个概念

l 主属性:键码所在的属性称为主属性。

l 主属性:键码所在的属性称为主属性。

l 非主属性:键码属性以外的属性称为非主属性。

l 非主属性:键码属性以外的属性称为非主属性。

l 完全依赖:对于函数依赖W A,如果存在V是W的真子集而函数依赖

V A成立,则称A部分依赖于W;若不存在这种V,则称A完全依赖于W。

l 传递依赖

对于函数依赖X Y,如果X不函数依赖于Y,而函数依赖Y Z成立,则称Z对X传递依赖。

学习要点四

1.第一范式(1NF)

如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第一范式。

2.第二范式(2NF)

若关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码,则R属于第二范式。

例题:学生关系模式Student(Sno,Sname,Sdept,Mname,Cname,Grade)。

•该关系模式存在如下部分依赖:

Sno,Cname Sname,Sdept,Mname

不满足 每个非主属性都完全函数依赖于键码 的条件。学生关系模式不属于第二范式。

3.第三范式(3NF)

若关系模式R属于第一范式,且每个非主属性都不传递依赖于键码,则R属于第三范式。

4.BC范式(BCNF)

若关系模式R属于第一范式,且每个属性都不传递依赖于键码,则R属于BC范式。

BC范式的条件表述:

l 每个非平凡依赖的左边必须包含键码;每个决定因素必须包含键码。

l BC范式既检查非主属性,又检查主属性。

例题: 写出3个关系模式分别满足:

(1)是1NF,不是2NF;

(2)是2NF,不是3NF;

(3)是3NF,也是BCNF。

各用两句话分别说明所写的关系模式是前者,不是(或也是)后者。

答:(1)学生选课(学号,姓名,课程号,成绩)

属性不可分,是1NF;存在非主属性对键码的部分依赖(学号,课程号→姓名),不

是2NF。

(2)学生(学号,姓名,系别,系主任)

键码为单属性,不存在部分依赖,是2NF;存在非主属性对键码的传递依赖(学号→

姓名,系别;系别≯学号;系别→系主任;学号传递→系主任),不是3NF。

(3)学生(学号,姓名,年龄)

非主属性(姓名,年龄)对键码不存在部分依赖和传递依赖,是3NF;

主属性(学号)对键码也不存在部分依赖和传递依赖,是BCNF。

学习要点五

1.模式分解的三种方法

1)部分依赖归子集;完全依赖随键码。

关系模式 升级 第二范式:消除非主属性对键码的部分依赖。

解决的办法:对原有模式进行分解。

分解的关键:找出对键码部分依赖的非主属性所依赖的键码的真子集,把这个真子集与所有相应的非主属性组合成一个新的模式;对键码完全依赖的所有非主属性则与键码组合成另一个新模式。

2)基本依赖为基础,中间属性作桥梁

关系模式 升级 第三范式:消除非主属性对键码的传递依赖。

解决的办法:以构成传递链的两个基本依赖为基础形成两个新的模式,切断传递链,保持两个基本依赖,有中间属性作为桥梁,跨接两个新的模式,实现无损的自然连接。

3)找违例自成一体,舍其右全集归一

关系模式 升级 BC范式:消除非主属性对键码的部分依赖和传递依赖,消除 主属性对键码的部分依赖和传递依赖。

解决的办法:对关系R(A,B,C),若存在BCNF的违例A B ,则R分解为

R1(A,B) R2(A,C), R1,R2则为BCNF.

例题: 关系模式为R(A,B,C,D),函数依赖为AB→C,C→D和D→A。

(1)找出所有违背BCNF的函数依赖。提示:应该考虑不在给定的依赖集但蕴含于

其中的依赖;

(2)关系模式R分解成属于BCNF的关系模式的集合。

参考答案:

(1)参看主教材P.122例6.1,共有14个非平凡函数依赖(包括已知的和导出的)

C→A,C→D,D→A

AB→C,AB→D,AC→D,BC→A,BC→D,BD→A,BD→C,CD→A

ABC→D,ABD→C,BCD→A

共有3个键码:AB,BC,BD

其决定因素不包含键码的函数依赖即为BC范式的违例,如下所示:

C→A,C→D,D→A,AC→D,CD→A

(2)以违例C→D为基础进行分解:

Rl(C,D),R2(A,B,C)

R1属于BC范式。

R2有函数依赖C→A,AB→C,BC→A

AB+=ABC.BC+=ABC

AB,BC均为键码。

函数依赖C→A为BC范式违例。于是R2又可分解为:

R3(A,C),R4(B,C)

至此,R分解为R1,R3,R4,均属于BC范式

分享到:
评论

相关推荐

    关系数据库设计理论-ppt(实用资料).ppt

    关系数据库设计理论是数据库设计的核心内容,它涉及到如何构建高效、稳定、无冗余的数据存储结构。本资料主要探讨了数据依赖、范式理论以及关系模式的分解等关键概念。 首先,数据依赖是理解数据库设计的基础。在...

    数据库 关系数据库设计理论课件

    4.1 数据依赖 4.1.1 关系模式中的数据依赖 4.1.2数据依赖对关系模式的影响 4.1.3 有关概念 4.2 范式 4.2.1 第一范式( 1NF) ...4.2.3 第三范式( 3NF) 4.2.4 BC范式( BCNF) 4.3 关系模式的规范化

    关系数据库设计理论PDF

    ### 关系数据库设计理论知识点详解 #### 一、规范化问题 **1.1 规范化问题概述** 规范化是关系数据库设计中一个重要的步骤,它主要用于解决数据冗余、更新异常、插入异常以及删除异常等问题。这些问题主要是由...

    西南交通大学数据库原理作业-第6章 关系数据库设计理论.docx

    在本篇作业中,我们探讨了关系数据库设计理论的关键概念,包括关系模型、函数依赖、范式以及数据库的规范化过程。这些知识点对于理解和设计高效、稳定的数据库至关重要。 首先,关系模型是数据库的基础,它通过表格...

    关系数据库设计理论2017

    在关系数据库设计中,我们需要了解关系数据库设计理论的概念和术语,掌握模式分解的准则和规范化理论,理解关系1NF-BCNF范式的定义和存在的问题,掌握关系规范化的方法。 在上面的例子中,我们可以看到UN关系模式...

    数据库设计指南-数据库设计教程

    3. **范式理论**:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等,是数据库规范化设计的基础,通过消除数据冗余和依赖,提高数据的一致性和完整性。 4. **主键与外键**:主键是唯一标识表中每一行的字段,...

    关系型数据库---第一范式

    第一范式(1NF)是关系型数据库设计理论中的一种规则,要求每个字段都是原子型的,表格没有多值项目和重复组,并且每个字段都有一个关键字(key)。 在关系型数据库中,第一范式的应用是非常重要的,因为它可以确保...

    数据库课程设计-工程项目管理(功能简单适合新手)

    这将涉及到数据库设计的范式理论,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以及BCNF(Boyce-Codd范式)等,确保数据的规范化,减少数据冗余和提高数据一致性。 在实现这些功能时,你可能会用到JDBC...

    关系数据库设计理论.pdf

    关系数据库设计理论是数据库设计的基础,它涉及到如何有效地组织和存储数据,以确保数据的一致性和完整性。在本文档中,我们主要讨论了函数依赖这一核心概念及其在数据依赖和数据库设计中的作用。 函数依赖...

    数据库设计开发规范-阿里.pdf.zip

    其次,设计时应遵循范式理论,通常至少达到第三范式(3NF),以减少数据冗余和提高数据一致性。在必要的时候,可以考虑更高的范式,如BCNF(巴斯-科德范式)或4NF(第四范式),以优化数据结构。 规范还强调了数据...

    数据库设计指南-60个设计技巧-pdf.rar_数据库设计

    《数据库设计指南-60个设计技巧》是一本专注于数据库设计的专业资料,旨在提供一系列实用的设计策略和最佳实践。数据库设计是信息系统开发的核心环节,它直接影响到系统的性能、可扩展性和数据一致性。以下是对这份...

    数据库课程设计---学生选课信息管理系统.docx

    这一阶段涉及对每个实体的属性进行细化,确定字段类型、长度、约束条件等,以满足数据库的规范化要求,例如,通过范式理论(如1NF、2NF、3NF)来消除数据冗余,提高数据一致性。 在系统实现过程中,VB作为前端开发...

    关系数据库设计理论

    关系数据库设计理论是数据库设计的核心内容,它涉及如何构建高效、稳定、无冗余的数据存储结构。本章主要探讨了关系数据库的一些基本概念、规范理论以及函数依赖。 1. 在关系数据库中,每个属性(列)必须是不可...

    数据库课程设计--网上选课系统

    确保关系模式满足第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以保证数据的规范化,减少数据冗余和更新异常。例如,学生表、课程表和选课结果表应分别独立,通过外键建立关联。 4. **物理设计**:考虑...

    数据库设计指南-60个设计技巧

    1. **范式理论**:数据库设计的基础是遵循不同的范式,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及更高的BCNF和4NF等,以确保数据的完整性和减少冗余。 2. **关系模型**:理解关系模型的基本概念,包括实体...

    数据库课程设计--宾馆客房信息管理系统.doc

    总的来说,这个课程设计旨在让学生将理论知识应用于实际,掌握数据库设计的完整流程,提升问题解决能力和系统开发能力。在设计过程中,学生不仅需要理解和应用数据库原理,还要学会与用户沟通,确保设计出的系统能...

    数据库课程设计-------图书管理系统

    本次数据库课程设计不仅要求学生掌握数据库设计的基本技能,还需要通过实际操作来加深理解,从而达到理论与实践相结合的目的。通过这个项目,学生可以更好地理解数据库系统的工作原理,为将来从事相关工作打下坚实的...

    数据库课程设计--仓库管理系统.doc

    设计方法与步骤遵循关系数据库设计流程,包括需求分析、概念设计、详细设计、编码实现和运行维护,最后撰写完整的课程设计报告。 在评价体系中,包含了对学生态度、出勤、任务难度、工作量、创新性和论文规范性的...

    关系数据库理论-ppt(实用资料).ppt

    关系数据库理论是数据库管理系统设计的核心概念,它基于数学中的关系模型。关系数据库理论主要关注如何组织和操作...在实际的数据库设计中,需要根据业务需求和数据特性灵活运用这些理论,以达到最佳的数据组织效果。

    数据库设计入门-wrox

    通过对数据库设计的基本概念、步骤、规范化理论以及常见的问题和解决方案的学习,我们可以更好地理解和掌握数据库设计的关键要素。这不仅有助于提高数据库的质量,还能够为后续的软件开发提供坚实的基础。

Global site tag (gtag.js) - Google Analytics