什么是数据库设计?
数据库设计就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的工程。
在需求分析阶段:收集信息;标识对象(实体);标识每个对象需要存储的详细信息(属性);标识对象(实体)之间的关系。
在概要设计阶段:绘制E-R(实体-关系)图
在详细设计阶段:规范化E-R图;把E-R图转换为多张表,并标识各表的主外键。
设计中的问题
信息重复;更新异常;插入异常(无法表示某些信息或者是无法插入新行);删除异常(丢失有用的信息)。
规范设计:
从关系型数据库表中除去冗余数据的过程称为规范化。
1.第一范式(1NF Normal Formate)
目标是确保每列的原子性:如果每列(或者每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF);
2.第二范式(2NF)
目标是确保表中的每列都和主键有关:如果一个关系满足1NF,并且出了主键以外的其他列,都依赖于该主键,则满足第二范式(2NF),去掉部分依赖;
3.第三范式(3NF)
在2NF基础上,去掉传递依赖。
范式级别越高,对应查询性能越低,有时需要适当允许少量冗余数据,这才是最佳的方案。