数据库设计实践:打破固有陈规,转换视图角度
个人心得:降低层级减少外键关联
我们设计数据库的时候往往按照抽象实体,建立E-R模型的方式进行。
从业务描述里面抽取有效的名词然后按照组织方式建立关系模型。
如果严格遵从数据库设计范式,可以得到一个严谨的模型。
但是,实体太多,他们之间的关系维护就非常复杂了。
有时候我们不妨进行冗余,对于不容易改变或者隶属关系很明确的这种我们可以简化实体之间的关系
比如 A--->B--->C 这种层级关系模式可以描述系统中如下的概念
系统中存在概念 {Ai | i=1,2,...} , {Bi | i=1,2,...} , {Ci | i=1,2,...}
如果 B和C 之间可以进行冗余的话,那么完全可以将 3 级的模式
转换为 2级的模式 A--->BC 然后建立一个冗余关系 <A,B> 和 <A,C>
这样 3级的模式可以转换为 2级的模式
3级模式里面我们的外键维护起来就不方便,需要维护 2 次外键
2级模式里面只维护一次外键即可。
实际案例
下面是一个实际工作中的设计案例