Database design 如何设计这两张桌子?

Database design 如何设计这两张桌子?,database-design,dynamic-data,relational-database,Database Design,Dynamic Data,Relational Database,我想构建一个允许用户构建自己表单的应用程序。 用户可以在表单中输入数据并查询数据。表单在创建和使用后可以进行编辑(添加/删除表单中的字段)。表单可以有小文本框、大文本框、单个列表、复选框或下拉菜单 我一直在阅读并四处询问,哪种方法更适合构建这种模型 我没有得到一个直接的/好的答案。我了解到,在这种应用程序中,基于列的设计(并将每个字段表示为一列)不是一个好主意,因为用户可以添加许多字段,而这不是一个好主意,因为表中的列数应该有限制。但是,我无法预先知道用户将添加多少字段。(我不确定他们的意思。如

我想构建一个允许用户构建自己表单的应用程序。
用户可以在表单中输入数据并查询数据。表单在创建和使用后可以进行编辑(添加/删除表单中的字段)。表单可以有小文本框、大文本框、单个列表、复选框或下拉菜单

我一直在阅读并四处询问,哪种方法更适合构建这种模型 我没有得到一个直接的/好的答案。我了解到,在这种应用程序中,基于列的设计(并将每个字段表示为一列)不是一个好主意,因为用户可以添加许多字段,而这不是一个好主意,因为表中的列数应该有限制。但是,我无法预先知道用户将添加多少字段。(我不确定他们的意思。如果你能举例进一步解释,会有很大帮助。)

我认为一个好主意可能是根据字段类型对字段进行分组。(第1类: 文本框,类型2:下拉列表,类型3:单一列表…等等)。我想设计我的表,这样我就可以随时升级我的应用程序并添加新类型,而无需更改模式。所以我想有两个表,一个表保存关于字段的元数据:它的类型、名称、它在表单中的位置,另一个表保存字段的实际值。我似乎不知道这些表中到底有什么,以及如何正确地设计它们。非常感谢你的帮助

**Form**     A Form Template
----
formID (PK)
authorID
Name



**FormField**    =  1 row for each new question on the form
----------   
FormFieldID (PK)
FormID   (FK)
FieldID  (FK)
SortOrder  INT


**FormFieldOptions**     - if the form field is a selectbox this will store the options availble to pick from
---------------
FormFieldID   (fk)
Name
SortOrder  INT


**Field**            -- The will be Text Short, Text Long, Checkbox, Radiobutton, Selectbox etc
------
FieldID   (PK)
Name      
TYPE    

这是为了创建表单。用于保存用户对表格的答案/回复,我将留给读者练习;)

和平,应用程序的目的是什么?如果我理解正确的话,您希望任何用户都能够创建自己的表单,而其他用户则可以使用该表单填写信息?将其视为一种“SurveyMonkey”,人们可以为其他人创建调查,这是否准确?您问题的最后一部分是您问题的答案。一个表描述表单的字段,另一个表保存响应值。这些不同的元数据(类型、名称、位置)是元数据表的列。是的,我知道!但是我不知道在这两个表中到底应该放些什么,这样如果我以后想添加另一个类型,我就不必改变模式了。。比如说,起初我只有文本框和单个列表……之后……我决定让用户使用下拉菜单……这两个表应该如何才能让我在不改变模式的情况下灵活地添加新类型……更好的说法是,这两个表够了吗??可能是