【问题标题】:Database design variable amount of fields数据库设计可变数量的字段
【发布时间】:2012-06-05 00:24:13
【问题描述】:

我正在为客户建立一个网站,但我偶然发现了一个问题,我需要一些建议。

对于每个项目,他们希望能够设置可变数量的图像和(有时)一些相应的文本。

我正在考虑将所有信息存储在一个字段中,而不是将 field_1 设置为 field_99,以防万一他们需要 99 个字段。

// database column

'../fotos/foto1.png',
'hier komt tekst',
'../fotos/foto2.png',
'', (empty text)
'../fotos/foto3.png'

这个解决方案有一些缺点,必须有更好的方式来实现这一点。

执行此操作的首选方法是什么?

【问题讨论】:

  • 将图像放在单独的表中并使用外键。
  • 其他人已经回答了这个问题,但既然你说你是为客户做这件事,我只是想确定你明白连接多个数据项或将数字数据存储到文本中的想法有多糟糕场是。你后悔这样做。如果您已经在应用程序的其他部分完成了它,那么现在是时候修复它了,在它变得更加困难之前。文本字段应该只存储文本。

标签: sql database-design


【解决方案1】:

使用所有可能的 foto 值创建另一个表(例如 FOTO_CODES)并为它们生成 id。

创建另一个子表,该子表将具有来自 FOTO_CODES 表和 FOTO 数据的主表记录 ID 和 ID(图片)。

这叫做标准化。

【讨论】:

  • +1 使用关系数据库时,请始终尝试将多列转换为多行。
【解决方案2】:

您描述的解决方案违反了atomicity 的原则,因此违反了 1NF。您将无法维护和查询这种格式的数据。

这是一个经典的一对多关系,可以通过两种方式建模:

1) 识别关系:

2) 非识别关系:

各有利弊,StackOverflow 已经有很多关于这个话题的讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 2015-07-29
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2021-09-24
    • 2023-03-14
    相关资源
    最近更新 更多