数据库设计可变数量的字段

时间:2012-06-04 12:31:17

标签: sql database-design

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

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

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

// database column

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

这个解决方案有一些不利因素,必须有更好的方法来实现这一点。

这样做的首选方法是什么?

2 个答案:

答案 0 :(得分:3)

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

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

这称为标准化。

答案 1 :(得分:0)

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

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

1)确定关系:

enter image description here

2)非识别关系:

enter image description here

两者都有利有弊,StackOverflow已就此主题进行了大量讨论。