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

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/2869551 关系数据库设计理论-->3NF 函数依赖 1.函数依赖定义 A-> B,即  “ A函数决定B ”   ,A称为决定因素。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/2869551

关系数据库设计理论-->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范式

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
6月前
|
存储 关系型数据库 数据库
关系型数据库设计规范第一范式(1NF)
【5月更文挑战第14天】关系型数据库设计规范第一范式(1NF
185 8
|
6月前
|
关系型数据库 数据库
关系型数据库设计规范第二范式(2NF)
【5月更文挑战第14天】关系型数据库设计规范第二范式(2NF)
249 7
|
6月前
|
关系型数据库 数据库
关系型数据库设计规范第三范式(3NF)
【5月更文挑战第14天】关系型数据库设计规范第三范式(3NF)
175 3
|
JavaScript 数据库 Python
数据库系统概论——函数依赖、码和范式(1NF、2NF、3NF、BCNF)详解
关系模式由五部分组成,即它是一个五元组: R(U,D,DOM,F)R(U, D, DOM, F)R(U,D,DOM,F)关系模式R(U,D,DOM,F)R(U, D, DOM, F)R(U,D,DOM,F)中,DDD和DOMDOMDOM与逻辑结构设计关系不大,因此,将关系模式简化为一个三元组:当且仅当UUU上的一个关系rrr 满足FFF时,rrr称为关系模式R(U,F)R(U, F)R(U,F)的一个。设R(U)R(U)R(U)是一个属性集UUU上的关系模式,XXX和YYY是UUU的子集。若对于R(U)R(
435 0
数据库系统概论——函数依赖、码和范式(1NF、2NF、3NF、BCNF)详解
|
3月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
3月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
78 2
|
3月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
93 2
|
3月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
80 0
|
4月前
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。