今天进行了一次完整的数据库设计的过程,其实一直来说我都是非常害怕数据库的设计的,因为在刚刚接触的时候,我就知道,数据库设计其实是一个项目的开端,因为数据库设计实际上就是业务的设计,在需求清晰的时候,完成清晰流畅的业务设计又是一大难点。
数据库设计应该遵循以下几个原则:
对需求的认知完全没有歧义;
熟练而且正确的E-R图绘制,明确改图是表明实体和关系的图,实体表示要在数据库里保存的类,关系表示类与类之间的相互关系,关系主要有一对一,一对多,多对多。经验之谈,继承关系通常可以用一对一表示,而一对多或者多对多通常表示类之间的使用关系;
在设计时要做到高度的抽象,对内容或者关系相类似的内容抽象为一类实体,在分类时可以抽象出一个“类”的实体,与要分类实体之间进行多对多关系映射,明确哪些是必须要进行存储的实体;
如果系统涉及用户角色的不同不妨把,账户和身份的考虑分离开,账户的存在让他是一直存在的并且在身份变化时个人的历史和基础内容是不变的,就是身份的加持让他可以有特权或者使命,而账户是他在系统中的根;
对于有值内容,并且需要对值进行统计结果的需要对他进行内容的拆分,比如:问卷表和问卷内容表,问卷内容值表要拆开,才有利于统计计算,而且他们之间是一对多关系;
有时更加困难的是一个实体会发生多个维度的分类,那么就把他的拆分维度一一分开;
“频道”概念在消息分发时是一个非常灵活的概念;
数据库可以建表来模拟消息服务器分发消息,在无法保证实时性必须存储内容时,同一消息对不同用户创建不同的副本;
总结,其实我在今天的数据库设计中就学习到这些,学习是一个逐渐进步的过程,也是一个自我折磨的过程,希望我可以在这条路上走的再远一点。