数据表的设计合理化

161 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

1 表的设计合理化

1.1 为什么需要范式

一个软件项目基本都会用到数据库,项目开发前期分析客户的业务和数据处理需求,然后设计数据库的E-R模型图,确认需求信息的正确和完整。再就要将E-R图转换为多张表,表设计后,很可能结构不合理,出现数据重复保存,简称数据的冗余,这对数据的增删改查带来很多后患,所以我们需要审核是否合理,就像施工图设计后,还需要其他机构进行审核图纸是否设计合理一样。

如何审核呢?需要一些有关数据库设计的理论指导规则,这些规则业界简称数据库的范式。数据库范式为数据库的设计、开发提供了一个可参考的典范

1.2 三范式原理

通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解

第一范式: 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解; (只要是关系型数据库都满足1NF)

第二范式: 2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式: 3NF是对字段冗余性的约束,它要求字段没有冗余。没有冗余的数据库设计可以做到。

但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

1.3 什么样的表才满足三范式

表的范式,是首先符合1NF, 才能满足2NF,进一步满足3NF

1NF:即表的列的具有原子性,不可再分解,即列的信息,不能分解,只有数据库是关系型数据库 在这里插入图片描述 2NF:表中的记录是唯一的,就满足2NF,通常我们设计一个主键来实现 在这里插入图片描述 3NF:即表中不要有冗余数据,就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放 在这里插入图片描述在这里插入图片描述 反3NF:在表1->n的情况下,为了提高效率可能会在1这张表设计字段提速 在这里插入图片描述