本文主要是介绍数据规范化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
软件系统经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插人异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。
通常用“范式(normal forms)"定义消除数据冗余的程度。第一范式(1 NF)数据冗余程度最大,第五范式(5 NF)数据冗余程度最小。但是,第一,范式级别越高,存储同样数据就需要分解成更多张表,因此,“存储自身”的过程也就越复杂。第二,随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此,在需求变化时数据的稳定性较差。第三,范式级别提高则需要访问的表增多,因此性能(速度)将下降。从实用角度看来,在大多数场合选用第三范式都比较恰当。通常按照属性间的依赖情况区分规范化的程度。属性间依赖情况满足不同程度要求的为不同范式,满足最低要求的是第一范式,在第一范式中再进一步满足一些要求的为第二范式,其余依此类推。下面给出第一、第二和第三范式的定义。
(1) 第一范式 每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。
(2) 第二范式 满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。
(3) 第三范式 符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。
这篇关于数据规范化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!