mysql维度建模:如何创建没有代理主键的表?

beq87vna  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(720)

据我所知,事实表中没有主键,而放置代理键不知何故是在浪费空间。因此,外键组合是事实表的主键。
但我可能无法做到这一点,因为唯一键可能会在事实表中重复,例如,同一个人在同一天,在同一家餐厅付了两次钱。在这个cas中,主键不再是唯一的。。。
有什么办法解决这个问题吗è我,不添加代理密钥?
提前谢谢!

ws51t4hk

ws51t4hk1#

innodb,如果你不提供pk,会给你提供一个。但是它是6个字节并且是隐藏的。与4字节的代理项相比 INT ,这个更大!
检查数据;可能有一个“自然”的pk是一列或列的组合。
一般来说,对于dw,事实表上唯一的索引就是pk。然后我使用“摘要表”来处理大部分访问。它们更小更快。在极端情况下,我将清除旧的事实行(通过 DROP PARTITION )但要永远记住总结表。这样可以控制磁盘空间,同时几乎不会丢失任何有用的数据。
底线:为每个表提供一个显式的pk。

eivnm1vs

eivnm1vs2#

如果您正在构建这样一个表,强烈建议使用主键或唯一键组合,但如果您避免添加pk,则可能需要添加唯一的事务号,这样您就可以将客户号和事务号组合为键组合。

相关问题