MongoDB模型设计基础(更新中)
什么是数据模型
根据Steve Hoberman建模经典教程:
数据模型是一组由符号、文本组成的集合,用以准确表达信息,达到有效交流沟通的目的。
数据模型希望通过一个逻辑化,物理化的模型来给大家提供在同一个层面交流的目的。
数据模型设计的元素
- 实体 Entity
- 描述业务的主要数据集合
- 谁,什么,何时,何地,为何,如何
- 属性 Attribute
- 描述实体里面的单个信息
- 关系 Relationship
- 描述实体与实体之间的数据规则
- 结构规则:1-N,N-1,N-N
- 引用规则:电话号码不能单独存在
传统模型设计:从概念到逻辑到物理
从概念模型到逻辑模型,最后到物理模型。也就是从需求角度入手,完成逻辑设计,最后生成需要的表结构。
从开发者的视角:概念模型
从开发者的视角:逻辑模型
从开发者的视角:第三范式下的物理模型
模型设计小结
JSON文档设计模型
MongoDB文档模型设计的三个误区
- 不需要模型设计
- MongoDB应该用一个超级大文档来组织所有数据
- MongoDB不支持关联或者事务
关于JSON文档模型设计
文档模型设计处于是物理模型设计阶段(PDM)
JSON文档模型通过内嵌数组或引用字段来表示关系
文档模型设计不遵从第三范式,允许冗余。
为什么说MongoDB是无模式
在完成逻辑模型的时候,也就完成了大部分json模型的建模
文档模型的设计原则:性能和易用
关系模型VS文档模型
传统上来讲,由于MongoDB是通过文档来组织数据的,所以人们认为MongoDB是没有模型设计的,或者不需要模型设计的。其实不管是什么数据库,要想高效、易用的组织数据,模型设计是必不可少的,方式方法也是相通的。