数据库设计体会
我以后在数据库设计期间:应该牢记的:
第一:所有的Float类型的字段,必须设计成NUMBER(10,2),觉得设计为VARCHAR(20)也很好。
第二:所有的时间类型的字段,设计成VARCAHR(20)
第三:所有表的主键要求自增,或者是用GUID,自增主键建议使用:表名_ID的形式。自增做主键的问题是:在oracle导入导出会遇到问题,以及多台oracle做数据同步的时候(解决方案就是一个表用1自增,另外的用10亿自增),guid的好处就是唯一性,能够保证数据库里的每一条记录都是唯一的一个GUID.
第四:考虑到表与表之间的关联。对于子表的外键,应该预留一个字段存放主表的名称
例如
单位表 是主表 采购单 是子表
DEPT_ID,DEPT_name PUR_ID ,DEPT_ID,DEPT_name
虽然是浪费了磁盘的存储空间,但是同样提高了查询的效率,尤其是在多表联合查询,以及具有递归的表进行联合查询!
第五:尽可能的去使用绑定变量,以及视图和存储过程。
第六:尽可能的不去使用复合主键。
第七:尽量不要去将实体的属性设为主键。当然实体的有些属性可以存在不存在,存在就唯一,就好像身份证号码。
对于主键的选择,尽量不去选择经常修改的键值。
第八:对于表的列数设计最好不要超过30列,列越多越不利于管理和维护。
第九:表的命名:采用:项目名称_模块名称_表名称。
暂无:以后在工作中遇到的问题会继续补上,希望网友帮忙补上