在数据库问题中保存图像路径

时间:2011-12-24 21:26:44

标签: database database-design web-applications

当用户上传图片时,我会调整3种不同尺寸的图片。我无法决定什么是更好的选择:

1)将图片路径保存在数据库中的一列中,如:User9876/ImageName和另一列中的扩展名。当我从数据库获取用户配置文件数据时,我的业务对象具有三个不同图像大小的属性。在代码中,我通过从数据库添加扩展到图像路径来填充此属性,如:

User9876/ImageName_Original.jpg
User9876/ImageName_Small.jpg
User9876/ImageName_Smallest.jpg

2)或者最好在数据库中为每个大小设置三列?

2 个答案:

答案 0 :(得分:2)

一些建议:

  1. 请勿单独存储扩展名,除非您计划查询特定扩展名。只是增加了更多的复杂性,没有真正的收获。

  2. 我会将图片大小代码存储为图片表中的ID。这样您就可以更新/编辑图像代码,而无需在整个表格上运行更新语句。

    创建表格图像(     id int(11)unsigned not null auto_increment,     path varchar(255)不为null,     size_code_id smallint(3)不为null,     主要关键(id) )Engine = MyISAM默认字符集= utf8;

  3. 示例行:

    1 | user9876/imagename_og.jpg | 1
    2 | user9876/imagename_me.jpg | 2
    3 | user9876/imagename_sm.jpg | 3
    

    此设计允许您查询“小”图像而无需解析文件名,但您仍然可以在文件系统上区分中小图像的小图像。

答案 1 :(得分:1)

我认为你的问题的答案可以通过问自己另一个问题来找到:如果你后来选择不是三个,而是四个不同的图像大小会发生什么?显然,不需要您重新组织整个数据库的解决方案更好。

相关问题