SQL ERD新手问题

时间:2010-01-11 08:31:35

标签: sql erd

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

我如何知道要使用的连接类型,内部,左外部,右外部,全部外部,

当然,如果数据库已正确创建,那么它们都将是内连接吗?条形码数据质量问题

3 个答案:

答案 0 :(得分:3)

每种类型的联接都会有所不同,所以这一切都取决于各个查询的目标。

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

答案 1 :(得分:0)

不,他们不会全都是INNER JOIN。

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

答案 2 :(得分:0)

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

你应该绝对能够内部连接到所有维度。不幸的是,我们不能在工作中使用数据仓库,因为我们在大多数维度表中都没有记录来表示空记录。

修改

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

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

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