2012-06-04 48 views
1

我正在爲客戶做一個網站,但是我偶然發現了一個問題,我需要一些建議。數據庫設計可變數量的字段

對於每個項目,他們希望有可能設置可變數量的圖像和(有時)一些相應的文本。

我正在考慮將所有信息存儲在一個字段中,而不是將字段1存儲到field_99以防萬一他們需要99個字段。

// database column 

'../fotos/foto1.png', 
'hier komt tekst', 
'../fotos/foto2.png', 
'', (empty text) 
'../fotos/foto3.png' 

該解決方案有一些不足之處,必須有更好的方式來實現這一點。

什麼是做到這一點的最佳方法是什麼?

+1

將圖像放入單獨的表格中並使用外鍵。 – toniedzwiedz

+0

其他人已經回答了這個問題,但是既然你說你正在爲客戶做這件事,我只想確定你明白了連接多個數據項或將數字數據存儲到文本字段的想法有多糟糕。你*會*後悔這樣做。如果您已經在應用程序的其他部分完成了這項工作,那麼現在就可以修復它了,然後纔會變得更加困難。文本字段只能存儲文本。 – wadesworld

回答

3

用所有可能的foto值創建另一個表(例如FOTO_CODES)併爲它們生成id。

創建另一個子表,該表具有來自FOTO_CODES表和FOTO數據(圖像)的主表記錄ID和ID。

它被稱爲標準化。

+1

+1在使用關係數據庫時,總是嘗試將許多列轉換爲多行。 –

+0

謝謝大家,你們指出我正確的方向。 – guy1997

0

您所描述的解決方案違反了atomicity的原則,因此也是1NF。您在維護和查詢此格式的數據時遇到問題。

這是一個經典1對多的關係,即可以用兩種方式來建模:

1)確定的關係:

enter image description here

2)非標識關係:

enter image description here

都有優點和缺點,StackOverflow已經有很多討論離子在這個題目。