在设计ER图的时候,自然而然会设计表的物理表名和字段名。一般是英文和数字组合。理论上只要是英文和数组组合就可以了,但还是有一些规则的,比如避免用系统保留名字。用系统保留名字一个弊端就是写SQL的时候可能要做特殊处理。增加了不必要的负担。
由于大多数项目都不是开发一次就完美了,大多数都需要n多次修修补补。数据库的好坏直接关系和系统的维护成本相关的。即使在开发阶段也是影响开发成本的一个因素。
好的数据库设计,一般都能够望文知意,很容易理解式样。在开发阶段减少出错,在维护阶段更容易入手。
不好的数据库设计,容易产生不必要的错误。开发阶段bug多,维护阶段入门门槛高,学习成本增加。
下面是不好的数据库中的表名和字段名例子
group表(组织表)
group_id | name | group_name | order_num |
组织id | 组织内部名 | 组织名 | 排序no |
people表(用户表)
user_id | username | group_name | password |
用户id | 用户名 | 组织内部名 | 密码 |
两张表的相关字段是组织内部名,但是字段名字却对不起来。单独看一张表的时候确实没有什么不妥,但两张表关联起来后就有点混乱了。
这种不妥当的设计在我经历的项目中遇到过好多次,详细设计的人员一不小心就把SQL写错了。然后开发人员也不管什么逻辑的就按照详细设计来做,最后发现问题居然是在要提交给客户前的综合测试阶段。明显浪费了很多时间和金钱。
还有的人设计的表,表字段的意思一样,但名字确不统一。这种错误虽然很低级,但确很常见。
这种设计不好的数据库,很明显增加系统的维护成本。要理解式样,看数据库半天也看不出来其中关联,那还怎么继续进行下去呢。特别是有写项目在开发初期根本就没有做逻辑ER设计,只有物理数据库。如果物理数据库设计不好,一下子根本无从下手。即使下手也容易出错。一次一个优秀的ER设计,能大大降低系统开发和维护成本。
怎样才能做好ER设计呢?
我想首先要充分理解式样,根据式样分类,关联。先把逻辑ER图构建出来。
然后根据逻辑ER图构建物理ER图。在设计物理ER图的时候,字段名和表名尽量先规定规则,从全局来考虑来做好好物理ER图设计。
最后对做好的ER图进行review是非常重要的,毕竟人多力量大。观点多,想法多,最终的方案更加接近一般人的理解。
工具在规定的规则上会比人出现的低级错误少得多,因此做ER图的少不了ER制作工具。