当前位置: 首页 > news >正文

数据库原理及应用_第3篇数据库设计_第9章关系模型规范化设计理论_关系模式规范化

前言

        "<数据库原理及应用>(MySQL版)".以下称为"本书"中第9.4节内容

引入

        9.3节讲候选键,用前面的知识, 纯理论的东西就此略过

        本书P234:关系模式的好坏衡量标准:关系模式的范式.

关系模式的回顾

        其中,非主属性可由主属性推导得出,即:主属性→非主属性

        注意:候选键是由主属性组成,候选键之间的主属性可以交叉,如有三个主属性A,B,C,则(AB),(AC)都可以做候选键.

9.4.1范式及规范化

范式概念

        范式(Normal Form,NF)指关系模式的规范形式.

        关系模式的范式有6个,即1NF(第一范式,以下类同),2NF,3NF,BCNF,4NF和5NF

        范式之间是包含关系,高级范式是低级范式的特例.如2NF相对于1NF是高级别范式,以此类推.

规范化

        将一个给定的关系模式转换成某种范式的过程称为关系模式的规范化过程.

        规范化一般采用分解的办法,将低级别范式向高级别范式转换,使关系的语义单纯化.目的是消除异常

        理想的规范化程度是范式级别越高,规范化程度越高.但也不是越高越好.设计关系模式时,一般达到3NF或BCNF即可.

9.4.2完全函数依赖,部分函数依赖和传递函数依赖

        这部分是研究关系模式范式的基础,结合图来进行理解.示例图如下(AB是联合候选键):

主属性非主属性
候选键1候选键2\\
ABCDE

        示例图的函数依赖有:(A,B)→DE,C→DE(AB和C之间的没有函数依赖)

        定义9.4 设R是一个具有属性集合U的关系模式,X和Y是U的子集.

1.完全函数依赖

        如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X

        ---对于完全函数依赖,示例图中不能有A→DE或者B→DE存在.

2.部分函数依赖

        如果X→Y,对于X的任何一个真子集Z,Z→Y都成立,则称Y部分函数依赖于X.

        ---对于部分函数依赖,示例图中有A→DE或者B→DE存在.

=============================内容分割线↓===================================

        对定理中的"任何一个",按字面意思是A→DE和B→DE两者同时存在,但实际上有一个真子集存在就可以了.

=============================内容分割线↑===================================

完全函数依赖和部分函数依赖举例

        例9-10给了函数依赖:1.(学号,课程号)→成绩,2.(学号,课程号)→系名

        分析:1是完全函数依赖,学号和课程号唯一,确定成绩.

                2是部分函数依赖,学号唯一,确定系名.课程号和系名无关.根据函数依赖的推导,2的写法不算错

3.传递函数依赖

        定义9.5 设R是一个具有属性集合U的关系模式,X,Y,Z是U的子集且是不同属性集,如果X→Y,Y→X不成立,Y→Z,则称Z传递函数依赖于X.记号略.

        ---对于传递函数依赖,示例图中表示: (A,B)→D,D→E.

直接函数依赖

        在传递函数依赖的概念中,提到了直接函数依赖:X→Y,Y→X同时成立.

        概念和离散数学中的"等价于"相似

        ---这种情况很容易解决,单独列一张表即可.举例:系名和系主任皆唯一的情况.

三种函数依赖的比较

        完全函数依赖是一种"理想"的表,没有数据冗余.部分函数依赖有部分数据冗余.注意,如本书前面所述,数据冗余并不是完全不可以.

9.4.3以函数为依赖的范式     

第一范式(1NF)         

        本书P235中间,定义9.6所在段落后的第二段:如果要将非第一范式的关系转换为1NF关系,只需将复合属性变为简单属性即可.

        ---前面帖子https://blog.csdn.net/jllws1/article/details/152211009?spm=1011.2124.3001.6209提到的将复合属性化成简单属性的两种方法,这里是第一种"摊开".不过帖子中提到第二种方法建立表也可以选择.因为第一范式是最基本的要求,所以没有多少可讲的内容.

第二范式(2NF)

        本书P236:定义9.7 如果关系模式R是1NF,而且R中所有的非主要属性都完全函数依赖于任意一个候选键,则称R是第二范式,记作2NF.

        2NF实质是不存在非主属性"部分函数依赖"于候选键的情况.消除表中的部分函数依赖.

        ---2NF的目的是消除表中的部分函数依赖,撇开晦涩的理论,书上的例子可以看.笔者用示例图和Armstrong公理推导如下:        

        1.示例图如果(A,B)→(C,D),同时存在A→C和B→D(部分函数依赖),则原表分解成两张表

        2.Armstrong公理推导

        现在有张表,函数依赖为AX→BY,同时存在A→B和X→Y.原表形式如下:

主属性非主属性
主键\\
ABXY

        1)根据本书P230中的B2分解性:AX→BY推导出:AX→B和 AX→Y,

        2)根据A→B,可以删除AX→B,根据X→Y,可以删除 AX→Y(源自于例9-4和例9-5中的推导).所以函数依赖变成A→B和X→Y.

第三范式(3NF)

        本书P237:定义9.8 如果关系模式R是2NF,而且R中所有的非主要属性对任何候选键都不存在传递函数依赖,则称R是第三范式,记作3NF.

        2NF关系向3NF转换的原则是消除传递函数依赖.

        ---本书例9-14的例子是很典型的例子,背下来也可以.

            用法:当传递函数依赖:A→B,B→C,A→C同时存在,去掉A→C,留下A→B,B→C

            注意:细节,经过3NF分解,得到一个主表,被分解的表成为一个从表,可以和前面的知识联系.

BCNF范式

        本书P238定义9.9讲了BCNF范式,可以看看.

        ---3NF关系向BCNF转换的原则是消除主属性对候选键的部分和传递函数依赖.

            例9-15是个典型例子,理解了之后也就会用BCNF范式了,本书P238列出了例9-15函数依赖,这里用到了离散数学中的推导方法,如下表

函数依赖代号SidCidGradeTname
自定义代号ABCD

        根据已知函数依赖,写出代号:

                (AB)→C,(AD)→C,D→B

        这样看得很清楚,根据D→B,前两项可以略去一项.本书略去了(AD)→C,留下了(AB)→C,因为符合平常的习惯:根据学号和课号就能查到课目的成绩.实际上用另一种方法也不会出错,不过这种更好.

        例9-16是个综合例子,分析了3NF的写法

多值依赖及第四范式(4NF)

        根据本书说明,数据库设计到3NF或BCNF基本上能满足需要了.从另一个角度来说,到了BCNF,关系模式不会有多长(属性个数不多),所以分解的工作量也不大.下面的内容从4NF到5NF有兴趣可以深入.

        笔者认为"硬凑"(一个一个去试)也可以.."严谨"是编程学习是一个基本要求,这样"玩"的机会属实不多

        BCNF→分解→4NF

小结

        根据E-R图设计关系模式,关系模式需要分析其函数依赖,并将关系模式规范化.本章内容的理论深,但用起来也不是太难.

        

http://www.dtcms.com/a/446980.html

相关文章:

  • wordpress网站 添加微信支付专注郑州网站建设
  • 自己做网站平台淘宝客网站如何做推广
  • fastboot getvar all 输出完整解析
  • 动易cms网站后台很慢是什么原因asp网站首页
  • 上高做网站公司公司简介ppt内容
  • 基于ssh架构网站开发宣传推广方案怎么写
  • unity网站后台怎么做百度网站数据统计怎么做
  • Coduck模拟三
  • 用户建立自己的数据类型
  • 360 的网站链接怎么做腾讯cdc用wordpress
  • 给男票做网站表白的软件企业网站首页应如何布局
  • 网站建设前端网站建设与维护百科
  • 英文服装商城网站建设苏中建设官方网站
  • 哪个网站可以做身份核验网站 扩展
  • 网站优化工作安排网站怎么做静态化
  • 软件架构中的隐形支柱:如何避免非功能性需求陷阱
  • 有人用我的企业做网站nginx wordpress ssl
  • 大学 英文网站建设网站短链接怎么做的
  • 唤醒手腕 2025 年最新 solidity 语言区块链智能合约详细教程(更新中)
  • 网站优化 seo和sem综合型网站建设
  • 国内做网站最大的公司网站开发合同知识产权
  • 网站建设及管理使用情况汇报为什么要买wordpress会员
  • 优秀的网站开发苏州网络推广去苏州聚尚网络
  • 基于jquery做的网站wordpress 文章置顶
  • 网站空间速度免费搭建永久网站步骤
  • SVG 路径:深入解析与使用技巧
  • Spring Security 详解:从基础认证到多表权限实战(初学者指南)
  • 惠州市企业网站seo点击软件小型公司网络搭建
  • 廊坊网站群发关键词seo外包大型公司
  • 前端密码加密方案全解析