# 一. 简介
数据建模是为要存储在数据库中的数据创建数据模型的过程。该数据模型是数据对象,不同数据对象之间的关联以及规则的概念表示。数据建模有助于可视化地表示数据,并在数据上执行业务规则,法规遵从性和政府政策。数据模型可确保命名约定,默认值,语义,安全性方面的一致性,同时还能确保数据质量。
# 二. 用途
数据模型的主要目标是:
1. 确保正确表示数据库所需的所有数据对象。遗漏数据将导致创建错误的报告并产生不正确的结果
2. 数据模型有助于在概念,物理和逻辑级别上设计数据库
3. 数据模型结构有助于定义关系表,主键和外键以及存储过程
4. 它提供了基本数据的清晰图片,数据库开发人员可以使用它来创建物理数据库
5. 识别丢失和冗余的数据
6. 尽管最初创建数据模型既费力又费时,但是它使IT基础架构升级和维护成本更低,更快
# 三. 数据模型类型
数据模型的类型主要有三种不同类型的数据模型:概念数据模型(Conceptual Data Model),逻辑数据模型(Logical Data Model)和物理数据模型(Physical Data Model)。数据模型用于表示数据及其在数据库中的存储方式,并设置数据项之间的关系。
1. 概念数据模型
这个数据模型定义此次设计的领域范围。该模型通常由业务涉众和数据架构师创建。目的是组织,范围和定义业务概念和规则。
2. 逻辑数据模型
承上启下对一个模型,理论上不需要考虑DBMS,但是其实考虑到最佳。该模型通常由数据架构师和业务分析师创建。目的是开发规则和数据结构的技术图。
3. 物理数据模型
用特定的DBMS系统来实现的该系统。该模型通常由DBA和开发人员创建。

# 四. 概念数据模型
## 4.1 核心
概念数据模型是数据库概念和实体之间的关系的有组织的视图。创建概念数据模型的目的是建立实体,实体的属性和关系。概念数据模型可识别不同实体之间的最高级别的关系,也是最简单的模型。
概念数据模型的3个基本属性是:
1. 实体:现实世界中的事物
2. 属性:实体的特征或属性
3. 关系:两个实体之间的依赖关系或关联关系
## 4.2 特征
1. 基于业务,设计出来的模型
2. 这种类型的数据模型是为业务受众设计和开发的
3. 概念模型的开发与所有硬件无关,只代表用户能够看到的数据
4. 不指定属性
5. 不指定主键
## 4.3 参考

# 五. 逻辑数据模型
## 5.1 描述
逻辑数据模型被用来定义的数据元素并且将它们之间的关系集的结构。逻辑数据模型将更多信息添加到概念数据模型元素。使用逻辑数据模型的优点是为形成物理模型的基础提供了基础。包括对象间关系采用中间关系表来维护。
## 5.2 特征
1. 包括所有实体及其之间的关系
2. 指定了每个实体的所有属性
3. 为所有实体指定主键和外键
4. 独立于DBMS设计和开发,但是最好考虑实际的架构设计
5. 数据属性将具有精确度和长度的数据类型
6. 模型的标准化过程,需要遵循3NF
## 5.3 步骤
设计逻辑数据模型的步骤如下:
1. 为所有实体指定主键
2. 查找不同实体之间的关系
3. 查找每个实体的所有属性
4. 解决多对多关系,many-many关系一般通过中间关系表维护
5. 3NF标准化
## 5.4 参考

# 六. 物理数据模型
## 6.1 描述
物理数据模型描述了数据模型的数据库具体实施,与具体数据库执行相关。它提供数据库抽象并帮助生成架构。这是由于物理数据模型提供的元数据的丰富性。物理数据模型还通过复制数据库列键,约束,索引,触发器和其他RDBMS功能来帮助可视化数据库结构。
## 6.2 特征
1. 物理模型描述了单个项目或应用程序的数据需求
2. 通过外键用于标识表之间的关系,这些关系解决关系的基数和可空性
3. 指定类型和版本的RDBMS上面进行开发
4. 列应具有确切的数据类型,分配的长度和默认值
5. 定义了主键和外键,视图,索引,访问配置文件和权限等
6. 物理上的考虑可能导致物理数据模型与逻辑数据模型完全不同
## 6.3 流程
1. 将实体转换成表格
2. 将关系转换为外键
3. 将属性转换为列
4. 根据物理约束或要求,修改物理数据模型
## 6.4 参考

# 七. 总结
|特征|概念模型|逻辑模型|物理模型|
|-------|-------|-------|-------|
|实体名称|✔|✔||
|实体关系|✔|✔||
|实体属性||✔||
|列数据类型||✔|✔|
|主键||✔|✔|
|外键||✔|✔|
|表名|||✔|
|列名|||✔|
上表格可以看出三种模型的区别,这三种模型是数据模型设计的三个阶段,通过模型在各个阶段的验证,不断地调整以满足最终业务需求。逻辑模型作为概念模型与物理模型的连接模型,有着承上启下的作用。
尽管三大模型的设计方法论已经出来很久,但是实际很多公司并不遵循这样的设计流程,直接物理模型设计。这是一种不可取的方法,一种野路子。模型设计的本身就是对于业务的不断理解和调整,在这样的验证过程中,可以优化最终的物理模型。一个好的物理模型,可以给建立在上面的应用系统带来长远的利益。

数据建模-概念模型,逻辑模型,物理模型