美文网首页DB
数据建模和ER图

数据建模和ER图

作者: 忻恆 | 来源:发表于2020-08-30 01:36 被阅读0次

    ER图

    用矩形表示实体Entity,仅仅用单数单词表示

    用菱形表示关系Relationship,总是在两个实体中间。

    cardinality 链接线上的数字,比如用m,n表示0到无穷多的数

    因此我们有一对一,一对多,多对多三种关系。

    如果一个课程可以被多/只能被一名用户学习,那么在用户附近为多/一标记;
    如果一个用户可以学习多//只能学习一个课程,那么在课程附近为多/一标志;

    ER图

    使用椭圆形表示attribute属性,可以连接到实体或者属性上面。

    完整ER图.PNG

    星型结构 VS. 雪花型结构(Star Schema vs. Snowflake Schema)

    这个是两种最常见的数据仓库的模型。

    这两者都是关系型数据库管理数据集市 data mart 或者 实体数据仓库 entire data warehouse的方法.。

    都是用了维度表格 dimension table 来描述在一个表格中的数据。

    下面用一个销售模型举例

    星型模型.PNG

    星型结构最大的特点就是,维度表格没有被正则化。dimension tables are not normalized.

    上面的结构中,fact_sales 表格存储了聚合自操作型数据库的数据,其余表格则为维度表格 dimension tables.。选取这五个维度的原因是我们需要这五个属性。

    星型结构中,中间的事实表格 fact table 被周围的维度表格 dimension table 包围住

    雪花结构.PNG

    先不要被这个庞大的图吓坏了,雪花结构模型看着庞大很多,实际上存储的数据与上面一模一样,事实表 fact table 拥有相同数量的 维度表

    最主要的差别在于,雪花结构中的维度表已经被正则化了,正则化的过程也被称为雪花化 snowflaking

    1. 正则化 Normalization

    雪花结构使用更少的空间存储维度表,因为正则化后的数据库会很大幅度地减少多余记录 redundant record

    未正则化的数据模型增加了发生数据完整性问题的概率 data integrity problems,使得后续的修改和维护更加复杂,而且雪花结构更有逻辑性

    2. 查询复杂度 Query Complexity

    雪花结构查询更加复杂,我们需要深挖数据库才能得到我们想要的数据。

    在星型结构中,我们最多只需要每一个维度表进行一次 join 操作。

    join 两个表格的操作需要数据库管理系统 DMBS 处理请求,这个操作得花费时间。因为两个表格在硬盘中的存储位置可能不同,但是在同一个表格里面的数据往往是存储在更接近的地方。

    一般来说,雪花结构的查询速度会更慢,但是在大多数情况不会表现出问题。

    为了加速报表 reporting 速度,我们可以:

    • 一定的程度地聚合数据,这会大大压缩数据,我们需要 ETL 过程来转化实时数据,使其能适应报表结构
    • 建立一个中央数据区域存储所有的数据
    • 仅仅提供给用户他们需要的分析和报表数据

    那么我们究竟怎么选择这两种模型呢?

    1. 雪花结构 snowflake schema
    • 在数据仓库中使用,因为数据仓库是公司数据的中心,这样做可以节省大量的空间。
    • 当维度表需要大量的存储空间时,我们可以选择使用雪花结构。大多数情况下,事实表 fact table 需要大部分的存储空间,同时增长速度也会远超维度表。然而,比如当维度表存储了大量的重复但需要的属性。
    1. 星型结构 star schema
    • 在数据集市 data mart 中使用,数据集市是中央数据仓库的数据子集,因此并不会包含所有的历史数据,因此没有必要节省空间
    • 星型结构简化了后续分析和使用

    上述的两个模型都是关系型数据库用到的数据仓库/集市模型,一般来说我们使用雪花结构实现数据仓库,星型结构实现数据集市。

    相关文章

      网友评论

        本文标题:数据建模和ER图

        本文链接:https://www.haomeiwen.com/subject/lldssktx.html