数据库设计方法-新奥尔良(New Orleans)方法的四个阶段:
需求分析阶段
概念设计阶段
逻辑设计阶段
物理设计阶段
需求分析
即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。产品经理,BA该考虑的事情,编写系统需求分析报告,包括用户规格说明书和数据字典。
概念设计
概念设计的目的是根据需求分析的结果,将用户对数据的需求综合成一个统一的概念模型,它是整个数据库设计的关键。概念模型是现实世界和DBMS支持的数据模型之间的桥梁。
设计出E-R图,也即实体-属性图,与物理实现无关,说明有哪些实体,实体有哪些属性。让不懂数据库的业务人员也能看懂。E-R图对立于任何一种数据模型,它不为任何一种DBMS所支持。
联系:描述实体内部以及实体之间的联系。
通常分为三类:
一对一联系(1:1):例如一个班级有一个班主任。
一对多联系(1:n):例如一个班级有n个学生组成。
多对多联系(m:n):例如学生选修课程。一个学生可以选修多门课程,一门课程也可以被多个学生选修。
逻辑设计
逻辑设计的任务就是把概念模型转换成某个具体的DBWS所支持的数据模型。
按照概念设计阶段建立的基本E-R图,按选定的目标数据模型(层次、网状、关系、面向对象) ,转换成相应的逻辑模型。
对于关系型数据库来说,这种转换要符合关系数据模型的原则,得到的就是逻辑数据模型。
这个阶段主要的工作就是确定关系模型里面的属性和码(或者说主键)。
比较常用的方式是使用E- R设计工具,IDEF1x方法来进行逻辑模型建设,常用的ER图表示法包括IDEF1x,IE模型的Crow’s foot,UML类图方式等。
IDEF1X方法
IDEF1X(Integration DEFinition for Information Modeling)
信息模型集成定义。
IDEF1X是IDEF系列方法中IDEF1的扩 展版本,是在E-R (实体联系)方法的原则基础上,增加了一些规则,使语义更为丰富的一种方法。
IDEF1X特点:有四个,如下所示:
主键是识别实体每一个实例唯一性的标识。
只有存在外键,实体之间才会存在关系,没有外键不能建立关系。
根据实体的特点,划分为两类:
- 独立型实体(Independent Entity)
直角矩形表示。
不依赖于其他实体,可以独立存在。
- 依赖型实体(Dependent Entity)
在值域里面的值都是合法数据。
值域体现了规则。
第一范式
属性的原子性,重复组概念
第二范式
非键属性要完整依赖于主键(比如复合主键,属性不能只依赖于其中一个主键)
第二范式
非键属性不能传递依赖于主键
物理设计
- 实体非正则化处理
- 表和字段的物理命名
- 确定字段类型,长度,精度等
- 增加逻辑模型中不存在的物理对象,比如索引,约束等。
反范式处理
有限的资源,有限的硬件条件提出了物理模型反范式化的需求。
带来数据冗余问题。
有可能会导致数据不一致问题。
- 增加冗余列
比如订单和客户信息冗余在一个表中,违反第三范式,但是能减少join连表查询 - 增加重复组(repeating groups)
比如第一号码,第二号码,违反了第一范式,但是方便前端展示,避免了纵横转换 - 派生列
比如中年组,老年组,减少在sql中的函数计算
表的物理化
- 进行反范式化操作。
- 决定是否要分区。
- 对于大表进行分区,减少IO扫描量,加速范围查询。
- 决定是否要拆分历史表和当前表。
- 历史表是冷数据,可以放在低速存储上;当前表是热数据,使用高速存储。
- 历史表可以使用压缩方法减少占用的存储空间。
字段的物理化
- 尽量使用短字段的数据类型。
长度较短的数据类型不仅可以减小数据文件的大小,提升IO性能;同时也可以减小相关计算时的内存消耗,提升计算性能。比如对于整型数据,如果可以用smallint就尽量不用int,如果可以用int就尽量不用bigint。
- 使用一致的数据类型。
表关联列尽量使用相同的数据类型。如果表关联列数据类型不同,数据库必须动态地转化为相同的数据类型进行比较,这种转换会带来一定的性能消耗 。选择高效数据类型。
- 字段的约束DEFAULT
如果能够从业务层面补全字段值,就不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果
给明确不存在NULL值的字段加上NOT NULL约束。
唯一约束/主键约束
检查约束因为对于数据质量提出了要求,不满足约束的数据在插入数据表会导致SQL失败。
索引
在经常需要搜索查询的列;
在作为主键的列,上创建索引,强制该列的唯一性;
在经常使用连接的列上创建索引;
在经常需要根据范围进行搜索的列上创建索引;
在经常需要排序的列上创建索引;
在经常使用WHERE子句的列上创建索引。
索引建多了,会有负面影响
- 占用更多的空间
- 插入基表数据的效率会下降
- 删除无效的索引,避免空间浪费
物理模型产出物
物理数据模型;
物理模型命名规范;
物理数据模型设计说明书;
生成DDL建表语句。
使用建模软件
使用建模软件来进行逻辑建模和物理建模,功能强大而丰富;
正向生成DDL,反向解析;
在逻辑模型和物理模型中自由切换使用视图;
全面满足建模中的各种需求,高效进行建模。
相关软件:
CA ERWin;
SAP PowerDesigner;
ER/Studio;
pgModeler;
Dbeaver Community;
datablau;