优良的数据库设计
- 减少数据冗余
- 避免数据维护异常
- 节约存储空间
- 高效的访问
数据库设计步骤
1. 需求分析 2. 逻辑设计 3. 物理设计 4. 维护优化
需求分析
数据是什么?有哪些属性?数据和属性各自的特点有哪些?
- 系统中所要存储的数据
- 数据的存储特点
- 数据的生命周期
要搞清楚的一些问题
- 实体及实体间的关系(1对1,1对多,多对多)
- 实体所包含的属性有什么
- 哪些属性或属性的组合可以唯一标识一个实体
逻辑设计
使用ER图对数据库进行逻辑建模
- 将需求转化为数据库的逻辑模型
- 通过ER图的形式对逻辑模型进行展示
- 同所选用的具体的DBMS系统无关
关系 一个关系对应通常说的一张表
元祖 表中的一行即为一个元祖
属性 表中的一列即为一个属性
候选码 表中的某个属性组,它可以唯一确定一个元祖
主码 一个关系有多个候选码,选定其中一个为主码
域 属性的取值范围
分量 元祖中的一个属性值
第一第二第三范式
1NF. 第一范式 属性不可再分割
2NF. 第二范式 满足1NF,且消除非主属性对码的部分函数依赖
3NF. 第三范式 满足2NF,且消除非主属性对码的传递函数依赖 【即属性不依赖于其它非主属性】
BCNF. BC范式 满足3NF,且消除主属性对于码的部分与传递函数依赖
另解
1NF:字段是最小的的单元不可再分
2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到)
3NF:满足2NF,非主键外的所有字段必须互不依赖
BCNF:满足3NF,消除表中的多值依赖
物理设计
根据数据库自身的特点把逻辑设计转换为物理设计
1.选择合适的数据库管理系统
2.定义数据库、表及字段的命名规范
3.根据所选的DBMS系统选择合适的字段类型
![](https://img.haomeiwen.com/i305310/216e770c3a74e02f.png)
维护优化
新需求建表,索引优化,大表拆分
网友评论