一、数据建模基本流程
在建模的不同阶段,将数据模型分为三个层次,每层的作用各不相同。
- 概念模型:确定系统的核心以及划清系统范围和 边界
- 逻辑模型:梳理业务规则以及对概念模型的求精
- 物理模型:从性能、访问、开发等多方面考虑,做系统的实现
1.概念模型
对比建筑规划图和概念模型
| 建筑规划图 | 概念模型 | 意义 |
|---|---|---|
| 改什么房子:住宅、写字楼、医院 | 要解决何种商业问题 | 项目的目的 |
| 有几口人?都是谁?什么年龄、习惯、爱好。。。 | 在此商业活动中,有哪些人或组织参与?角色分别是什么?售货员、出纳、商场经理 | 组织 |
| 有哪些物件需要摆放:汽车、家具、家电 | 在此商业活动中,有哪些物件参与其中?商品、货架、收款机 | 物件 |
| 尝试:一个起居室、一个厨房、一个餐厅:需要一个二层小楼,一楼是起居室、厨房和餐厅,二楼是卧室;特殊:需要两个车位,一个现在用,一个将来备用,需要一个游泳池 | 行业经验:核心业务流程、组织架构、行业术语;定制:特殊的流程、专有的术语、特有的用户群 | 功能范围 |
概念建模小贴士
- 注重全局的理解而非细节
- 在概念模型阶段,即需要对整体架构做思考
- 概念模型通常是自上而下的模式,通过会议等模式反复沟通,澄清需求
- 在此阶段,应粗略地估算出整个项目需要的时间以及项目计划草案
- 根据计划粗略地估算出项目的费用
- 是数据模型工程师与客户沟通的破冰之旅,使他们在此期间达成共识并奠定未来良好的沟通基础以及私人关系
- 出品的概念模型可以帮助划定系统边界以及避免方向性的错误
- 商业主导,相比技术专家而言,更需要商业专家
- 是未来逻辑模型的沟通基础,以及逐步求精的依据
概念模型交付品通常具备如下特点:
- 与客户一致的商业语言
- 尽量一页纸描述清楚整个模型
- 通常用实体关系型图表示,但不需添加实体的属性
- 允许多对多的关系存在
2.逻辑模型
对比建筑设计图和逻辑模型
| 建筑设计图 | 逻辑模型 | 意义 |
|---|---|---|
| 分多个区域,各个区域的面积。比如:起居室5m*4m,主卧3.3m*4m | 分多少个主题?每个主题包含的实体:客户、商品、商店、订单。。。 | 实体的定义 |
| 每个区域的功能。比如:主卧室中要有卫生间,要有衣橱 | 每个属性都有什么?比如:客户的属性包括客户编码、客户姓名、客户电话号码。。。其中客户编码为主键 | 实体属性的定义 |
| 各个区域之间的联系。比如:各个房间之间的走廊,卫生间和厨房需要相邻、热水器的热水管需要接通到厨房。。。 | 各个实体间的关系是什么?比如:订单实体中包含了客户编码和商品编码,分别来自于客户实体和商品实体 | 实体间的关系 |
| 设计时有哪些限制?比如:剪力墙不可动,空心砖不可挂热水器等重物。。。 | 各个实体键是否有关系约束?单个属性是否有范围限制?比如:订单与客户之间的关系约束,客户编码唯一。。。 | 约束的定义 |
逻辑建模小贴士1
- 应更精确估算出整个项目需要的时间以及项目计划草案
- 并且根据计划更精确地估算出项目的费用
- 当实体数量超过100时,需要定义术语表
- 规范化
- 先规范化再逆规范化,不可一步到位
- 不可缺少约束的定义
- 使用CASE工具做逻辑模型 • 多对多关系需要解决
逻辑建模小贴士2
- 需要同级评审(Peer Review)
- 确定可信赖数据源,关键属性需用真实数据验证
- 应用成熟的建模模式(Pattern)
- 一定程度的抽象化,决定了未来模型的弹性
- 高质量的模型定义
- 重要关联关系需要强制建立
- 与概念模型保持一致
逻辑建模小贴士3
- 注意模型的版本管理
- 非常非常注意细节
- 数据库专家深度介入
- 占据整个数据建模80%以上时间
不要忽视属性的长度定义和约束定义- 不要忽视属性的默认值(Default Value)
- 使用控制数据范围的域(Domain)
逻辑建模交付品的特点
- 要像一本书,而非一页纸
- 所有实体属性均需添加
- 实体间关系要清晰描述
- 使用术语表
- 遵循命名规范
- 采用CASE工具创建项目文件
- 对各个实体必须有清晰描述
- 对关键属性必须有清晰描述
3.物理模型
对比建筑施工图和物理模型
| 建筑施工图 | 物理模型 |
|---|---|
| 墙体的高度和厚度。比如:墙高5米,厚30厘米 | 字符长度的定义。比如:varchar、date |
| 窗子高、每扇窗子的大小,是否使用定位器等 | 字段的其他详细定义。比如:是否为空、是否有默认值 |
| 各线路的具体位置。比如:水管、电线、网线,以及留下图纸以备未来维修。 | 详细精准的定义。比如某字段为枚举类型,各枚举值的具体含义。 |
| 设计时遵循行业标准以及一定准则。比如:卫生间的防水标准、墙面漆的使用质地 | 约束的定义:唯一主键、唯一值、强关系约束等等; 遵循术语表:统一的缩写表,一致的参照术语表。 |
物理建模小贴士1
- 使用CASE工具由逻辑模型自动生成
- 应用术语表自动转换生成字段名称
- 对表空间、索引、视图、物化视图、主键、外键等都有命名规则
- 逆规范化在逻辑层完成,而非本层
数据库DBA深度介入,需要DBA的评审(Peer Review)- 和数据库的DDL保持一致
- 注意版本管理
- 注意开发、测试、生产三个不同版本的模型管理
- 注意性能
- 估算数据规模
- 考虑数据归档
- 充分考虑未来使用数据库的优点和缺点
物理建模交付品的特点
- 自动生成基础库表结构,之后适度手动调整
- 与未来要使用的数据库类型息息相关
- 生成数据字典并发布
- 可直接用于生成DDL
- DDL中注意注释的生成
二、如何进行高质量数据建模
什么样的模型算是高质量数据模型?
- 对真实世界的抽象正确而完整
- 用建模语言表达清晰而准确
- 框架稳定且灵活,满足当下的需求并能够一定程度容纳未来的变化
- 根据需求尽可能减少数据冗余
- 充分考虑潜在的性能问题
- 从企业全局的视角出发构筑模型