在MySQL中存储一系列图像的最佳方法是什么?

时间:2011-01-23 14:24:33

标签: mysql image relational-database

我一直在为我的网站制作一个SQL模型,而且我真的在如何将这些图像存储在我的数据库中以便在网站上使用时发生冲突。

首先,每个配置文件将包含相关的10个图像。 4个屏幕截图,包含缩略图和两个额外图像。这些图像将在网站周围使用。

将每个图像的图像路径存储在自己的列中吗?一个伙伴告诉我,我应该将所有图像放在它自己的表中并交叉引用它们以获得更好的性能。我会用图像本身同时从配置文件中调用各种信息。

我只是想知道这种事情的常见做法是什么。

同样,我不是将实际图像存储在数据库中 - 只是图像路径。

2 个答案:

答案 0 :(得分:4)

将图像存储在文件系统上并将路径存储在数据库中。

如果配置文件有多个图像,则为图像创建一个单独的表。

个人资料表:

id | name | etc | etc
---------------------
1  | abc  | etc | etc
2  | xyz  | etc | etc

图片表:

id | profile_id |     image_url     | image_type
-------------------------------------------------
 1 |     1      | images/image1.jpg | screenshot
 2 |     1      | images/image2.jpg | other
 3 |     2      | images/image3.jpg | screenshot 

现在,您可以创建不同的功能来获取特定配置文件的图像。例如:

getProfileImages( profile_id, image_type=NULL ) {
  // run query by joining profiles and images tables.
  // return images paths
}

答案 1 :(得分:0)

如果要为每个配置文件存储多个图像,则应创建一个图像表。每次查找配置文件的图像时,这都会导致表连接(通常性能不佳),但会使数据库保持规范化。

您可以创建一些其他编码,例如以逗号分隔的列表,但您也需要对其进行处理,但字符串解析通常也会导致性能不佳,并且可能会出现错误。

我建议你先使用单独的表格,如果发现它表现不佳,请尝试优化它。