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

时间:2011-12-20 18:14:48

标签: java database dynamic

我有一个“变量”结构放在表DB中。 “变量”是指一对夫妇字段/值的序列,其中“种类”字段确定值类型,我不完全知道字段顺序,我不知道字段可以重复多少次。有时候,一组字段会重复几次(这是一种财政模型)。

附加要求:我应该将这些可变数据映射到网页表单,处理一些CRUD工作。 JQuery-ui,Struts 2,Hibernate。首选DBMS:MySQL。

我想到的解决方案:

  1. 垂直表。我可能会遇到一些性能问题,我可以通过物化视图来解决这个问题,当我需要大量数据处理时,这些视图会“转动”列中的行。在这个方向上没有走得太远,因为它似乎对开发来说非常昂贵。
  2. LOB字段。将我的列打包成其中一列,可能有一个“映射”表来解码每一列。我的想法是将可搜索的字段拉出为“真正的”列,以便在LOB中留下不那么有趣的数据集,而不是产生性能问题。
  3. 或更好2a。在LOB字段中使用xml。这对于更舒适地打包/解包数据非常有用,特别是必须将数据映射到Web表单。
  4. 你怎么看?还有,有什么方法可以从xml字段创建自动视图?或者更好地将这些数据映射到Web表单?我怀疑Hibernate Tools在我描述的任何情况下都不起作用。

    我希望我已经清楚了,即使对我来说仍然有点混乱:)

1 个答案:

答案 0 :(得分:0)

您的选项1是Entity-Attribute-Value反模式。

请参阅我对Product table, many kinds of product, each product has many parameters和我的博客帖子EAV FAIL的回答,了解EAV错误的替代方案和一些原因,至少对于关系数据库(我在书中介绍了EAV,SQL Antipatterns: Avoiding the Pitfalls of Database Programming )。

另请阅读本文,了解类似的结构如何几乎注定公司:Bad CaRMa

您的选择2& 3与How FriendFeed uses MySQL to store schema-less data中描述的类似。我不知道ORM为您维护该结构的任何自动方式。你确实有让你的倒排索引表与你的LOB数据保持同步的杂事。