博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库设计思考
阅读量:6720 次
发布时间:2019-06-25

本文共 868 字,大约阅读时间需要 2 分钟。

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

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

  有用户才有天下!

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

           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

你可能感兴趣的文章
Maven 手动添加 JAR 包到本地仓库
查看>>
电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情[EULAR2015_THU0122]...
查看>>
【BZOJ3529】数表
查看>>
最坏的不是面试被拒,而是没面试机会,以面试官视角分析哪些简历至少能有面试机会...
查看>>
python的文件操作与目录操作os模块
查看>>
客户端存储cookie
查看>>
agal常用命令
查看>>
html转义
查看>>
自定义UITextView实现placeholder效果
查看>>
格式化
查看>>
如何让字体大小<12px
查看>>
【机器学习】--主成分分析PCA降维从初识到应用
查看>>
对于数组的操作:splice与slice
查看>>
第二次Scrum meeting
查看>>
云安全
查看>>
addEventListener调用带参数函数
查看>>
postgresql----INSERT
查看>>
MVC中渲染页面
查看>>
Java OA的优势何在
查看>>
SSH配置启动后Could not instantiate bean class [org.hibernate.cfg.AnnotationConfiguration
查看>>