2013-02-12 85 views
2

好吧,所以我一直在處理這個最近幾個月,主要是因爲我是一個新手...我做了我的閱讀和我的研究,這是結果...圖表模式反饋

我正在爲我的網站設計一個圖庫表的模型。基本上,我會上傳一張圖片(filename)並創建5種不同尺寸(small,thumb,medium,large,big)。

我已經建立了不同規模的準則:

  • 用於上傳圖片的最小尺寸爲100像素
  • --->始終創建smallthumb尺寸
  • 如果上傳圖像大於100 px --->創建small,thumb,medium尺寸
  • 如果上傳的圖像大於350 px --->創建small,thumbmediumlarge大小
  • 如果上載的圖像是大於700 PX --->創建smallthumbmediumlargebig大小

每個尺寸將具有它的通過定義自己的文件名filename +代表大小的suffix。所以,一個小圖像的文件名將以_s後綴(1234_s.jpg),帶有_t後綴(1234_t.jpg)的大拇指等等...

我也決定創建一個小文件系統結構,因爲我可能最終會上傳大約125 000張圖片。一些與此類似:

http://www.mywebsite.com/gallery/images/0/6/image1.png 
http://www.mywebsite.com/gallery/images/5/4/image2.png 

到圖像的路徑將駐留在config.php文件,我將保持到圖像文件夾的相對路徑的數據庫名爲relative_dir

我還需要列下保持寬度和高度,使其在瀏覽器中顯示正常(如果需要顯示許多拇指,使用getimagesize可能會給服務器帶來很大壓力)

因此,經過幾周的閱讀和研究,我想出了這個(記得我是一個新手)

任何反饋,建議?

IMAGE 
----------------------- 
image_id 
title 
caption 
relative_dir 
filename 
small_filename 
small_width 
small_height 
thumb_filename 
thumb_width 
thumb_height 
medium_filename 
medium_width 
medium_height 
large_filename 
large_width 
large_height 
big_filename 
big_width 
big_height 

回答

2

有列像value1value2value3或你的情況smallmediumlarge是表示非規範化問題。它使得體積龐大,如果您想要添加(或刪除)圖像大小,則必須更改模式。我不知道爲什麼你需要_width/_height列,因爲每個列似乎都有基於其大小狀態的靜態寬度/高度(例如,small總是100px),但無論如何。我建議三個表:

ImageUploads -- canonical image table 
iuID, title, caption, relative_dir, filename 
(do you need *both* relative_dir/filename) 

ImageSizes -- settings for sizes; width/height may go here as well 
isID, 
sizeName (small, medium, large, big, thumb) 
sizeSuffix (_s, _m, _l, _b, _t?) 

Images 
iuID, isID 

使用Images表就可以輕鬆搞定的標準圖像文件名,標題/字幕/等。並獲得你需要的後綴。如果寬度/高度需要根據每個單獨的文件而不同,或者如果每個文件的尺寸不同,則寬度/高度將在此表上顯示。如果您想要使用默認值,但也可以靈活使用,您也可以同時使用這兩種方法。

+1

哇!它只花了你5分鐘來模型!感謝您的解釋。尺寸是動態的,並且每個單獨的文件都不相同。所以,如果我上傳一個2500像素×1200像素的圖像,拇指將是100像素×48像素,等等......(我使用imageMagick)..所以尺寸將在圖像表...此外,把relative_dir和文件名合併成一列是很有意義的......謝謝! – Marco 2013-02-12 20:54:43