我正在为客户建立一个网站,但我偶然发现了一个问题,我需要一些建议。
对于每个项目,他们希望能够设置可变数量的图像和(有时)一些相应的文本。
我在考虑将所有信息存储在一个字段中,而不是将field_1设置为field_99,以防它们需要99个字段。
// database column
'../fotos/foto1.png',
'hier komt tekst',
'../fotos/foto2.png',
'', (empty text)
'../fotos/foto3.png'
这个解决方案有一些不利因素,必须有更好的方法来实现这一点。
这样做的首选方法是什么?
答案 0 :(得分:3)
使用foto的所有可能值创建另一个表(例如FOTO_CODES)并为它们生成id。
创建另一个子表,该表将具有来自FOTO_CODES表和FOTO数据(图像)的主表记录ID和ID。
这称为标准化。
答案 1 :(得分:0)
您描述的解决方案违反了atomicity的原则,因此违反了1NF。您无法以此格式维护和查询数据。
这是一种经典的1对多关系,可以通过两种方式建模:
1)确定关系:
2)非识别关系:
两者都有利有弊,StackOverflow已就此主题进行了大量讨论。