数据库范式使用规范

这篇具有很好参考价值的文章主要介绍了数据库范式使用规范。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

好的设计会尽可能少的引入冗余数据,或做有损拆分,而是使用规范的方法找到正确的分解。而范式则是关系数据库实现设计优化的通用手段。范式与关系数据库的关系可以参考笔者之前的WIKI。

【强制】数据库设计优先满足第三范式(3NF),如果无法满足,则尽量满足第二范式(2NF)

在进行数据库设计时,如果能够满足第三范式,要尽量保证第三范式,如果因为性能考虑,需要冗余字段,无法满足第三范式的时候,也要尽量保证第二范式。

第一范式

当关系模式满足第一范式时,该关系模式所有属性的域都是原子的。第一范式要求表中列的值具有原子性,也就是说表中列的值为不可再次拆分的最小数据单位。常见的非原子域的情况有:
(1) 组合属性具有非原子域。如包含子属性street、city、state的属性address。
(2) 使用以集合为值的属性会导致冗余存储数据的设计,进而会进一步导致不一致。如数据库设计者可能不将教师和课程安排之间的联系表示为一个单独的关系teaches,而是尝试为每一个教师存储一个课程段标志号的集合,并为每一个课程段存储一个教师标志号的集合。每当关于哪位教师讲授哪个课程段的数据发生变化时,就需同时更新两个地方:课程表的教师集合和教师表课程集合。

第二范式

关系模式R属于第二范式,如果R中的每个属性A都满足如下准则之一:
(1) 它出现在一个候选码中。
(2) 它没有部分依赖于一个候选码。
函数依赖α → \rightarrow β称为部分依赖(partial dependency)的条件是,存在α的真子集γ使得γ → \rightarrow β。我们称β部分依赖于α。
第二范式要求表中的每条记录都有唯一标识,且不存在部分依赖。所谓部分依赖,就是指所有非唯一标识字段,都必须完全依赖唯一标识,不能只依赖唯一标识的一部分。如果知道唯一标识属性的值,就可以检索到任何表记录的任何属性的任何值。
假设有关系模型R,包含如下属性(学号、课程号、课程名、姓名、学分、成绩),表示学生的课程得分,以学号和课程号为唯一标识,这里姓名属性只依赖学号,学分属性只依赖课程号,所以这里存在部分依赖,不符合第二范式的要求。
第二范式的核心思想是关系模型的内聚,也即拆分思想。对于上面的关系模型,可以进一步细分为如下几个关系模型:
学生表:(学号、姓名)
课程表:(课程号、课程名、学分)
学生课程成绩表:(学号、课程号、成绩)

第三范式

第三范式是比BC范式弱的范式。任何满足BC范式的关系模式也满足第三范式。具有函数依赖集F的关系模式R属于第三范式(third normal form)的条件是:对 F + F^+ F+中所有形如α → \rightarrow β的函数依赖(α ⊆ \subseteq R且β ⊆ \subseteq R),下面至少有一项是成立:
(1) α → \rightarrow β是平凡的函数依赖(即β ⊆ \subseteq α)。
(2) α是模式R的一个超码。
(3) β - α中的每一个属性A都包含于R的一个候选码中。
第三范式要求表中的每一个非主键字段都和主键字段直接相关,也就是说,表中的所有非主键字段不能依赖于其他非主键字段。举例来说,不能存在非主属性A依赖于非主属性B,非主属性B依赖于主键C的情况,即存在"A->B->C"的依赖关系。也就是说,所有非主键属性之间不能有依赖关系,必须相互独立。
假设有关系模型R,包含如下属性(学号、姓名、年龄、学院、学院电话),因为存在传递依赖:(学号) -> (姓名) -> (学院) -> (学院电话),所以不符合第三范式的要求。
第三范式的核心思想是消除所有基于函数依赖能够发现的冗余并保持函数依赖。对于上面的关系模型,可以进一步细分为如下几个关系模型:
学生:(学号、姓名、年龄、学院)
学院:(学院、学院电话)

【建议】在遵循范式规则的同时,也要考虑反范式设计

软件设计没有银弹,并不是说在进行数据库设计时,一定要遵循范式,在特定的场景下,可以考虑反范式设计。

违反第一范式

第一范式强调属性的域的原子性,但是特殊情况下违反第一范式也有其价值。如在含有复杂结构的实体域中,强制使用第一范式会给应用程序带来不必要的负担,如必须编写代码把数据转换成原子形式。从原子形式来回转换数据也会有运行时额外开销。所以,这种场景支持非原子的值很有用。事实上,现代数据库的确支持很多类型的非原子值。如支持创建复合属性、集合、数组等复杂数据类型。

违反第三方式

第三范式强调的是没有冗余数据,因为如果存在冗余,就意味着要保证冗余数据的一致性。但是没有冗余的数据库未必是好的数据库。有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据,达到以空间换时间的目的。

参考

https://zhuanlan.zhihu.com/p/617424106 【MySQL】数据库的设计规范(重点:三大范式)
https://blog.csdn.net/kenhins/article/details/51084815 数据库建表规则(三大范式)
https://cloud.tencent.com/developer/article/2123662 三范式与反范式
https://blog.csdn.net/Systemoutprintl/article/details/108209291 数据库的三大范式
https://www.cnblogs.com/gdwkong/p/9012262.html MySQL设计之三范式的理解文章来源地址https://www.toymoban.com/news/detail-665976.html

到了这里,关于数据库范式使用规范的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL笔记 -- 范式(第一范式、第二范式、第三范式、巴斯范式、反范式)及数据库设计原则

    1.1 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别 。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 目前关系型数据库有六种常见范式,按照范式级别,从低到

    2024年01月18日
    浏览(44)
  • MySQL笔记(一):设计范式、基础概念、数据库定义语言DDL

    MySQL是一种数据库管理系统 (DBMS),是基于客户机-服务器的数据库; 分为两个不同的部分, 服务器软件(MySQL DBMS)是负责所有数据访问和处理的一个文件,这个软件运行在称为数据库服务器的计算机上,与数据文件打交道; 客户机则是与用户打交道的软件,对于用户提出的

    2024年02月03日
    浏览(59)
  • 7种系统设计中的数据库范式

      在设计系统时,选择合适的数据库并明确原因是最重要的决策之一。市场上有许多不同的数据库可供选择,这使得做出正确选择变得困难且令人困惑。每个数据库都有其自己的故事和自己独特的视角。 因此,让我们深入了解可以将数据库分类为的7个广泛范畴: 这些是最流

    2024年02月08日
    浏览(40)
  • 【数据库原理 • 一】数据库系统概念

    前言 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前互联网+与大数据,一切都建立

    2023年04月11日
    浏览(41)
  • [MySQL]数据库原理1,三大范式,E-R图,DataBase,数据库管理系统(DBMS),Relationship,实体、属性、联系 映射基数,关系型数据库,联系的度数等——喵喵期末不挂科

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 认识数据库 常见的数据库管理系统应用案例。       1.数据(Data)       2.数据库(DataBase ,简

    2024年02月04日
    浏览(46)
  • 【数据库系统概论】第三章关系数据库标准语言SQL

    1.数据查询: SELECT:用于选择需要查询的列和行。 FROM:用于指定要查询的表。 WHERE:用于指定查询条件。 GROUP BY:用于按照指定的列对结果进行分组。 HAVING:用于指定分组条件。 ORDER BY:用于指定查询结果的排序方式。 2.数据操纵: INSERT INTO:用于将数据插入表中。 UPDAT

    2024年02月08日
    浏览(118)
  • 数据库三大范式、BC范式、第四范式

    为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 第一范式是最基本的范式。 如果数据库表中的所有字段

    2024年01月18日
    浏览(40)
  • 系统架构设计师---计算机基础知识之数据库系统结构与规范化

    目录 一、基本概念  二、 数据库的结构  三、常用的数据模型         概念数据模型        基本数据模型        面向对象模型 四、数据的规范化      函数依赖       范式   1. 数据库 (DataBase, DB) : 是指长期储存在计算机内的、有组织的、可共享的数据集合。   

    2024年02月12日
    浏览(50)
  • 数据库|数据库范式(待完成)

    数据库的一般操作是通过SET是对数据进行设置,同时用GET去获得存放在数据库中的信息。 产生的背景(没有规范化的坏处/带来的问题) 规范化表格设计的要求 一是要使得数据库易于理解(易于理解才方便在使用过程中快速上手) 易于增强和扩展(在现实开发场景中,往往

    2024年01月17日
    浏览(45)
  • 【数据库基础】数据库介绍和三大范式

           数据库 (DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。        数据库管理系统 (DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包