1

如果我有一个数据仓库 erd - 它有关系等

我怎么知道要使用什么类型的连接,内连接,左外连接,右外连接,全外连接,,

当然,如果数据库已正确创建,它们都将是内部连接吗?酒吧数据质量问题

4

3 回答 3

3

每种类型的连接都有不同的作用,因此这完全取决于单个查询的目的。

当您不想使用 INNER JOIN 时的一个示例是,如果您有一个包含应用程序所有用户列表的 User 表和一个每次有人登录时都会记录的 Logon 表。如果要查找所有未登录的用户,一种方法是使用 OUTER JOIN。这并不意味着您有不正确的数据库或数据质量问题。

于 2010-01-11T08:39:32.570 回答
0

不,它们不会都是 INNER JOIN。

这仅取决于您要通过查询完成的任务。每种 JOIN 都有其用途。我建议您阅读数据库供应商的手册以熟悉它们。

于 2010-01-11T08:38:01.697 回答
0

您可能仍需要在事实之间使用外连接。

不过,您绝对应该能够内部连接到所有维度。不幸的是,我们无法在工作中的数据仓库中做到这一点,因为我们在大多数维度表中都缺少一条记录来表示空记录。

编辑

事实是数字度量(例如金融交易中的美元),而维度是数据的描述符(例如参与金融交易的客户、客户的出生日期)。你最好参考一本好的数据仓库书。我推荐 Ralph Kimball 的 The Data Warehouse Toolkit。

事实表包含事实和维度的外键。维度表包含维度 ID、文本描述(例如,客户名称)和其他维度的可能外键(例如,出生日期字段的日期维度 ID)。

有时,维度属性可能在逻辑上为空。这不一定存储为空,在我的工作场所,我们使用 0 来表示空维度。目前想到的是我们在客户维度表中的死亡验证方法(例如查看死亡证明)字段。当然,我们的大部分客户都没有死,所以我们用0填充这个字段。但是我们的死亡验证方法维度表只存储实际的死亡验证方法,所以它没有记录为0(不适用)和因此,我们被迫使用左连接。

于 2010-01-11T09:19:30.210 回答