为“构建自己的表单”风格的网站寻找可扩展、灵活且快速的数据库设计 - 例如Wufoo。
规则:
- 用户只有 1 个可以构建的表单
- 用户可以创建自己的字段或从“标准”字段中进行选择
- 用户的 1 个表单具有用户想要的尽可能多的字段
- 值可以是另一个值的兄弟值 例如照片值可以具有名称、位置、宽度、高度作为兄弟值
特别规则:
- 用户每天最多可以提交 5 次表单
- 价值日期很重要
- 报告值的灵活性(对于单个用户、跨所有用户、1 个字段、许多字段)非常重要——数据可视化(大多数将基于时间顺序,例如所有用户的 2009 年 7 月的所有照片)。
表“用户”
uid
表“field_user” - 将字段分配给用户表单
菲德
uid
weight - int - 用于对用户表单上的字段进行排序
表“字段”
菲德
creator_uid - int - 字段“创建者”
标签 - varchar - 例如电子邮件
value_type - varchar - 用于确定将填写“values”表中的哪个字段(例如,如果为“int”,则该字段的值将提交数据到 values.type_int 字段 - 所有其他 .type_x 字段将为 NULL) .
field_type - varchar - 例如 'email' - 用于特殊条件,例如验证规则
表“值”
视频
parent_vid
菲德
uid
日期 - 日期
date_group - int - 值 1-5(用户每天最多可以提交 5 个表单)
type_varchar - varchar
type_text - 文本
type_int - 整数
type_float - 浮动
type_bool - 布尔型
type_date - 日期
type_timestamp - 时间戳
我知道这种方法意味着“值”表中的记录将只有一条数据,而其他 .type_x 字段包含 NULL ......但据我了解,这种设计将是“最快”的解决方案(更少的查询,更少的连接表)