`
jiaguwen123
  • 浏览: 411425 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

数据库设计三大范式应用实例剖析(3)

阅读更多

这样数据表中的关键字(用户名,发帖ID,回复ID)能决定整行:
(用户名,发帖ID,回复ID) → (email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容)
但是,这样的设计不符合第二范式,因为存在如下决定关系:
(用户名) → (email,主页,电话,联系地址)
(发帖ID) → (发帖标题,发帖内容)
(回复ID) → (回复标题,回复内容)
即非关键字段部分函数依赖于候选关键字段,很明显,这个设计会导致大量的数据冗余和操作异常。

 

我们将数据库表分解为(带下划线的为关键字):
(1) 用户信息:用户名,email,主页,电话,联系地址
(2) 帖子信息:发帖ID,标题,内容
(3) 回复信息:回复ID,标题,内容
(4) 发贴:用户名,发帖ID
(5) 回复:发帖ID,回复ID
这样的设计是满足第1、2、3范式和BCNF范式要求的,但是这样的设计是不是最好的呢?
不一定。
观察可知,第4项“发帖”中的“用户名”和“发帖ID”之间是1:N的关系,因此我们可以把“发帖”合并到第2项的“帖子信息”中;第5项“回复”中的“发帖ID”和“回复ID”之间也是1:N的关系,因此我们可以把“回复”合并到第3项的“回复信息”中。这样可以一定量地减少数据冗余,新的设计为:
(1) 用户信息:用户名,email,主页,电话,联系地址
(2) 帖子信息:用户名,发帖ID,标题,内容
(3) 回复信息:发帖ID,回复ID,标题,内容
数据库表1显然满足所有范式的要求;
数据库表2中存在非关键字段“标题”、“内容”对关键字段“发帖ID”的部分函数依赖,即不满足第二范式的要求,但是这一设计并不会导致数据冗余和操作异常;
数据库表3中也存在非关键字段“标题”、“内容”对关键字段“回复ID”的部分函数依赖,也不满足第二范式的要求,但是与数据库表2相似,这一设计也不会导致数据冗余和操作异常。
由此可以看出,并不一定要强行满足范式的要求,对于1:N关系,当1的一边合并到N的那边后,N的那边就不再满足第二范式了,但是这种设计反而比较好!
对于M:N的关系,不能将M一边或N一边合并到另一边去,这样会导致不符合范式要求,同时导致操作异常和数据冗余。

对于1:1的关系,我们可以将左边的1或者右边的1合并到另一边去,设计导致不符合范式要求,但是并不会导致操作异常和数据冗余。
结论

满足范式要求的数据库设计是结构清晰的,同时可避免数据冗余和操作异常。这并意味着不符合范式要求的设计一定是错误的,在数据库表中存在1:1或1:N关系这种较特殊的情况下,合并导致的不符合范式要求反而是合理的。
在我们设计数据库的时候,一定要时刻考虑范式的要求。

分享到:
评论

相关推荐

    数据库设计三大范式应用实例剖析.pdf

    ### 数据库设计三大范式应用实例剖析 #### 引言 数据库的设计范式是指一系列用于指导数据库设计的规范化准则,其目的是确保数据的完整性、减少数据冗余,并提高数据库的操作效率。遵循这些范式可以避免在数据库...

    数据库设计三大范式应用实例剖析

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新操作异常。第一范式:数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本...

    数据库设计三大范式应用实例剖析.doc

    "数据库设计三大范式应用实例剖析" 数据库设计是数据库系统的核心部分,直接影响着数据库的性能、安全性和可维护性。数据库设计的目的是为了使数据库系统满足某些标准,使得数据库系统更加简洁、明晰、易于维护和...

    简洁、明晰!数据库设计三大范式应用实例剖析

    ### 数据库设计三大范式应用实例剖析 #### 引言 数据库设计的规范性对于确保数据的完整性和一致性至关重要。数据库设计范式是一系列规则,它们帮助开发者创建出既高效又易于维护的数据模型。遵循这些规范能有效...

    计算机等考三级数据库基础:数据库设计三大范式应用实例剖析.docx

    【计算机等考三级数据库基础:数据库设计三大范式应用实例剖析】 数据库设计是构建高效、稳定、易维护的信息系统的基础,而三大范式——第一范式(1NF)、第二范式(2NF)和第三范式(3NF)是确保数据库设计规范的...

    数据库设计三大范式应用实例剖析(doc)

    【数据库设计三大范式】是数据库设计的基本原则,它们确保了数据库的结构合理、数据一致性和减少冗余。这三个范式分别是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 **第一范式(1NF)**要求数据库表中的...

    数据库设计三大范式应用实例剖析1

    数据库设计的三大范式——第一范式(1NF)、第二范式(2NF)和第三范式(3NF)——是构建高效、无冗余、易于维护的数据库的基础。它们确保了数据的一致性和完整性,避免了数据异常,如插入异常、删除异常和更新异常...

    数据库设计的第一范式第二范式第三范式描述和实例

    数据库设计三大范式的应用实例剖析,数据库设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。...

    数据库设计第三范式详解

    如需深入了解数据库设计的第三范式,你可以参考提供的文件《数据库设计三大范式应用实例剖析.docx》和《数据库范式.pdf》。这些文档应该会提供更详细的理论解释和实例分析,帮助你更好地掌握3NF在实际项目中的应用。

    数据库的设计范式实例剖析.doc

    数据库的设计范式是数据库设计的基础原则,用于确保数据的一致性、减少冗余和避免操作异常。这些范式主要包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及更高层次的鲍依斯-科得范式(BCNF)。以下是对...

    SQL 第三范式 规范化设计数据库范例 数据库设计示例

    本资源的标题和描述都是“SQL 第三范式 规范化设计数据库范例 数据库设计示例”,这表明该资源的主要内容是介绍 SQL 第三范式在数据库设计中的应用实例。 标签解释 标签“SQL 第三范式”表明该资源的核心内容是 ...

    数据库设计实例 (网上最全,)

    数据库设计还涉及范式理论,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及更高的BCNF(博科斯范式)等。遵循这些范式可以避免数据冗余,提高数据一致性。例如,如果"Orders"表中包含了用户的所有信息...

    数据库范式(实例分析)

    数据库范式(实例分析) ...通过对“交易订单”实例的分析,我们可以看到,数据库范式是关系数据库设计中的一种重要的规范化方法,旨在消除数据冗余,减少数据之间的依赖关系,提高数据的一致性和完整性。

    数据库SQL 2005原理与设计应用实例课件

    良好的数据库设计需要遵循范式理论,例如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以减少数据冗余和提高数据一致性。 1. 实体关系模型(ER模型):用图形方式表示实体、属性和关系,是数据库设计的起点...

Global site tag (gtag.js) - Google Analytics