我可以在事实表中包含字符串值吗?

问题描述 投票:0回答:1

我有一个名为 Fact_Employee_leave 的事实表,其中每一行指每个员工的休假引用 (dim_employee),它在特定日期开始和结束引用 (dim_date)

我设计的事实表如下: pk_employee_leave,fk_employee, fk_开始日期 , fk_end_date , 数量小时 , 离开类型 , 审批状态

如您所见,我添加了两个字符串列“Leave Type”,指示休假类型和 ApprovalStatus(该休假是否被经理批准或拒绝)。但是,根据 Kimball 的最佳实践,我无法将字符串值放入事实表中。就我而言,这样写是否正确?

database database-design data-modeling data-warehouse fact-table
1个回答
0
投票

根据 Kimball 的维度建模最佳实践,强烈建议避免在事实表中使用字符串值。事实表应包含可用于聚合和分析的数值。

在您的情况下,“Leave Type”和“ApprovalStatus”列是字符串值,分别指示休假类型和休假批准状态。我们称它们为描述性属性,因为它们为休假事实数据提供了额外的上下文。

您必须为“Leave Type”和“ApprovalStatus”创建单独的维度表,然后在事实表中使用外键引用它们。

例如,您可以创建一个“dim_leave_type”维度表,其中包含“leave_type_key”(主键)和“leave_type_description”等列。同样,您可以创建一个“dim_approval_status”维度表,其中包含“approval_status_key”(主键)和“approval_status_description”等列。

您可以使用引用相应维度表的外键,而不是在事实表中存储“Leave Type”和“ApprovalStatus”的实际文本值。这样,您就可以保持维度模型的完整性,并通过利用数字键实现高效的查询和分析。

将描述性属性分离到维度表中,可以让您轻松管理和更新值,而无需修改事实表结构。它还可以为您的数据模型提供更好的灵活性和可扩展性。

© www.soinside.com 2019 - 2024. All rights reserved.