规范数据库设计
为什么需要设计数据库
- 当数据库比较复杂的时候,就需要设计数据库
糟糕的数据库设计 | 良好的数据库设计 |
---|---|
数据冗余,浪费空间 | 节省内存空间 |
数据库插入和删除都会麻烦、异常 | 保证数据库的完整性 |
程序的性能差 | 便利开发 |
-
数据库设计的步骤
- 分析需求:分析业务的需要处理的数据库的需求
- 概要设计:设计关系图E-R图
--1.收集信息,分析需求 --2.标识实体(把需求落到每个字段上) --3.标识实体之间的关系
三大范式
-
数据库的设计范式是数据库设计所需要满足的规范,即设计的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。
-
第一范式(1NF):列不可再分
- 原子性:每一列属性都是不可再分的属性值
- 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
-
第二范式(2NF):每张表只描述一件事,依赖于主键
-
第三范式(3NF):确保每一列数据都和主键直接相关,而不是间接相关
-
规范性和性能的问题
- 尽可能关联查询的表不超过三张表
- 设计数据库首先需要考虑商业化的需求和目标,即数据库的性能更加重要
- 在上一条的基础上,考虑数据库的规范性
- 会故意给某些表加一些冗余的字段,使查询时让多表查询变为单表查询
- 会故意增加一些计算列,使从大数据量降低为小数据量的查询:索引