2012-01-13 78 views
1

我有一组检查表是动态的,当用户选择它需要保存在数据库中。但是表格的属性应该是动态的。因此,我们无法将清单值作为表格的列。由于清单是动态的。因此,请帮助我如何设计数据库,以免出现性能问题。当用户填写他的详细信息以及动态核对清单值时,所有详细信息都会存储到包括动态的表格中。请提供一些关于此问题的建议。如何有一个动态的数据库设计与动态值

+0

无论他们是否是“动态”,重要的是:他们的价值可以以任何方式参考?如果他们是(和我它会是一个非常奇怪的系统,如果他们不),你可以使用关联表。 – Viruzzo 2012-01-13 13:35:22

+0

你可以稍微更具体一点 - 也许提供的“动态”的表和字段的例子吗? – 2012-01-13 13:49:58

回答

3

由于Viruzzo说的,所有你需要做的是建立一个关系表,就像这样:

**Table User** 
int ID 
String name 

**Table CheckBoxOptions** 
int ID 
String description 

**Table User-Checkbox-Relation** 
int UserID 
int CheckboxID 
boolean value 
int position 

然后,所有你需要做的就是添加一个条目的关系表中的每个选项给定用户有他的形式。阅读时,阅读关系表并搜索具有所需用户标识的所有条目。

亚伦Digulla建议,您可以保存位置的用户复选框,关联的选项,使用现场就像在我的例子中,“INT位置”。通过这种方式,您可以在每次呈现表单时以相同的顺序显示选项。 :)

+1

您可能需要一个'position'添加到表'用户复选框,Relation'能够排序条目。 – 2012-01-13 13:50:46

0

创建您的属性的XML,并将其存储在数据库中,然后从那里获取并解析您的属性或创建一个数组类型字段和存储您的姓名=值对那里。

干杯

0

有很多方法来解决这个问题:

  1. 您可以创建一个表USER_IDPOSITIONTEXTSTATUS如果每个检查列表是不同的(即当没有点创建项目表列表中,因为没有重用)

  2. 如果用户只能从一组有限的清单选项中进行选择,然后你笑ULD对所有选项的表,并创建一个表USER_IDPOSITIONOPTION_IDSTATUS

  3. 如果你总是需要所有的选项,你再也不需要通过短信或状态来搜索条目,您可以使用自己的数据结构并将其保存为数据库中的BLOB。优点:你完全免费的结构是如何工作和看起来像。缺点:你最好是第一次做对,因为将它迁移到一个新的结构会变得很糟糕。