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

3

我一直在为我的网站设计一个 SQL 模型,但我很困惑如何将这些图像存储到我的数据库中,以便在整个网站中使用。

首先,每个个人资料将包含相关的 10 张图片。其中包括 4 张带缩略图的截图和两张额外的图片,这些图片将在整个网站上使用。

将每个图像的路径存储在它自己的列中是否可以?我的一个朋友告诉我应该将所有图像放在其自己的表中,并进行交叉引用以获得更好的性能。不过,我将同时从个人资料中调用与图像本身有关的各种信息。

我只是想知道这样做的常见做法是什么。

再次强调,我没有将实际图像存储在数据库中,只是存储图像路径。

2个回答

5

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

如果个人资料有多个图像,则为图像创建单独的表。

个人资料表:

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
}

是的。我知道。我正在询问在数据库中存储一系列它们以便在整个站点中使用的更好方法是什么。将每个图像路径存储在自己的列中最好吗?将每个图像存储在单独的表中的自己的行中,然后从配置文件表中引用它——最好吗?还是将每个图像分开用逗号分隔,然后使用序列化显示它们……等等。 - Sebhael
每个图像路径位于其自己的列中...好吧,我会这样做,但这完全取决于您的喜好和模式。 - Shoe
好的,这帮助澄清了很多。谢谢你的帮助。 - Sebhael

0

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

您可以创建其他编码,例如逗号分隔列表,但是您也需要进行处理,但字符串解析通常性能较差,并可能引起错误。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接