目录
一、 数据库设计流程
二、 数据库设计规范化
数据库规范化设计的紧张性
第一范式(1st NF):
第二范式(2nd NF):
第三范式(3rd NF):
练习:
总结:
一、 数据库设计流程
1.现实世界的实体模子通过建模转换为信息世界的概念模子(即E-R模子)
2.概念模子经过模子转化,得到数据库世界利用的数据模子(在关系数据库设计中为关系模子 )
3.数据模子进一步规范化,得到数据库结构模子。
二、 数据库设计规范化
数据库规范化设计的紧张性
数据库规范化设计是确保数据库结构高效、准确和同等性的紧张过程。它通过减少数据冗余、制止更新异常、插入异常和删除异常,进步数据的完备性和可靠性。规范化设计将数据组织成更小的、更专业化的表,这些表通过关系相互毗连,使得数据查询和操作更加灵活和高效。
此外,它还简化了数据库的维护工作,降低了数据冗余带来的存储和管理成本。因此,数据库规范化设计是构建高性能、可扩展数据库系统的关键。
废话不多说,直接来看数据库设计的三大范式!
第一范式(1st NF):
要求:第一范式的目的是确保每列的原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满意第一范式(1NF)
下面来解释一下第一范式到底是什么,以上对于第一范式的定义,简单来说就是指表中的每一个字段必须是不可拆分的最小单元。大概这样说另有点抽象,什么是字段不可拆分的最小单元?那我们下面一起来看一张表:
从上表中我们可以看到,表中的Address字段就是很明显的可再拆分字段,由于表中的地点信息是可以继续分割的。如果想要满意第一范式的要求,那就必须将Address这个字段拆分成Country(国家)字段和Address(城市)字段。如下图所示:
总的来说,数据库设计第一范式(1NF)是关系型数据库设计的基础规范,要求数据库表中的每个字段都是原子性的,即不可再分的最小数据单元。它确保每一列的数据都是单一的、不可分割的值,制止了数据冗余和复杂性,为后续的数据库设计范式奠定了基础。满意第一范式可以大概提升数据的同等性和查询服从。
第二范式(2nd NF):
如果一个关系满意1NF,并且出任何一个非主键字段的数值都依靠于主键字段,则满意第二范式(2NF)
第二范式要求每个表只描述一件变乱
显而易见,第二范式要求每个表中的全部非主键字段都必须依靠于主键字段,而且要求全部字段都描述的是同一件变乱大概同一个功能,看下面这张表就知道了,先看看它是否符合第二范式的要求呢?
很显然,表中的非主键 “学分” 字段完全依靠于另一个非主键 “课程名称” 字段,也就是说,每一门课程能修多少的学分是由课程来决定的,而不是由主键( “学号” 字段)来决定的,也就是说学分并不应该是选课关系表中。以是,我们必须将 “选课关系表” 中的 “学分” 字段删除,如果一定需要 “学分” 字段的话,可以再数据库中另外创建一个 “课程表” 用来管理课程名称和学分之间的关系。这就是数据库设计第二范式要求的数据库字段统一性的表现。
下面我们再来看以下这张表:
很明显,不用我说都能知道,首先 “产品规格” 字段并不属于主键 “订单编号” 字段,其次,这个表并不是统一的,也就是这个表并不只描述一件变乱。上表中描述的是两件变乱,也就是订单和产品在这个表中都包括了,以是最好要将这个表分成两个表,如下图所示:
一个表交Orders表只描述订单,另有一个表叫Products表,只描述商品,将这两个表拆分出来,然后再添加一个订单明细表,将这两个表关联起来即可。
第三范式(3rd NF):
若一个关系满意第一范式(1NF)和第二范式(2NF),任何两个非主键字段的数值之间不存在函数依靠关系则满意第三范式(3NF)
很明显,这条规范就是要求你在设计数据库的时间,各个字段不能存在运算关系,我们一起来看一下以下这张表就明确了:
在上表中,“金额” 字段明显是通过 “单价” 字段和 “数量” 字段计算得来的,即单价 * 数量 = 金额。以是这个表并不符合第三范式,应该去掉 “金额” 字段才可以。
如果你要问,那如果功能中需要计算总价,也就是金额该怎么办呢?这种环境下,我们也不能在数据库中添加 “金额” 字段,而是应该通过将数据查出来之后,利用代码去计算它们的金额,这样才能既满意第三范式的要求,又能实现功能的要求。
练习:
学习了三大范式之后,你可以通过以下这个例子来看看是否真正掌握了三大范式的要领。
下面是两个同学设计的数据库,请你看看谁的更符合呢?
闲话少说,应该是B同学的设计更好一些,举个例子:
很显然,先来看A同学的设计结果:
A:6(字段)* 5000(同学)* 10(课程)=300000(个数据)
按照A同学的设计来看的话,记载5000个同学的10门成绩就要产生30万条数据
B:学生表:3(字段)* 5000(学生)= 15000(个数据)
课程表:2(字段)* 10(课程) = 20(个数据)
成绩表:3(字段)* 10(课程)* 5000(学生) = 150000(个数据)
数据总计:15000 + 20 + 150000 = 165020 (个数据)
以是很明显,A与B方案数据差了300000 - 165020 = 134980(个数据),以是由此可见数据库设计对于现实中的应用有多紧张,只是由于设计上的不同,就多产生了比其他方案多了快要一倍的数据,这不仅会加重数据库和服务器的压力,而且也不方便进行管理。
总结:
数据库设计三大范式(1NF、2NF、3NF)的紧张性在于确保数据的高效、稳定和易于维护。第一范式要求每个字段都是原子的,制止数据冗余;第二范式要求每个非主键字段完全依靠于主键,进步数据同等性;第三范式要求非主键字段不依靠于其他非主键字段,进一步减少冗余,提升查询服从。三大范式共同构建了高效、稳定且易于维护的数据结构,是数据库设计的基石。
如果文章对您有资助,还请您点赞支持
感谢您的阅读,接待您在评论区留言指正分享
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |