据我所知,我们在事实表中没有主键,放一个代理键在某种程度上是浪费空间。因此,外键组合是事实表的主键。
但我可能会这样做,因为唯一的关键字可能会在事实表中重复,例如,同一天,在同一家餐厅,同一人支付两次工资。在这个cas中,主键不再是唯一的...
有没有办法在不添加代理键的情况下解决这个问题?
提前感谢!
发布于 2018-11-09 00:52:20
如果您正在构建这样的表,强烈建议使用主键或唯一键组合,但如果您避免添加PK,则可能需要添加唯一的交易编号,以便您可以将客户编号和交易编号的组合作为键组合。
发布于 2018-12-30 10:09:20
如果您不提供PK,InnoDB会为您提供PK。但它是6个字节并且是隐藏的。与4字节的代理INT相比,它更大!
检查数据;可能有一个“自然”的主键,它是一列或多列的组合。
一般来说,对于DW,我在事实数据表上的唯一索引是PK。然后,我使用“汇总表”进行批量访问。它们更小、更快。在极端情况下,我将清除旧的事实行(通过DROP PARTITION),但会“永远”保留汇总表。这样可以控制磁盘空间,同时几乎不会丢失任何有用的数据。
底线:为每个表提供一个显式的PK。
https://stackoverflow.com/questions/53212212
复制相似问题