2016-02-25 30 views
0

我有一個電子商務網站,將來會有很多圖片。當前的圖像表設計如下。請爲我的表提供更好的設計/解決方法

id (Primary) int(11) 
p_id   int(11) // product id 
original  varchar(1000) // original image url 
thumbnail  varchar(1000) // thumbnail image url - 76x76 
medium   varchar(1000) // medium image url - 228x228 
large   varchar(1000) // large image url - 560x560 
is_featured  tinyint(4) // if featured image 

表名稱:pimages(允許多個圖像)對於給定的產品ID。

要做到:已工作的罰款,直至現在,但我需要添加每一個形象的高度/寬度(原件,縮略圖,中,大)來指定它們的尺寸,這樣我可以直接把它解析爲HTML更快的瀏覽器渲染。

Catch:圖像的大小可能不一樣,也可能不一樣。假設中等圖像是228x50或200x228。

可能的解決方案:添加4個高度/寬度列,每個一個。但聽起來不太好。

+0

首先,需要將** thumbnail **和** medium **圖像存儲到數據庫中?如果這對你是強制性的**可能的解決方案**是好的/。 –

+0

這些是圖像的URL,它們的命名方式不同。說縮略圖是example.com/abc/product-1-76x76.png和中是example.com/abc/product-1-228x228.png – abhig10

+2

仍然不需要存儲它們,你可以做的是:使3個文件夾與命名原始,中等,大拇指,然後將圖像存儲到這些文件夾中。爲所有3張圖片命名。例如,對於產品1,您可以將它們保存到如下文件夾中:original/pro_1,medium/pro_1,thumb/pro_1。 –

回答

0

沒有必要將所有3個圖像存儲在數據庫:

你可以做的是:

  • 使3文件夾與名稱原來,中等,拇指
  • 存儲在這些folde圖像rs
  • 對所有3張圖像使用相同名稱

從原始圖像
使中等大小拇指與假設的尺寸:250 * 250。
做小的拇指與假設的尺寸:100 * 100

例如,
產品1,你可以將它們保存到像原/產品-1,中/產品-1,拇指/產品文件夾-1

To fetch the original image: example.com/original/product-1 
To fetch the medium thumb image: example.com/medium/product-1 
To fetch the thumb image: example.com/thumb/product-1 
+0

這將需要我編輯我的圖像相同的寬度和高度,但現在,我會用你的方式。 – abhig10

+0

@ abhig10當然。你應該試試這個。 –

0

相反,我建議你到你的pimages表結構改變這種

id (Primary) int(11) 
p_id   int(11) // product id 
image  varchar(1000) // original image url 
width  int(11) 
height  int(11) 
type   enum('original', 'thumbnail', 'medium', 'large') 
is_featured  tinyint(4) // if featured image 

所以它意味着你將存儲所有圖像一個接一個,並會痛,因爲你需要爲每個分離的圖像(如匹配屬性寬度,高度,...),並將於型由type enum('original', 'thumbnail', 'medium', 'large')申請將它們分開,你會提到這個人是你的「大」圖像

0

我會作出一些假設:

  • 你必須爲每個產品一個多個圖像
  • 每個圖像可在至少一個尺寸
  • 每個圖像大小的URL會有所不同
  • 你不能使用的命名慣例導出網址爲每個圖像
  • 您擁有圖片,而不是圖片的大小(例如「前面的圖片」,而不是「前面的圖片 - 縮略圖」)
  • 您將原始圖像存儲在某個地方,並且有調整其大小的過程。

我還假設未來,你會想要超過4種尺寸(例如,在視網膜顯示器上的大尺寸並不那麼大)。

在這種情況下,我想有:

Table PRODUCTS 
---------------- 
p_id (primary key) 
..... 

Table PRODUCT_IMAGES 
--------------------- 
image_id (pk) 
p_id (fk) 
original_url 
original_height 
original_width 
is_featured 

table IMAGE_SIZES 
----------------- 
image_id (fk) 
type   enum('original', 'thumbnail', 'medium', 'large') 
height 
width 
+0

你的回答很好,但我不想有一個額外的表'image_sizes'。所以現在,我會用我擁有的東西來管理。 – abhig10

相關問題