页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

  • 星型模型:所有维表都直接连接到事实表上,整个视图就像星星一样。

Image RemovedImage Added

星型模型强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。

  • 雪花模型:一个或多个维表没有直接连接到事实表上,而是通过其他维度表连接到事实表,视图就像多个雪花连接在一起。

Image RemovedImage Added

雪花模型是对星型模型的扩展,它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。如将产品维表分解为产品类别维表。

...

模型设计过程中,模型表的关系也是很重要的一项内容。

关系的确立需要通过匹配列中的数据(通常是两表中同名的列)。在大多数情况下,该关系会将一个表中的主键(它为每提供了唯一标识)与另一个表的外部键中的某项相匹配。例如,通过创建 orderdetails表中的 orderid(主键)与orders 表中的 orderid 列(外部键)之间的关系,则销售量就与订单相关联了。

一对多(多对一)关系

一对多关系是最普通的一种关系。在这种关系中,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。例如,publishers 和 titles 表之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。

...

关系的确立需要通过匹配键列中的数据(通常是两表中同名的列)。在大多数情况下,该关系会将一个表中的主键(它为每行提供了唯一标识)与另一个表的外部键中的某项相匹配。例如,通过创建 orderdetails表中的 orderid(主键)与orders 表中的 orderid 列(外部键)之间的关系,则销售量就与订单相关联了。

一对多(多对一)关系

一对多和多对一是相对关系,如下列的课程表与老师表:

Image Added

站在课程表的角度看是:多对一;站在老师表的角度看是:一对多。

在一对多或多对一的关系中,我们习惯把一的一方称为主表,把多的一方称为从表。

在数据库中建立一对多的关系,需要使用数据库的外键约束:

Image Added

Course表中的T_id字段建立外键约束,指向Teacher表中的T_id。

一对一关系

在一对一关系中,A 表中的一行最多只能匹配于 B

...

表中的一行,反之亦然。比如,一个人只能有一个身份证号,一个身份证号只能属于一个人。

Image Added

如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。

Image Added

这种关系并不常见,因为一般来说,按照这种方式相关的信息都在一个表中。可以利用一对一关系来:

  • 分割具有多列的表。
  • 由于安全原因而隔离表的一部分。
  • 保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。
  • 保存只适用于主表的子集的信息。

多对多关系

多对多关系中,A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。例如,authors 和 titles 表具有多对多关系,这是由于这些表都与 titleauthors 表具有一对多关系。titleauthors 表的主键是 au_id 列(authors 表的主键)和 title_id 列(titles 表的主键)的组合。多对多的关系,可以看成是两个多对一的关系,如下的课程表和学生表:

Image Added

站在课程表的角度,一门课可以被多个学生选择,是多对一的关系;站在学生表的角度,一个学生可以选择多门课程,是多对一的关系。

这两个表的多对多关系,通过一张关联表来建立关联:

Image Added

101课程被学号1、学号2的学生选择;学号1的学生同时选择了101、202、303的课程。

目前Smarbi数据模型构建仅支持一对多(多对一)和一对一关系。

...