数据库中单列中的多个值


multiple values in single column in database?

我有一个想法,用户可以为他或她的画廊上传最多5张图像,并可以选择其中一个作为他或她的个人资料图片。是否有可能将所有5张图片的名称保存在单个列中,例如image ?或者我必须做5个单独的列来存储这些文件名?

作为一个例子,我可以创建一个名为images的列并以这种方式存储值:

{"129cc68678d1e67d18d49d93cec040ce":{"filename":"129cc68678d1e67d18d49d93cec040ce.jpg"},"97ac1e22ea3fd6f02362233d8147ecb5":{"filename":"97ac1e22ea3fd6f02362233d8147ecb5.jpg","primary":true},"eeb239b4edff7e1a09246d38977a5646":{"filename":"eeb239b4edff7e1a09246d38977a5646.jpg"},"55a3810c1b0eaee039c753c12dccbc38":{"filename":"55a3810c1b0eaee039c753c12dccbc38.jpg"}}

Primary:true意味着它是一个特色图像/个人资料图片。

你的两个建议——一栏5条信息和五栏5条信息——都是坏主意。如果您想将限制更改为4、6或20,该怎么办?

将数据规范化。为图像创建一个表,为用户-图像关系创建另一个表。在第二个表中,为个人资料图片设置一个标志。

您需要做的是创建另一个表来保存您的图像文件名。您的画廊表将保存一个ID和您为画廊存储的其他信息,然后您的图像表将有三列。一个用于它的ID,一个用于文件名,另一个用于存储它所属的库的ID(称为外键)。