sql - 数据库设计帮助 - EAV + Form builder

标签 sql sql-server database database-design

我正在尝试构建一种表单生成器,它允许我以灵活的方式定义、显示和存储“测试”。 IE。允许用户通过 Web 界面创建新类型的测试/表单(“分组”)并定义一组将显示在表单上的字段(任何类型的字段,包括日期、文本、单选框、复选框, ETC)。我还需要一个结果表,用于存储在每个表单/测试中保存的值。

作为一个不充分的例子,到目前为止我有以下 3 个表:

dd_TestGrouping
- TestGroupingID [pk]  
- TestGroupingName  "Algebra-1"
- TestGroupingTypeID "Math"

dd_TestFields
- TestFieldID [pk]
- TestGroupingID [fk]
- TestFieldName "Circumference"
- TestFieldType "TextBox"
- Sequence

TestResults
- TestResultID [pk]
- TestFieldID [fk]
- value "50"
- Unit "CM"

上述问题 - 如果没有别的 - 我不确定如何动态显示下拉列表和链接的单选框/复选框。另外,我该如何处理验证?

在此先感谢您的帮助/指点。

最佳答案

要包含组合框值,您需要通过如下方式扩展您的模型:

dd_TestFields
- TestFieldID [pk]
- TestGroupingID [fk]
- TestFieldName "Gender"
- TestFieldType "Combo Box"
- Sequence

新表:

dd_TestFieldSelection
- TestFieldSelectioniD [pk]
- TestFieldID [fk]
- TestFieldValue "Female"
- Sequence

我认为验证自然属于您的 dd_TestFields 表:

dd_TestFields
- TestFieldID [pk]
- TestGroupingID [fk]
- TestFieldName "Age"
- TestFieldType "Number/Text Box"
- Sequence
- Required "True"
- MinValue "0"
- MaxValue "150"

这只是一个粗略的草图,但您可以根据需要扩展这些想法。

关于sql - 数据库设计帮助 - EAV + Form builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247883/

相关文章:

mysql - 带有 WHERE != TWICE 的 SQL 语句

c# - 查询在 SQL Server 中直接在 4 秒内执行,但在 ASP.NET 中需要 > 30 秒?

sql-server - SSIS 查找在 varchar 字段上找不到匹配项

sql-server - ORM中如何处理历史表?

PHP SQL防止重复用户名: Catching Exception vs Select Query

mysql表名长度限制? - 请测试默认的 mysql(2010 年询问 mysql <5.5)

sql - SQL 中四舍五入到小数点后两位

c# - 连接到 SQL Server 数据库

mysql - 连接两个表并从结果中进行选择

ios - 没有互联网连接时显示聊天数据,如 WhatsApp