一、数据库表之间的3种关系
- 一对多:
- 在多的一端增加一个外键列.外键表示的就是一种一对多的关联
- 多对多:
- 增加一个中间表,将一个多对多转换为两个一对多。中间表中有外键
- 一对一:
- 有外键关联和主键关联两种方式,本质上都是外键关联
二、三大范式
1、范式(NF-NormalFormat):
- 范式是符合某一种设计要求的总结。
2、分类:
-
第一范式:
- 最基本的范式
- 数据库表每一列都是不可分割基本数据项,同一列中不能有多个值
- 简单说就是要确保每列保持原子性
- 第一范式的合理遵循需要根据系统的实际需求来定
-
第二范式:
-
第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。
-
即在一个数据库表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
-
-
第三范式:
- 确保数据表中的每一列数据都和主键直接相关,而不能间接相关
- 属性不依赖于其他非主属性。
3、范式的优缺点:
-
优点:
- 结构合理
- 冗余较小
- 尽量避免插入删除修改异常
-
缺点:
- 性能降低
- 多表查询比单表查询速度慢
4、总结:
- 范式是指导数据设计的规范化理论,可以保证数据库设计质量
- 第一范式:字段不能再分
- 第二范式:不存在局部依赖
- 第三范式:不含传递依赖(间接依赖)
- 使用范式可以减少冗余,但是会降低性能
- 特定表的的设计可以违反第三范式,增加冗余提高性能
二、数据库建模
PowerDesigner数据库建模流程:
-
利用实体-关系图创建“概念数据模型”-CDM。
-
根据CDM 产生基于特定数据库的“物理数据模型”-PDM。
-
根据PDM产生为SQL 语句并可以文件形式存储。
也可以:由已存在的数据库或者SQL语句反向生成PDM,CDM。
1、数据库建模-一对多关系
步骤:
- 创建概念数据模型CDM(抽象的,和具体的数据库没有关系)
- 产生物理数据模型PDM(具体的,和具体的数据库有关系)
- 产生数据库脚本(由PDM生成可执行的数据库脚本)
实际开发中,可以从PDM开始,PDM可以向上转换成CDM,可以向下转换成数据库脚本。
2、数据库建模-多对多关系(借助中间表实现)
3、数据库建模-逆向工程