在数据库中处理300字段表单

时间:2012-05-10 13:20:27

标签: php mysql

所以,我现在正处理一个巨大的在线表格。它在视觉上分成不同的部分,但那些往往会改变。有大约300个字段,将它们放入单个表中几乎是荒谬的,但是如果我将它们分开并且有人决定在几个不同的场合将字段移动到前端的不同部分,那么它将成为数据库中的一个混乱和字段与前端部分不匹配。

我基本上是在问: 以规范化的方式组织这样的事情的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

您可以将字段名称移动到另一个表,并在值表中引用它们。

实施例

field_id   | field_name
------------------------
1          | first_name
2          | last_name

然后从值中引用:

value_id  | field_id   | value
--------------------------------
1         | 1          | John
2         | 2          | Doe
3         | 1          | Max
4         | 2          | Jefferson

答案 1 :(得分:1)

如果您要使用SQL数据库,那么上面描述的实体 - 属性 - 值模型(EAV)可能是一个很好的答案。您可能还希望将几个非规范化表与常用或专用数据混合使用。

另一个选项可能是文档存储;这听起来就像激发像MongoDB这样的数据存储的问题。在MongoDB中,您只需将所有内容存储为巨型json文档。如果某些记录不需要某些数据而被遗漏,则在稀疏填充的宽SQL数据库表的方式中,它不会被视为“坏”。

答案 2 :(得分:0)

您可以对字段进行分组。将它们分离为组件,您可能会注意到,您可以从该组中创建多个表。也可以通过分隔表来制作表格,例如:

  • fieldset标记
  • 将其分成多个步骤(它认为是最佳解决方案)
  • 填写上一个表格之后的多个ajax请求
  • 由打开/关闭javascript窗口分隔的表单

答案 3 :(得分:0)

数据库设计,对象设计和表单设计是三个非常不同的元素。如果数据之间存在关系,则应该使用不同的表来规范化数据。但是,如果一切都是一对一的关系,那么在同一个表中拥有所有300个是完全可以接受的。我发现很难相信存在一个有300个元素的逻辑甚至物理结构;但这是可能的。如果你开始涉及某些事物的属性数据,那就说我们正在谈论一辆车。我们可以谈论汽车,卡车,半汽车,摩托车,自行车等......这些类型的车辆中的每一种都具有不同的属性,这些属性将在单独的表格中进行管理以规范化数据。将它们移动到不同的页面并不是很有意义;但移动共同属性可能会。例如,我不会在第1部分和第4部分再次询问颜色。但我可能会将事情分类为描述品牌,型号和自定义属性。

相关问题