对于当代数据库的设计原则还需要关联吗?

目录

1 数据库设计的三大范式

2 通俗理解

3 对于现在还需要吗?


1 数据库设计的三大范式

第一范式:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。

第二范式:第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键、主码。

第三范式:满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的;同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。

2 通俗理解

说这么多也就是减少冗余,减少空间,但是这样性能就下降了,其实范式只是为了可以为你理清数据库的关系的,但是有些情况采用范式的代价要比不采用范式的代价大就可以不适用范式。比如增加了程序逻辑,多联接关系表,不常更新或不更新的基础表信息都可以不必须按照范式的规范来设计。

3 对于现在还需要吗?

          对于现在的大多数项目,发展的后期,性能瓶颈都出现在了数据库上,然而在数据库上做优化的空间非常小,相反,在应用上做优化的空间就大多了,比如集群,分布式,缓存等等,可以轻易地把计算压力分解到n台服务器上。对于空间也不是很需要珍惜,对于现在的高并发,如果关联性太强很容易造成奔溃,所以我倾向于去掉所有的关联,为了开发的方便。然后写代码的时候自己留意完整性的问题。

发布了221 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZGL_cyy/article/details/105092871