在日常项目中,发现公司很多研发同事在系统表结构设计或数仓表结构设计过程中,对概念模型、逻辑模型、物理模型的认识不是很清晰,所以今天这篇文章和大家一起梳理下,什么是概念模型、逻辑模型、物理模型,以及如何通过概念模型、逻辑模型、物理模型来进行系统表结构设计或数仓表结构设计。
一般情况,在进行设计时一般会分开成三个步骤:概念模型阶段 > 逻辑模型阶段 > 物理模型阶段,每个步骤负责各自部分,层层递进,最终一步步完成完整设计。
各用一句话总结来说就是
概念模型
找出你需要设计的系统、业务层面的核心实体以及实体间的关系。
逻辑模型
进一步整理完善系统实体、实体间的关系,以及确定实体的属性。
物理模型
确定之前模型中的实体、关系、属性如何映射到具体实现,以及确定具体实现中由于技术或其他原因需要做的额外调整。
ER实体关系模型一般由
实体(Entity)、属性(Property)、关系(Relationship)组成
我们通常称使用 实体(Entity)、属性(Property)、关系(Relationship) 来表示数据关联和事物描述的这种对数据抽象建模为ER实体关系模型。
实体
通常为参与到过程中的主体,客观存在的,比如商品、仓库、货位、汽车,此实体非数据库表的实体表。
属性
对主体的描述、修饰即为属性,比如商品的属性有商品名称、颜色、尺寸、重量、产地等。
关系
现实的物理事件是依附于实体的,比如商品入库事件,依附实体商品、货位,就会有“库存”的属性产生;用户购买商品,依附实体用户、商品,就会有“购买数量”、“金额”的属性产品。
*
实体之间一般存在已下几种关系:
1:1即1对1的关系1:n即1对多的关系n:m即多对多的关系
ER实体关系模型一般严格遵循 第三范式(3NF) ,数据冗余程度低,且数据的一致性容易得到保证。但是由于数据分布于众多的表中,所以查询会相对复杂,在大数据量的场景下,查询效率相对较低。
概念模型阶段要做的事有两件
举个例子,我们准备要开发一个校园管理系统,通过和产品经理、需求方沟通,这个系统主要目的是为了解决学生、班级、老师之间归属关系录入、统计和查看。
在概念模型阶段,我们可以将我们涉及到业务层面的核心的三个实体 1、学生 2、班级 3、老师 ;
归属关系:
使用powerdesigner画出来的概念模型如下:

逻辑模型阶段要做的事也是两件
逻辑模型阶段要做的事,总结一句话来说,“整理完善系统所有实体、实体间的关系,给实体添加字段属性”;
例如班级这个实体,我们需要将班级ID、班级名称等 班级实体下的所有字段属性梳理出来,并将这些字段的长度和约束确定下来;
实体字段属性定义要尽量满足三范式定义,在下一个章节我们会讲到什么是三范式,为什么要遵循三范式;
此时多对多的关系,例如老师与班级的归属关系,我们需要单独建立一张关系表,进行处理;
我们使用powerdesigner画出来的逻辑模型如下:

物理模型阶段需要做的事情比较多
生成的逻辑模型如下:

逻辑模型就可以直接生成DDL语句了
