【发布时间】:2018-11-08 16:36:58
【问题描述】:
据我了解,事实表中没有主键,放置代理键在某种程度上是浪费空间。因此,外键组合是事实表的主键。
但我可能无法做到这一点,因为唯一键可能会在事实表中重复,例如同一个人在同一天在同一家餐厅支付了两次费用。在这种情况下,主键不再是唯一的......
有没有办法在不添加代理键的情况下解决这个问题?
提前致谢!
【问题讨论】:
-
这听起来像是一个事务表,而不是事实表。而在事务表中,你应该有时间。
-
@GordonLinoff 我有一个时间维度,但如果是同时呢?
-
。 .事实表包含共享维度值的事物的摘要。不应该有重复。如果您不想要摘要,那么它不是事实表。如果你想要一个事务表,那么你仍然应该有区分它们的 some 属性。如果没有时间,那么收银员什么的。
-
@NicolasTang - 你应该问的问题是“我如何区分合法的多次出现和重复?”。这是一个 ETL 问题,而不是表设计问题。如果您可以确定这些记录是有效的,则不需要它们是唯一的。 (旁注:一般情况下,事实表中不应该有主键 - 仅在维度中)。
-
无论我们是否写过一本书,我们都可以发表意见。在事实表等维度建模概念的定义上,我倾向于与 Kimball 一起使用,这样就不会那么混乱了。
标签: mysql sql data-warehouse dimensional-modeling