数据库设计三大范式

xiaoxiao2021-02-28  15

关系数据库中的关系必须满足一定的要求,即满足不同的范式。 关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。 设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库。这些规范被称作范式。越高的范式数据库的冗余度就越低。

1NF 属性的原子性

对属性的原子性约束,要求属性具有原子性,不可再分解,即数据表的每一列都是不可分割的原子值。 比如“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对“地址”中某一部分操作的时候将非常方便。

2NF 记录的唯一性

要求属性完全依赖于主键,即数据表中的每一列都和主键相关,而不能只与主键的某一部分相关(针对联合主键而言),也就是说一个数据表中只能保存“一类数据”。

3NF 每列都和主键直接相关,而不是间接相关

数据不能存在传递关系,即每个属性都和主键有直接关系而不是间接关系。 对字段冗余性的约束,即任何字段不能由其他字段派生而来。


数据库设计的实用原则:在数据冗余和处理速度之间找到合适的平衡点。

满足第三范式的数据库设计,往往不是最好的设计。为了提高数据库的运行效率,往往需要降低范式标准:适当增加冗余,达到以空间换时间的目的。

通常情况下,一个实体不能既无主键,又无外键。主键与外键的配对,表示实体之间的连接。

派生性冗余是为了提高数据处理速度,而重复性冗余会增加数据的不一致性。

转载请注明原文地址: https://www.6miu.com/read-1600376.html

最新回复(0)