数据库原理及MySQL应用 | 关系规范化(附限免视频)

2023-01-16 0 528

原副标题:统计资料库基本上原理及MySQL应用领域 | 亲密关系制度化(附限免音频)

数据库原理及MySQL应用 | 关系规范化(附限免视频)

亲密统计资料库系统的统计数据商业模式内部结构设计失当,就会再次出现统计数据输入输出,进而引致操作方式极度。对亲密关系商业模式展开本体论强化,使统计数据的嫩模齐最强化和运转工作效率最轻化。

01

第三本体论

第三本体论(First Normal Form)全称1NF,是对亲密关系商业模式的最基本上明确要求。换句话说,一个三维表单,多于满足用户1NF的明确要求,就可以被称作亲密关系。

假如亲密关系商业模式R的每一特性都是氢原子的,即每一特性相关联的域中的每一原素都是不容福兰县的最轻模块,则称R归属于第三本体论,记为R∈1NF。

如表2-20右图的三维表单中,虽然每人客人做为带队,每人客人能聚合数张订货,而两张订货中也能包涵多本书刊,因此在orderid、orderdate、bookid、title、quantity、ctgcode、ctgnamequarterfinal,特别针对每带队都可能将再次出现数个值,换句话说那些quarterfinal放置的值不具备氢原子性,存有“表中表”的内部结构,因此那个三维表单不满足用户第三本体论的明确要求,无法放置在亲密统计资料库系统中。

表2-20书刊产品销售表booksale

对该三维表单展开制度化处置,能获得表2-21右图的满足用户第三本体论的亲密关系。

表2-21满足用户第三本体论的图书产品销售亲密关系booksale

透过对表2-21右图的亲密关系预测由此可知,统计数据间存有如下表所示联络:

(1) 每人客人能保有数张订货,两张订货只归属于一名客人。

(2) 两张订货里能包涵余册书刊,第一册书刊也能被包涵在数张订货里。

(3) 第一册书刊归属于一个类别,每一类别下能有余册书刊。

在那个亲密关系中,任意一个orderid和bookid特性的值的组合都能唯一地确定一条书刊产品销售记录,因此(orderid, bookid)是那个亲密关系的候选键。(orderid, bookid)是那个亲密关系唯一的候选键,能将其视为该亲密关系的主键,那个亲密关系的亲密关系商业模式能描述为:

Booksale(cstid, cstname, orderid, orderdate, bookid, title, quantity, ctgcode, ctgname)

02

操作方式极度问题

虽然亲密关系商业模式Booksale满足用户第三本体论,但是该亲密关系商业模式下的具体亲密关系中可能存有着大量的统计数据输入输出。统计数据输入输出不仅会占用更多的存储空间,而且在对亲密关系展开插入、更新、删除操作方式的过程中还可能将发生操作方式极度,引发统计数据不一致的问题。

1. 插入极度

假如有一名客人想要注册为会员,但是他还从未购书,因为该记录缺少主键,因此这位客人的信息无法插入到该亲密关系中。换句话说,需要插入到亲密关系中的记录无法插入到亲密关系中。

假如将booksale亲密关系中的统计数据分别存储在如表2-22~表2-26右图的5个亲密关系中,那么就能将这位会员的信息直接插入到亲密关系customers中,解决想要插入记录而无法插入的问题。

数据库原理及MySQL应用 | 关系规范化(附限免视频)

相关联的亲密关系商业模式为:

Customers(cstid, cstname)

Orders(orderid, orderdate, cstid[FK])

Books(bookid, title, ctgcode[FK])

Categories(ctgcode, ctgname)

Orderitems(orderid[FK], bookid[FK], quantity)

2. 删除极度

在书刊产品销售booksale亲密关系中,假如将订货号orderid为4的订货信息删除,那么客人“李明宇”的信息也会被同时删除,或者说“李明宇”的信息就无法保存有那个亲密关系中了。换句话说,不希望删除的统计数据被删除了。

假如将亲密关系分解为5个“小”亲密关系,则删除orderid为4的订货记录只需要在orders亲密关系中删除相关联的元组即可,不会影响到客人信息的存储,也就避免了删除极度的问题。

3. 更新复杂

当需要更新亲密关系中的统计数据时,例如更新书号bookid为10号的书刊的书名title的时候,因为该书刊的信息重复存储,因此需要将所有书刊的书名title同时正确更新,否则就会再次出现统计数据不一致的问题。

假如将亲密关系分解为5个“小”亲密关系,则更新10号书刊的书名的操作方式仅需在books亲密关系中更新一个元组,不会造成更新后统计数据不一致的情况发生。

亲密关系商业模式booksale和由该亲密关系商业模式分解获得的5个亲密关系商业模式,都是满足用户1NF的亲密关系,都能用来在统计资料库中放置相关统计数据,但是它们有各自的优缺点。

同样的查询操作方式,假如透过分解后的5个亲密关系展开查询,则需要先将亲密关系连接起来再展开查询。

由于连接运算在统计资料库操作方式中既消耗系统资源又工作效率非常低,因此假如将亲密关系商业模式分解得过于“小”,会影响统计资料库的查询操作方式性能。

03

函数依赖

函数依赖是最重要的一种统计数据依赖,在对亲密关系商业模式展开制度化处置的过程中,主要使用函数依赖来预测亲密关系中存有的统计数据依赖特点。

1. 函数依赖的概念

假设X和Y是亲密关系商业模式R中的两个不同的特性或特性组,假如对于X中的每一个具体值,Y中都有唯一的具体值与之相关联,则称Y函数依赖于X,或X函数决定Y,记为X→Y,其中X被称作决定因素。

当X→Y,并且Y包涵于X时,称X→Y是平凡函数依赖;当X→Y,并且Y不包涵于X时,称X→Y是非平凡函数依赖。这里讨论的是非平凡函数依赖。

以Booksale亲密关系商业模式为例,因为对于特性cstid中的每一个具体值,在特性cstname中都多于唯一一个值与之相关联,因此cstid函数决定cstname,即cstid→cstname。但反过来,因为可能将存有客人重名的情况,对于特性cstname中的一个值,可能将相关联特性cstid中的数个值,因此cstname无法函数决定cstid,记为 。

虽然一张订货里的一册书刊的产品销售数量是一定的,因此orderid和bookid组合起来能决定quantity,即(orderid,bookid)→quantity。

2. 部分函数依赖与完全函数依赖

假设X→Y是亲密关系商业模式R中的一个函数依赖,假如存有X的真子集X′,使X′→Y成立,则称Y部分依赖于X,记为

数据库原理及MySQL应用 | 关系规范化(附限免视频)

;假如在X中找不到一个真子集X′,使X′→Y成立,则称Y完全依赖于X。

在亲密关系商业模式Booksale中 就是一个部分函数依赖。因为决定因素(orderid, bookid)的一个真子集bookid就能函数决定price,即bookid→price。

(orderid,bookid)→quantity是一个完全函数依赖,因为决定因素的任何一个真子集都无法函数决定quantity。

3. 传递函数依赖

在亲密关系商业模式R中,假如存有函数依赖X→Y,Y→Z,而

数据库原理及MySQL应用 | 关系规范化(附限免视频)

,则称Z传递依赖于X,记为

数据库原理及MySQL应用 | 关系规范化(附限免视频)

在亲密关系商业模式Booksale中,bookid→ctgcode,ctgcode→ctgname,而 ,因此 是一个传递函数依赖。

提示/

因为部分函数依赖一定是传递函数依赖,因此假如亲密关系商业模式中不存有传递函数依赖,则一定不存有部分函数依赖。

04

第二本体论

包涵在主键中的特性称作主特性;不包涵在主键中的特性称作非主属性。

假如亲密关系商业模式R归属于1NF,并且每一非主特性都完全函数依赖于R的主键,那么称R归属于第二本体论,记为R∈2NF。

在亲密关系商业模式Booksale中,除了特性quantity对主键(orderid, bookid)的函数依赖是完全函数依赖以外,其他非主特性对主键的函数依赖都是部分函数依赖,因为主键的真子集orderid能函数决定特性orderdate、cstid和cstname;主键的另外一个真子集bookid能函数决定特性title、ctgcode和ctgname。即:

虽然该亲密关系商业模式中存有着非主特性对主键的部分函数依赖,因此那个亲密关系商业模式不归属于第二本体论。

为了将亲密关系商业模式规范到2NF,能对亲密关系商业模式做如下处置:

(1) 将那些部分依赖于主键的特性从亲密关系商业模式中取出,再复制它们所依赖的主特性做为新亲密关系商业模式的主键来构成一个新的亲密关系商业模式。

(2) 剩下的特性构成另一个亲密关系商业模式。

例如,将特性orderdate、cstid和cstname从原亲密关系商业模式中取出,再复制它们所依赖的主特性orderid做为新亲密关系商业模式的主键,构成新亲密关系商业模式Orders(orderid, orderdate, cstid, cstname);将特性title、ctgcode和ctgname从原亲密关系商业模式中取出,再复制它们所依赖的主特性bookid做为新亲密关系商业模式的主键,构成新亲密关系商业模式Books(bookid, title, ctgcode, ctgname);原亲密关系商业模式中剩余的特性构成一个新的亲密关系商业模式OrderItems(orderid[FK], bookid[FK], quantity)。

因此亲密关系商业模式Booksale能规范为以下三个亲密关系商业模式。这三个亲密关系商业模式不存有非主特性对主键的部分函数依赖,因此它们都是2NF的亲密关系商业模式。分解获得的这三个新的亲密关系商业模式能透过外键连接起来。

分解后的亲密关系商业模式仍然存有统计数据输入输出,例如在亲密关系商业模式Orders中,一名客人能有数张订货,因此客人的信息会重复存储;在亲密关系商业模式Books中,一个类别下能有余册书刊,那么书刊类别信息会重复存储。

05

第三本体论

假如亲密关系商业模式R归属于1NF,并且每一非主特性都不传递函数依赖于R的主键,那么称R归属于第三本体论,记为R∈3NF。

在亲密关系商业模式Orders中,主键orderid函数决定cstid,cstid函数决定cstname,而cstid无法函数决定orderid,因此cstname对主键orderid的函数依赖是传递函数依赖,即:

虽然亲密关系商业模式Orders中存有着非主特性对主键的传递函数依赖,因此那个亲密关系商业模式不满足用户3NF。

为了将亲密关系商业模式规范到3NF,能对亲密关系商业模式做如下表所示处理:

(1) 将那些传递函数依赖于主键的特性从亲密关系商业模式中取出,再复制它们所直接函数依赖的特性做为新亲密关系商业模式的主键来构成一个新的亲密关系商业模式。

(2) 剩下的特性构成另一个新亲密关系商业模式。

例如,将特性cstname从原亲密关系商业模式中取出,再复制它所直接函数依赖的特性cstid做为新亲密关系商业模式的主键,构成新亲密关系商业模式Customers(cstid, cstname);原亲密关系商业模式中剩余的特性构成一个新的亲密关系商业模式Orders(orderid, orderdate, cstid[FK])。

预测亲密关系商业模式Books,包涵如下表所示函数依赖:

亲密关系商业模式Books同样存有非主特性对主键的传递函数依赖,因此该亲密关系商业模式不满足用户3NF。透过同样的方法分解亲密关系商业模式Books获得两个新亲密关系商业模式。最终,总共获得5个新亲密关系商业模式,如下表所示右图。具体亲密关系和亲密关系中的统计数据如表2-22~表2-26右图。

这5个分解获得的亲密关系商业模式都不存有非主特性对主键的传递函数依赖,因此它们都是3NF的亲密关系商业模式。分解获得的这5个新的亲密关系商业模式能透过外键连接起来。

最早被提出的亲密关系本体论是第三本体论(1NF)、第二本体论(2NF)和第三本体论(3NF),接着由R. Boyce和E. F. Codd于1974年共同提出了Boyce-Codd本体论(BCNF),那个亲密关系本体论是对3NF的增强定义。以上4个亲密关系本体论中除了1NF以外的3个亲密关系本体论都是基于特性间的函数依赖提出的。比BCNF级别更高的亲密关系本体论还包括1977年提出的第四本体论(4NF)和1979年提出的第五本体论(5NF),其中4NF建立在多值依赖的基础上,5NF建立在连接依赖的基础上。图2-6是各个亲密关系本体论间的亲密关系。

数据库原理及MySQL应用 | 关系规范化(附限免视频)

图2-6亲密关系本体论间的亲密关系

在对亲密关系商业模式展开内部结构设计的时候,并不是制度化程度越高的亲密关系商业模式就越好。假如对统计资料库的操作方式主要是查询,而更新较少时,为了提高工作效率,宁可保留适当的统计数据输入输出而不要将亲密关系商业模式分解得太小,否则为了查询统计数据,常常要做大量的连接运算,反而会花费大量的时间,降低查询的工作效率;当对统计资料库中的统计数据操作方式主要是插入、更新和删除操作方式时,为了避免统计数据操作方式极度的发生,应该尽量将亲密关系商业模式规范到3NF。

扫码观看讲解音频,限免三天

06

参考书籍

《统计资料库基本上原理及MySQL应用领域(MySQL版 微课音频版)》

作者:曲彤安,王秀英,廖旭金

定价:59.8元

扫码优惠购书

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务