【问题标题】:What is the best way to store a series of images in MySQL?在 MySQL 中存储一系列图像的最佳方法是什么?
【发布时间】:2011-03-06 19:39:49
【问题描述】:

我一直在为我的网站开发 SQL 模型,但对于如何将这些图像存储在我的数据库中以供在网站上使用,我真的很矛盾。

首先,每个配置文件将包含总共 10 张相关图片。 4 个屏幕截图,带有缩略图和两个额外的图像。这些图像将在整个站点中使用。

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

我只是想知道诸如此类的常见做法是什么。

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

【问题讨论】:

    标签: mysql image relational-database


    【解决方案1】:

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

    如果配置文件有超过 1 张图片,则为图片创建单独的表格。

    个人资料表:

    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
    }
    

    【讨论】:

    • 是的。我知道。我在问将它们中的一系列存储在数据库中以供整个站点使用的更好方法是什么。将每个图像路径存储在它自己的列中最好吗?将每个图像存储在单独的表中它自己的行中,然后从配置文件表中引用它 - 最好?或者存储每个图像用逗号分隔,然后使用序列化来显示它们......等等
    • 每个图像路径都在自己的列中...好吧,我会这样做,但这完全取决于您的偏好和模式。
    • 好的,这有助于更清楚地说明这一点。感谢您的帮助。
    【解决方案2】:

    如果您要为每个配置文件存储多个图像,您应该制作一个图像表。这会在您每次查找配置文件的图像时导致表连接(通常性能较差),但会保持数据库规范化。

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2020-11-23
      • 2013-02-04
      • 2019-02-13
      • 2012-10-23
      • 2011-02-27
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多