一:没有完美的数据库设计,只有符合业务的数据库设计!
二:我们的数据库设计,在遵守标准(三大范式)的同时也要考虑客户的体验!
有用户才有天下!
三:数据库设计时必须要做的
1.需求的分析;
2.考虑需求可能的变更(预留设计);
四:数据库设计中具体要注意的几点;
1.凡是用户输入的不能作为主键;
主键是唯一的,一般不能让客户做任何操作;
2.凡是有业务意义的不能作为主键;
既然是具有业务意义,客户随时都有可能提出这个业务,要求修改业务,也会有变动的可能!
3.除非确定是有必要的字段,其他都允许为空;
设计数据库时,约束简单点最好,约束多则在系统中开发时要注意的就多,开发效率相对会底,因为系统是可以通过验证辅助完成这些约束的!
4.不能缺少时间或日期字段、并预留备注字段;
5. 业务的时效(时间有效)性;
6.数据的采集宁滥毋缺
7.预先计划
比如考虑到用户可能会误操作,然后又要求维护人员恢复数据,需要对表进行软删除(逻辑删除,也就是增加一个IS_DELETED字段,0表示正常,删除操作就是将该字段设置为1)
五:字段是否允许为空的思考
为空的选项,就是为了表示未知的情况。
如果为空,查询条件就必须处理为空的情况,否则会出现一些很奇怪的问题。也就是说,几乎所有的判断都必须加上 is not null 或者时 is null 的判断。 其实在部分情况下可以使用默认值。
六:Drop Table
要增加数据列的话,不好采用Drop Table重新Create Table,因为会把数据也删除掉,最好用Alter语句。
alter table OrderMaster add IsMonthly int(11) not NULL DEFAULT 0;
alter table OrderSearchSummary add IsMonthly int(11) not NULL DEFAULT 0;