2016-08-29 87 views
1

我需要將多個圖像存儲在一行中。所以,我可以遵循兩個方面。將多個圖像URL存儲在數據庫的單行中

1.第一種方式

一種方法是1NF形式(應該避免,因爲我在書本上讀過)。

我將創建一個表飼料與列地址和存儲用逗號

ID網址

1 A.JPG,B.JPG,C.JPG分隔的幾個網址

2 xyz.jpg,image.jpg的

要檢索圖像,我會使用爆炸()

$photos = explode(' , ', $url); 

2.第二方式

第二種方法是歸一化所述表並創建具有許多單獨的圖像表進行表飼料一個關係

飼料表:

ID

圖片表:

FIDURL

1 A.JPG

1 B.JPG

1 C.JPG

我想知道爲什麼我們應該第一種方法無效?或者對於小型項目使用第一種方法是否可行?

+1

如果您想對圖片網址進行排序,該怎麼辦?使用1NF會使數據庫級別的操作變得非常複雜。使用規範化的形式,它將是簡單的ORDER BY子句。它也適用於WHERE子句。 –

回答

0

如果我們談論圖像規範化不會帶給你任何東西。你從不過濾,排序或聚合圖像的文件名。

所以,你最初的想法是接近正確的(第一種方式)。但我會建議使用json_ *函數來存儲值。

$urls = json_encode(['x.jpg', 'y.jpg', 'z.jpg']); 
// INSERT INTO mytable (..., urls) VALUES (..., $urls); 

// SELECT urls FROM mytable; 
$photos = json_decode($data['urls']); 
2

您有可變數量的圖像名稱嗎? 「數組」應該作爲另一個表中的行來實現。和你的#2一樣。

你顯然已經完成了作業並閱讀了論據;我不會在這裏重蹈覆轍。相反,我建議用兩個學習練習來解決這個問題。

  1. 繼續執行#1。一個月後,您將瞭解這些問題。在這一點上,你將得到另一個教訓,即...
  2. 如何將模式(1表格轉換爲2)和保存數據。這將需要幾個SQL語句;他們將成爲第二次學習練習。
相關問題