数据库设计总结:
第一次写博客,刚学了数据库设计,简单回顾总结一下。
写在前面,了解一下项目开发流程:
1.需求调研----系统边界
2.需求文档
3.原型设计—UI,HTML页面
4.设计数据库
5.后台开发,公共代码编写
6.功能编码
1.数据库的三范式:
第一范式:保持属性的原子性,概念分的不能再分,如姓名可分为姓和名,所以姓名不满足第一范式。
第二范式:所有列依赖于主键,一个表只描述一件事情。
第三范式:每一列直接依赖于主键
如:A依赖于B,B依赖于C,在数学上我们可以认为A依赖C,但在数据库违反第三范式。
注:只有主键才能设置自动增长,自动增长一定是主键,而主键不一定自动增长。
2.E-R图:数据库关系图,用来描述现实世界的概念模型。
使用E-R图的好处:
(1)方便梳理表与表的关系
(2)可以快速生成sql建库脚本
小发现:
可以先使用流程图梳理各角色各模块之间的关系,再使用E-R画出表之间的关系,效果更佳。
3.数据库设计步骤:
(1)标识表
(2)标识表的字段
(3)标识表与表之间的关系
4.表的关系:由需求决定。
(1)类型:一对一,一对多,多对一,多对多。
(2)数据库中没有直接多对多关系的存在,原因是数据库里面的字段不能存储集合。
实现多对多的方式:a.使用中间表 b.表中字段之间用逗号
5.冗余可能会带来的问题:
(1)信息重复
(2)更新异常
(3)插入异常
(4)删除异常:在某些特定情况下,当删除一行时,可能会丢失有用的信息
6.数据库设计原则:
设计数据库的时候应尽量符合三大范式,避免数据的冗余,但有时为了数据库的访问性能,允许适当的冗余
如:商品表中的金额字段,可分解为单价*数量 ,说明金额是冗余项,不符合第一范式,但从业务逻辑考虑,增加金额字段,可以提高查询速度,使用的目的是为了提高处理速度。
有写的不好的地方还望大家海涵。