设计合理通用的数据库表
第一博,谈谈本人愚见,若有不适请不吝赐教:数据库表在程序开发设计中占相当重的分量,一个好的数据表设计能给开发带来极大便利,看懂并吃透一个项目远比自己做好一个难的多,做过二次开发的朋友们都知道,刚进公司或者从别人手中接过来一个成品,让你在做好的基础上增加或者修改些功能的话!你就必须首先了解项目的业务逻辑,而业务逻辑直接和数据库关联,所以你还是先得了解数据库设计,了解各表之间的关系,然后在去调试程序,结合数据看看他到底做了些什么事情,不管是二次开发还是开发一个新项目!多花点时间在数据库设计上是有必要的!数据库设计的好坏直接关系到你对项目业务的一个掌握情况!当然也有的在不断做不断改数据库的情况,那是因为你还不是很熟悉整体的业务,当你做好一个软件而且投入到组织,企业或者工厂用的时候,基本能够满足别人的需求的时候,那就够了!
不要过多的依赖存储过程 (当然有的时候还是很有必要的)
1、存储过程的可移植性差,过多的采用存储过程也是个麻烦,试想从sqlserver移植到oracle数据库,那很多函数都不一样,那存储过程改起来也麻烦。
存储过程更新升级维护困难 存储过程的更新和程序的更新不能达到一致
存储过程没有版本控制 我们改了但是错了的话要还原到之前的样子就困难了
存储过程调试不是很方便
数据库字段名改名 编译后的存储过程没有提醒的功能,字段不能及时更新
通常数据库表设计理念
遵循基本的三大范式 你懂的!
数据库只用来存储数据 别把过大的压力丢给数据库 别用过多复杂sql语句来进行运算
不要把过多的字段放在一个表里面,根据查询需求能拆分尽量拆分
设计用户表字段时,关联到权限的时候要有是否可读可写可删除 isread,iswrite,isdelete字段
数据表名和字段名命名规范,达到一看就懂的地步
字段类型是什么就定义什么 比如时间就定义为datetime,不要用varchar
系统中的数据是不是很重要,如果很重要,在删除的时候就不要真的删除,添加删除标志isdelete,我们在查找的时候就根据标志来查询就可以了
数据是否有效isenable 一般都要通过审核才能看到
排序字段sort 设置显示顺序
重要数据是谁删除的谁修改的字段createid createname createdate editid editname editdate,当出现问题的时候找谁,很有必要
有必要的给字段加默认值 可以不输入的数据尽量不输 谁愿意输入很多东西啊
让可以为空的数据 在设计的时候让字段允许为空
备注字段note 给客户留有余地 不同的客户需求都不一样 我们很难满足所有的用户的需求
数据库的优化
3、字段类型 是什么类型就是什么类型 是时间类型就是datetime 别用varchar
模糊查询最好不要用到两个以上的like语句,如果有int 和string的模糊查询,int用“=”去匹配,string用like去匹配
主键加索引,对于经常查询的条件加上索引,如 where后面的条件