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

Database design 如何使用动态值进行动态数据库设计,database-design,relational,Database Design,Relational,我有一组动态的检查列表,当用户选择时,它需要保存在数据库中。但是表的属性应该是动态的。因此,我们不能将清单值作为表的列。因为清单是动态的。因此,请帮助我如何设计数据库,以避免性能问题。当用户将其详细信息与动态检查表值一起填写时,所有详细信息都存储到表中,包括动态检查表。请就这个问题向我提供一些建议。正如Viruzzo所说,您所要做的就是创建一个关系表,如下所示: **Table User** int ID String name **Table CheckBoxOptions** int ID

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

正如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”的字段。这样,您可以在每次提交表单时以相同的顺序显示选项。:)

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


干杯

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

  • 如果每个检查列表不同(即,由于没有重用,无法为列表中的项目创建表),则可以使用
    用户ID
    位置
    文本
    状态创建表

  • 如果用户只能从一组有限的选项中选择检查表,那么您应该为所有选项创建一个表,并创建一个具有
    用户ID
    位置
    选项ID
    状态

  • 如果您总是需要所有选项,而不需要按文本或状态搜索条目,则可以使用自己的数据结构,并将其保存为数据库中的BLOB。优点:您完全可以自由选择结构的工作方式和外观。缺点:你最好第一次就把它做好,因为把它迁移到一个新的结构中会是一场地狱


  • 它们是否“动态”并不重要,重要的是:它们的价值能否以任何方式被引用?如果它们是(如果不是的话,这将是一个非常奇怪的系统),你可以使用一个关联表。你能更具体一点吗?也许可以提供“动态”表和字段的示例?你可能想在表
    用户复选框关系
    中添加一个
    位置
    ,以便能够对条目进行排序。