2011-12-24 81 views
2

當用戶上傳圖像時,我以3種不同的尺寸調整圖像大小。我不能決定什麼是更好的選擇:
在數據庫問題中保存圖像路徑

1)將圖像路徑保存在數據庫中的一列如User9876/ImageName和另一列中的擴展名。當我從數據庫獲取用戶配置文件數據時,我的業務對象有三個屬性,用於不同的圖像大小。而在代碼中,我從數據庫中,如添加擴展到圖像路徑填補這一特性:

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

2)或者最好是在數據庫中三列的每個大小?

回答

2

夫婦的建議:

  1. 不要單獨存儲擴展,除非你打算查詢特定的擴展。只是增加了更多的複雜性而沒有真正的收益

  2. 我會將圖像大小代碼作爲id存儲在圖像表中。這樣,您可以更新/編輯圖像代碼,而無需在整個表上運行更新語句。

    創建表圖像( id INT(11)無符號不爲空的auto_increment, path VARCHAR(255)不爲空, size_code_id SMALLINT(3)不爲空, PRIMARY KEY(id) )發動機= MyISAM的默認字符集= UTF8;

實例行:

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

這樣的設計可以讓你無需解析文件名查詢「小」的形象,但你仍然可以從媒體的小圖像的區別和文件系統上的原始圖像。

1

我想你的問題的答案可以通過問你自己另一個問題找到:如果你後來選擇不是三個,但是四個不同的圖像尺寸,會發生什麼?顯然,不需要您重新組織整個數據庫的解決方案會更好。