首页 > 解决方案 > 当在 97.4% 的情况下会导致 1:1 关系时,我是否应该规范化数据库表?

问题描述

我有一个交易卡游戏卡的数据库表。大约有 19 000 张卡片/行具有不同的名称,但其中大约 500 张(2.6%)与另一张卡片共享功能。这些卡(及其功能)之间的关系可能更差。更差的关系也可以给予分数,因此基于卡片的功能创建更好的更差关系是有意义的,因此这些点在碰巧共享功能的不同卡名之间共享。我也可能会扩展更坏的关系,因此应该使用面向未来的解决方案。

一个例子:卡片 A 和 B 具有相同的功能。两者都比卡 C 差。如果我想给 A->C 关系加分,我也想给 B->C 关系加分是有道理的。

但是,如果我将卡片功能分离到与主卡片表不同的表中,则 18 500 (97.6%) 行将与新功能表具有 1:1 的关系,而其余的 500 (2.6%) 行将有n:1。这是不好的设计,我应该找到另一种方法吗?在这种情况下是否需要 1:1?

或者,我可以为 500 个“特殊”情况创建表,并让编程逻辑决定是使用该表来创建更差的关系还是单独的卡片表。我不太确定我是否可以充分抽象出编程逻辑中的差异,这样我以后就不会自爆了。

第三种选择是根据需要将点复制到每个关系(在事务中以确保完整性)。这可能是最难维护的方式。任何新功能也需要以某种方式复制。

标签: mysqldatabase-designrelational-databasedatabase-schema

解决方案


推荐阅读