如何使用动态值进行动态数据库设计

时间:2012-01-13 13:32:14

标签: database-design relational

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

3 个答案:

答案 0 :(得分: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

然后,您所要做的就是为关键表添加一个条目,用于给定用户在其表单中的每个选项。阅读时,请阅读关系表并搜索具有所需用户ID的所有条目。

正如Aaron Digulla建议的那样,您可以使用像我的示例中的“int position”这样的字段将选项的位置保存在User-Checkbox-Relation中。这样,每次呈现表单时,您都可以以相同的顺序显示选项。 :)

答案 1 :(得分:0)

使用您的属性创建XML并将其存储在数据库中,然后从那里获取它并解析您的属性或创建数组类型字段并在那里存储您的name = value对。

干杯

答案 2 :(得分:0)

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

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

  2. 如果用户只能从一组有限的选项中选择,那么您应该有一个包含所有选项的表,并创建一个包含USER_IDPOSITION,{{1 },OPTION_ID

  3. 如果您始终需要所有选项,并且您永远不需要按文本或状态搜索条目,则可以使用自己的数据结构并将其另存为数据库中的BLOB。优势:你完全自由的结构如何工作和看起来像。缺点:你最好在第一次就把它弄好,因为把它迁移到一个新的结构中会很糟糕。