要在Web表单中读取的DB表中的变量结构

au9on6nz  于 2022-10-22  发布在  Java
关注(0)|答案(1)|浏览(156)

我有一个“变量”结构要放在表DB中。我所说的“变量”是指一系列的字段/值,其中字段的“种类”决定了值类型,我不知道字段的确切顺序,也不知道字段可以重复多少次。有时,一组字段会重复几次(这是一个财政模型)。
附加要求:我应该将这些变量数据Map到网页表单中,处理一些CRUD工作。JQuery ui,Struts 2,Hibernate。首选DBMS:MySQL。
我想到的解决方案:
1.立式table。我可能会遇到一些性能问题,当我需要大量数据处理时,我可以使用“旋转”列中的行的物化视图来解决这个问题。在这个方向上没有走得太远,因为它的开发成本似乎很高。
1.LOB字段。将我的列打包到其中一个中,也许有一个“Map”表来解码每一列。我的想法是将可搜索字段作为“真实”列,以便在LOB中留下不太有趣的数据,而不会产生性能问题。
1.或更好的2a。在LOB字段中使用xml。这可能有助于更轻松地打包/解包数据,特别是必须将数据Map到web表单。
你怎么认为?此外,是否有某种方法可以从xml字段创建自动视图?或者更好地将这些数据Map到web表单?我怀疑Hibernate Tools在我描述的任何情况下都不起作用。
我希望我已经清楚了,即使对我来说,这仍然有点困惑:)

qjp7pelc

qjp7pelc1#

您的选项1是Entity-Attribute-Value反模式。
请参阅我对Product table, many kinds of product, each product has many parameters的回答和我的博客文章EAV FAIL,了解备选方案以及EAV错误的原因,至少对于关系数据库(我在书SQL Antipatterns Volume 1: Avoiding the Pitfalls of Database Programming中介绍了EAV)。
还请阅读这篇文章,了解一个类似的结构如何差点毁了一家公司:Bad CaRMa
您的选项2和3与How FriendFeed uses MySQL to store schema-less data中描述的类似。我不知道ORM有什么自动方式来为您维护该结构。您确实有一项繁琐的工作,就是使反向索引表与LOB数据保持同步。

相关问题