数据库设计原则之三大范式

简介: 首先声明,本文为笔记记录。可能不适合作为博客文章,所以如果看着不舒服,还望“另请高明”,(^__^) 嘻嘻……数据库设计的时候有三大范式,现简述如下:第一范式(1NF): 原子性,数据不可再分原则就是使得表列为原子性,每一个字段内容不能再分解。

首先声明,本文为笔记记录。可能不适合作为博客文章,所以如果看着不舒服,还望“另请高明”,(^__^) 嘻嘻……

数据库设计的时候有三大范式,现简述如下:

第一范式(1NF): 原子性,数据不可再分

原则就是使得表列为原子性,每一个字段内容不能再分解。

第二范式(2NF):唯一性,消除部分依赖

第二范式要求满足如下两个要求,

每一行数据具有唯一性

这一点,只要是有主键就可以实现。因为主键的存在使得每一行数据都具有唯一性。

消除数据之间的部分依赖

依赖的定义:主键确定了其他字段,其他字段依赖于主键而存在。

部分依赖: 某个字段值依赖于部分字段,则发生这种现象的前提是该表主键位置拥有多个字段。

完全依赖: 某个字段完全依赖与主键的所有字段。当一个表的主键仅有一个字段时,必然是完全依赖。

解决办法:

将部分依赖转换成完全依赖,拆表!

将原来存在部分依赖的表拆分,简单来说就是该表主键有几个字段,就拆成(几个+1)的表,前几个字段将分别作为其所在表的唯一主键,即成为完全依赖模式。最后一个表为之前的那几个字段并存的联合主键。用于维护表与表之间的关系。

第三范式(3NF):独立性,消除传递依赖

也就是说,有些字段的值能够使用现有的表列来计算得出,这样的字段就属于冗余字段,会产生传递依赖现象。

解决办法

将传递依赖部分提取出来,拆表!

将原来的表中存在传递依赖的字段提取出来,新建一个表。该新表的主键即为原表中被依赖的那个字段。此字段在原来的表中将作为外键而存在。

目录
相关文章
|
4月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
118 0
|
28天前
|
存储 程序员 数据库
数据库建表原则
【8月更文挑战第24天】数据库设计中的关键概念和技术,包括原始单据与实体间的关系、主键与外键的作用、基本表的特点、范式标准的应用等。详细解释了一对一、一对多及多对多关系,并通过实例说明如何处理多对多关系。讨论了主键与外键的设计原则,以及如何根据第三范式优化表结构。介绍了基本表的四大特征,并强调了理解这些特征的重要性。阐述了范式标准在设计中的作用,并提出了通过增加冗余提高运行效率的方法。
40 9
|
1月前
|
存储 数据库
数据库设计三范式
三范式设计的最终目的都是为了减少我们的工作量,所以说,尽管三范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在三范式中,更多的是应该从项目中出发,设计出合理的表结构。
|
22天前
|
存储 程序员 数据库
数据库建表原则
【8月更文挑战第30天】原始单据与实体间存在一对一、一对多或多对多的关系,明确这点有助于设计录入界面。实体需具备主键或外键,在E-R图中,叶子节点实体可无主键但必有外键。基本表具原子性、原始性、演绎性和稳定性,区别于中间表和临时表。范式标准方面,基本表应尽量满足第三范式,但在实际设计中,适度冗余可提升效率。此外,处理多对多关系需引入第三个实体,主键设计建议采用无物理意义的数字串。视图技术用于数据综合处理和保密,而中间表和临时表则分别用于统计数据和临时记录。数据库设计中,完整性约束涉及域、参照及用户定义完整性,遵循“三少原则”可避免打补丁式设计,提高系统性能。
15 4
|
23天前
|
存储 程序员 数据库
数据库建表原则
【8月更文挑战第29天】数据库建表原则
20 1
|
28天前
|
存储 算法 Java
数据库范式与设计原则
数据库范式与设计原则
42 0
|
2月前
|
存储 关系型数据库 数据库
关系型数据库设计范式:深入理解与实践
【7月更文挑战第20天】关系型数据库设计范式是数据库设计中的重要指导原则,它通过一系列规范来减少数据冗余、提高数据一致性和优化查询性能。在实际应用中,我们应该根据具体需求和数据特点,灵活选择和应用不同的范式级别,以构建高效、可靠和可扩展的数据库系统。同时,也需要注意范式设计带来的挑战和限制,根据实际情况进行权衡和调整。
|
2月前
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
2月前
|
存储 Java 数据管理
数据库三范式设计与规范化过程详解
数据库三范式设计与规范化过程详解