如何设计这两个表?

时间:2010-12-11 23:35:15

标签: database-design dynamic-data relational-database

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

我一直在阅读并询问哪种方法更适合构建此类方法 数据库和我没有直接/好的答案。我读到在这种应用程序中,基于列的设计(并将每个字段表示为一列)不是一个好主意,因为用户可以添加许多字段,这不是一个好主意,因为应该有一个限制表中的列数。但是,我事先无法知道用户将添加多少个字段。 (我不确定它们的含义。如果你通过举例说明,它将会有很大的帮助。)

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

1 个答案:

答案 0 :(得分:0)

**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    

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