数据库设计思考

一:没有完美的数据库设计,只有符合业务的数据库设计!

二:我们的数据库设计,在遵守标准(三大范式)的同时也要考虑客户的体验!

  有用户才有天下!

三:数据库设计时必须要做的

           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;

原文地址:https://www.cnblogs.com/peterYong/p/6556560.html