数据模型

  • 是一组由符合、文本组成的集合,用以准确表达信息,达到有效交流,沟通的目的

数据模型设计的元素

1. 实体 Entity

  • 描述业务的主要数据集合
  • who,what,where,why,how

    2. 属性 Attribute

  • 描述实体里的单个信息

    3. 关系 Relationship

  • 描述实体与实体之间的数据规则

  • 结构规则:1-N,N-1,N-N
  • 引用规则:电话号码不能单独存在

    image.png

传统模型设计:从概念到逻辑到物理

  • 数据模型的三层深度

    image.png

从开发者的视角

模型逐渐细化的过程

1. 概念模型

  • 联系人
  • 分组

    2. 逻辑模型image.png

    3. 第三范式下的物理模型

  • 每个实体在数据库里尽量不存在冗余

  • 通过联系来组合

    image.png

MongoDB文档模型设计的三个误区

1. 不需要模型设计

2. 应该用一个超级大文档来组织所有的数据

3. 不支持关联或者事务

关于JSON文档设计模型

  • 文档模型设计是处于物理模型设计阶段(PDM)
  • JSON文档模型通过内嵌数组或者引用字段来表示关系
  • 文档模型设计不遵从第三范式,允许冗余
    image.png

为什么说MongoDB是无模式

  • 严格来说,MongoDB同样需要概念/逻辑建模
  • 文档模型设计的物理层结构可以和逻辑层类型
  • MongoDB无模式的由来
    • 可以省略物理建模的具体过程
  • 逻辑模型 -> JSON模型
    image.png

文档模型的设计原则

两个关键点:

  • 性能
  • 开发易用

关系模型 VS 文档模型image.png