2010-01-11 63 views
1

如果我有一个数据仓库ERD - 它具有relationsips等SQL ERD新手问题

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

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

+2

所需连接的类型取决于需要做什么..人们会希望内部连接总能正常工作,但是您不能依赖它。最好学习数据的语义,连接的语法,然后弄清楚如何使用两者! – lexu 2010-01-11 08:34:51

回答

0

不,他们不会全部是内部联接。

这只取决于您想要用您的查询完成的事情。每种JOIN都有其用处。我建议您阅读数据库供应商的手册以熟悉它们。

3

每种类型的连接都做了不同的事情,所以这一切都取决于个别查询的目的。

不想使用INNER JOIN的例子是,如果您有一个User表,其中包含所有应用程序用户的列表以及每次登录时记录日志的登录表。如果你想查找所有未登录的用户,一种方法是使用OUTER JOIN。这是而不是意味着你有一个不正确的数据库或数据质量问题。

0

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

你应该一定能够内连接到所有维度。不幸的是,我们无法在工作中使用数据仓库,因为我们在大多数维度表中缺少记录来表示空记录。

编辑

事实是数字的措施(例如美元的金融交易),而尺寸(例如,客户涉及金融交易,客户的出生日期)数据的描述符。你最好引用一本好的数据仓库书。我推荐Ralph Kimball的数据仓库工具包。

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

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

1

This是我每次需要刷新关于每种连接类型的知识时使用的资源。