数据模型的目的在于可视化呈现、设计业务/系统的数据交互/存储的结构和方式,识别实体及其属性、关系,方便业务人员和技术人员沟通和承接。数据结构按照信息细节度和技术性划分概念模型(Conceptual Data Model)、逻辑模型(Logical Data Model)和物理模型(Physical Data Model),抽象程度依次降低,技术性质依次增强,适用对象从业务人员转向技术人员。

理论上讲,概念模型和逻辑模型一般给领导、业务看;从实际经验来,技术人员一般拿建模工具直接做物理模型,这些工具也可以展现数据的关系模型,完稿时生成和导出DDL(Data Definition Language,数据定义语言,主要是CREATE)并建立库表。同时,一般的数据库客户端都具备数据库的逆向实体关系图生成能力,也就是从既有的数据库中反向生成物理模型。

三种数据模型比较

三种数据模型
模型概念模型逻辑模型物理模型
面向人员业务业务技术
目的识别业务实体及关系丰富补充以建立物理模型建立数据库的库表
实体名称×
实体关系×
实体属性可选但不完整有但不完整×
描述语言业务意义业务意义技术意义
数据库相关××
表及其列××
列及其数据类型和约束××
主键和外键××
索引和存储过程等××可选
数据元素业务元素更多业务元素业务元素+技术元素

概念模型和逻辑模型都是业务用语,而物理模型是用技术实现的方式来表达业务意义,具有比如varchar(256)、更新时间(update_time)等数据类型及长度的约束、技术配套字段。其中概念模型和逻辑模型之间的界限比较模糊,主要体现在数据丰富度上,实际操作时不用太纠结。

实体关系区分一对一、一对多和多对多,以及之间的业务动作,在面向对象(Object Oriented)和实体关系(Entity Relationship,E-R)这两种建模技术中可以体现业务动作和数量关系,其他建模技术不好体现。

五种数据建模方式

数据建模(Data Modeling)技术与用于系统软件架构设计的UML(Unified Modeling Language,统一建模语言)可以相提并论。其包含五种数据建模方式或者叫数据模型种类,分别为层级(Hierarchical)、网状(Network)、面向对象(Object Oriented)、实体关系(Entity Relationship)、关系(Rational)。其中的面向对象数据模型和UML的用例图有点像。而实体关系图和关系图是最常用的方式,前者可用于系统软件的概要设计阶段,后这可用于详细设计阶段。

备注:E-R图(Entiry Relationship Digram,ERD,实体关系图)日常使用、称呼上包括了关系模型(Rational)和实体关系模型(Entity Relationship)两种方式,也可能泛指了以上5种方式,甚至更偏向于关系模型。这里不纠结。我的理解是,这五种建模方式都可以用来做概念模型,不一定能或者适合做逻辑模型,只有关系模型能用来做物理模型(全文针对关系数据库RDBMS来说)。

1、层级 

这里借图,表达的是一个概念模型,局限比较多,如只能一对一或者一对多,有点像二叉树。

2、网状

 这里借图,表达的是一个概念模型,虽然解决了不能多对多的问题,但是数据量大的时候这个图就非常庞大,不易读。

3、面向对象

这里借图,表达的是一个概念模型,但可以体现业务动作和数量关系,不过是站在一个业务对象的视角来画图,对象多了估计整个图就不好画、不好看了。

4、实体关系

这里借图,表达的是一个逻辑模型,很好的体现了实体及其业务动作、数量关系。其中矩形表示实体,圆圈表示实体属性,菱形表示实体之间的关系,关系连线上的数字就是数量关系。一对一用1表示,一对多用1:M表示,多对多用N:M表示。反过头来看看,如果实体和属性太多,整个图就会五颜六色、枝繁叶茂、群魔乱舞,不过用实体关系图非常适合做概念模型和逻辑模型。

5、关系

 这里借图,表达的是一个物理模型,业务对象名已经更换为表名(英文),属性更改为了列(英文),且列有字符类型、长度,有主键、外键,根据建模工具功能还可以添加索引等元素。这里的实体数量关系使用了特别的符号,具体见下图的解释。关系模型有个缺点,就是不能表达业务动作,不过在做技术落地实现的时候,业务逻辑可以体现,不用在数据层面体现。再说数据库客户端可以正向逆向生成库表和关系模型图,这个让DBA、开发很喜欢,也是最常用的数据建模方式。

三种数据模型示例

通过上面的五种数据建模方式的配图,可以看到三种数据模型的样子。

数据建模工具举例

数据建模工具非常多,只要是能画上面的图的任何工具都可以,比如Powerpoint也可以拿来画实体关系图,不过类似用记事本写代码,没有那边边界。数据建模有非常多的专业工具,一般的流程图软件支持实体关系图、UML图等,但用来形成物理模型的关系模型需要更加专业的工具,它们可以导出生成SQL语句(DDL)。下面就列举些关系模型的建模工具。

  • PowerDesigner(收费)
  • erwin(收费)
  • PDMan(开源)

参考文档

What Is Data Modeling – Conceptual, Logical, Physical Models

Data Modeling: Conceptual vs Logical vs Physical Data Model

Data Modelling: Conceptual, Logical, Physical Data Model Types

What Are Conceptual, Logical, and Physical Data Models?

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐