数据库设计经验谈

个人学习和工作经验总结:

  1. 信息别丢失,比如企业地址的省、市、县、乡、门牌号,需要的话也要列为字段。
  2. 不必根据内容多做数据表,根据关系,如果可以放在一个表里,就放在一个表里,只要包含的字段不太多。碰到两个数据表内容相似的情况,合并成一个数据表。
  3. 行号可以作主键。
  4. 最好不使用联合主键,可以多添加一列做主键,添加unique约束。
  5. 表格列出主键和外键,如产品表格、外键为表格编号和企业编号。
  6. 一对多的关系,在多记录的表里添加一列外码,避免了数据冗余。
  7. 出现“无,有,有多少”,可以定义为整型。
  8. 每份表格需要添加修改人和修改日期的信息
  9. 一些时候,二级字段前添加范围信息,可以成为一级字段,即和其他字段一样放在数据表里,不用再创建一个数据表。
  10. 可多选值的字段比如“预期用途代码”可以填写1.。。。2.。。。3。。。及其他,此时可以多添加几个字段,预期用途代码_1,预期用途代码_2,预期用途代码_3,预期用途代码_其他;另一种方法,多种选择的值放在一个字段,而其他放在另一个字段,如“预期用途代码_123”,“预期用途代码_其他”;还有一种方法是对几种选择编码,比如可多选1,2,3则字段类型设为3位编码,每一位代码一个字是否选择。
  11. 有编码则最好添加编码,有助于查询,比如汇总表里产品信息前添加编码信息。
  12. 如果有合计信息,可以放在总表里,明细信息放在子表。之间是一对多的关系,另外填表信息放在总表,这样可以避免数据冗余。
  13. 带有汇总性质的表格,可以由系统生成,即通过关联几个数据表而获得。不过在数据库里还是需要创建汇总数据的存储空间(创建汇总表)。
  14. 地方上报的汇总表需要添加行政区划代码、省、市、县名,还有统计年度。
  15. 数据库设计的标尺,三范式

第一范式:每一个属性都不可再分。如果地址信息由省、市、县、区...可再分,视情况而定,分开更有意义的话,则不分开就不符合第一范式。可再分的列拉出来单列个表。比如单建个表(地址id,省、市、县、区。。。)

第二范式:其他字段需要完全依赖于全部主键。部分依赖的属性拉出来,单列个表。比如主键为employeeid,departmentid,有属性departmentName,departmentDescription只依赖于departmentid,需要创建(departmentid,departmentname,departmentdescription),主键为组合键时,需要注意。

第三范式:其它属性只依赖于主键,没有属性之间的依赖,主键决定其他属性的值。如果有属性之间依赖,需要单独建立一个表。比如还是职员信息表,主键为employeeid,departmentid,有属性job,jobDescription,存在jobDescription依赖于job,需要建立数据表(job,jobDescription)。

通常设计数据库,只需要达到第三范式就可以了。

你可能感兴趣的:(数据库设计经验谈)