当前位置: 首页 > 科技观察

关系型数据库设计规范的理解

时间:2023-03-13 06:15:35 科技观察

前言在设计关系型数据库时,我们通过课堂上的学习了解到,我们需要参考不同的范式和原则来设计表结构和表关系。在课堂上,我们更注重设计符合范式,保证数据不冗余。但是在实际的开发设计中,我们往往要从更多的角度去思考数据库的设计原则,根据不同的需求场景,从不同的角度去思考。比如开发是否方便,表结构是否易于维护,查询效率是否满足要求等等。一般设计原则在企业级应用数据库中,对数据冗余有一定的容忍度,但往往对数据库增删改查的效率有很高的要求。这个时候,我们之前遵循的一些原则就要不同程度的改变了。例如,基于少冗余的原则,三种参考设计范式在面对增删改查数据库的效率时,可能不得不做出一些妥协。在设计一个能容忍冗余并注重效率的数据库时,个人认为需要考虑以下几个方面:1、每张表的增删改查范围尽可能在这张表内完成。这个原则也有些违背三种范式。但是这样做的好处是非常明显的。首先,从开销的角度来看,增删改查的开销通常比多表要低。第二,这么方便的开发,在数据入库的过程中,如果涉及到多表操作,表越多,处理业务逻辑的代码就越多,开发难度就越大。第三,可维护性高。这一点和第二点有重叠,但是因为单表设计的业务代码会比较简单,以后维护起来也比较容易。维护也可能非常困难。2、通过主键体现对应关系,要体现流程顺序。企业级应用最大的问题就是梳理业务,理清业务模块之间的对应关系。在数据库中,表中包含的主键不仅要体现对应关系,还要体现生成顺序或处理顺序的逻辑。3、每张表尽量代表一个业务模块,并尽量记录模块中的所有字段。这个原则是从第一个原则推导出来的,因为这张表的增删改查成本很小,所以如果一张表足够内聚,那么这张表应该尽量记录模块中的所有字段。Tips:如果后面业务模块的字段太多,可以分表,但是如果一开始就单独设计,处理起来会很麻烦。4.中间表不能随意使用。在完全遵循三种范式的前提下,我们的设计会有很多中间表(关系表)。但是如果两个表中的一个经常被增删改查,那么这样的设计从效率的角度来说是不合格的。这样的设计确实会减少很多数据冗余,但是也会大大增加每条数据的增删改查开销。所以从一般的企业级应用场景来看,不能随意使用中间表。通过了解使用中间表的缺陷,我们也知道什么时候可以使用中间表。当左表和右表都没有非常频繁的修改需求,但是有非常频繁的联表查询需求时,我们可以使用中间表来提高查询效率,减少数据冗余。总结经过几次设计,发现一个大道理哈哈,其实技术最终还是要服务于具体的业务场景。许多计算机问题需要在时间和空间开销之间进行折衷,而在特定的业务场景中往往会出现这种情况。三种范式只是一般数据库设计的基本概念。通过三种范式,我们可以构建一个冗余度小、表结构合理的数据库。但是前面说过,合理的表结构并不代表满足业务需求。如有特殊业务情况,按特例处理。一般来说,需求>性能>表结构(冗余)。