最近在学习数据库设计中突然算是有意识的领悟到一些理念,横向设计,纵向设计,这个大概是满足第几条范式我不太能搞懂,但是我希望通过自己的方式来汇总一些经验
总所周知数据表是有‘行’与‘列’组成,那么我们在设计中要考虑到这些‘行列’组成的数据,第一是不是能满足业务需求,第二能不能扩展方便,第三能不能让程序写起来
更为简单,所以这是个问题,也是个设计,下面例子:
一条关于学生选修课分数的数据:
--------------------------------------------------这是传统的横向设计方式
-------------------------------------------------这是纵向设计
好吧,突然觉得无论你想怎样加你的选修课,我都不怕你了,但是并不是说纵向设计就无敌了
横向设计的利与弊
利:1、预选设定好了所需要的列,对数据库操作方便
弊:1、不易拓展,易冗余
纵向设计的利与弊
利:1、容易拓展,弹性好,遵循数据库设计的XX范式(至于第几条,我真心记不得)
弊:1、失去了对数据的控制权,也就是说很难维持数据的规范化,如果我的程序不规范随意在选修课列中加入‘烹饪技巧课’,那么作为我设定好的理工学校应用场景,这条数据是错误数据
2、要管理和操作纵向表很有难度
总之,在数据库设计中不能盲目的追求纵向设计,弹性好,拓展好,他会对数据库照成不必要的操作
在设计中应该追求平衡,必要性
以上为个人观点,不正确的地方希望海涵与纠正..