DB

数据建模和ER图

2020-08-30  本文已影响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 速度,我们可以:

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

  1. 雪花结构 snowflake schema
  1. 星型结构 star schema

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

上一篇下一篇

猜你喜欢

热点阅读