2

所以,我现在正在处理一个巨大的在线表格。它在视觉上分为不同的部分,但这些部分往往会发生变化。大约有 300 个字段,将它们放在一个表中几乎看起来很荒谬,但是如果我将它们分开并且有人决定在几个不同的场合将一个字段移动到前端的不同部分,它将在数据库中变得一团糟和字段将不匹配它们的前端部分。

我本质上是在问:以标准化方式组织这样的事情的最佳方式是什么?

4

4 回答 4

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
于 2012-05-10T13:28:26.003 回答
1

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

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

于 2012-05-10T13:48:34.140 回答
0

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

  • 字段集标签
  • 将它分成多个步骤(它认为最好的解决方案)
  • 填写前一个表单后,每个表单的多个 ajax 请求
  • 由打开/关闭 javascript 窗口分隔的表单
于 2012-05-10T13:25:34.970 回答
0

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

于 2012-05-10T13:49:38.130 回答