【发布时间】:2012-03-22 00:33:24
【问题描述】:
MySql 数据库中的大多数表都不是EAV tables。我一直在阅读 SQL Antipatterns 并试图确定重新设计此表的最佳方法。我知道我们会喜欢在我们的 spring 表单中更容易引用和更好的数据完整性的好处。
EAV table 具有可选属性,可能会带来费用。在代码中,现在有 55 个选项,而且这个数字还在不断增长。每笔费用的平均属性数为 2.719,单笔费用最多使用 39 个属性。
在这种情况下创建一个包含 55 个以上选项的表格是理想的,还是下一个必须在表格大小上保持这种畏缩的人?
【问题讨论】:
-
如果您注意到只有某些选项子集在一起才有意义,那么您可以使用多种表继承形式之一将它们重构为子表。
-
谢谢,我已经考虑过了,但每次我开始它都是一项艰巨的任务,因为这么多费用类型可能包含也可能不包含字段。我可能只需要坐下来把它写出来看看它是否能正常工作。
标签: java mysql entity-attribute-value