mysql - 当在 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 个“特殊”情况创建表,并让编程逻辑决定是使用该表来创建更差的关系还是单独的卡片表。我不太确定我是否可以充分抽象出编程逻辑中的差异,这样我以后就不会自爆了。
第三种选择是根据需要将点复制到每个关系(在事务中以确保完整性)。这可能是最难维护的方式。任何新功能也需要以某种方式复制。
解决方案
推荐阅读
- typescript-compiler-api - 修改*一些*文件后,在程序实例中重新生成类型的最快途径是什么?
- android - 在 android 中使用 expo-speech 不起作用并抛出异常
- python - Python - 如果该值包含在其他值中,则从数组中删除该值
- here-api - 如何请求 HERE Map Places 较低级别的类别?
- swiftui - 通过实时预览 (SwiftUI) 执行动作/使用手势
- javascript - Typescript - 扩展接口(无构造函数)的类(带构造函数)
- karate - 定位器查找显示 ReferenceError: "home" is not defined** in
- python - 如何仅使用普通 python 激活 google colab gpu
- excel - 如果没有匹配则跳过多行代码
- c# - 如何从 Controller JsonResult Action 方法重新加载页面