2009-04-17 75 views
0

我目前在MySQL中有一個表格,通常存儲值,但我想向存儲數組值的表格(如城市)添加一個字段。我應該簡單地將該數組存儲爲CSV嗎?每一行都需要它自己的數組,因此我對創建一個新表以及插入前一個表中插入的每行插入2-5行感到不安。在表格中存儲/檢索數組的最佳方式

我覺得像這種情況應該有一個名字,我只是不能把它:)

編輯

數量的元素 - 2-5(從城市的動態列表中進行選擇,該數組引用列表,這是一張表)

該字段不需要被搜索,只需與其他數據一起檢索。

回答

1

「正確」的方法是讓另一個表格保存每個值,但因爲您不想走分界列表應該工作的路線。只要確保你選擇了一個不會顯示在數據中的分隔符。您還可以將數據存儲爲XML,具體取決於您計劃如何與數據進行交互,這可能是更好的途徑。

+0

如果您致力於將數據存儲在文本字段中並且正在考慮使用XML,那麼您將通過給YAML至少一眼就可以完成一項服務。我完全沒有時間成爲轉換者。 – Sniggerfardimungus 2009-04-17 16:51:56

+0

這不一定是對/錯,我試圖找出最佳的方式來存儲/檢索這些信息。 – Blaine 2009-04-17 17:10:39

0

也許你正在尋找的詞是「正常化」。如在,將數組移動到一個單獨的表,通過一個鍵鏈接到第一個表。這有幾個優點:

  • 數組大小可以增長几乎無限期

  • 高效的存儲

  • 能力來搜索數組中的值,而不必使用「喜歡」

當然,是否對這些數據進行歸一化的決定取決於您未提及的許多因素,例如ele無論數量是否固定,元素是否需要搜索等。

1

我會想到包含您的逗號(或其他邏輯分隔符)分隔值的字段。只要確保你的領域將足夠大,以保持最大的數組大小。然後,當您將該字段拉出時,應該很容易使用分隔符對長字符串執行explode(),然後該分隔符會立即將您的數組填充到代碼中。

0

是您的應用程序PHP嗎?這可能是值得研究的功能serializeunserialize

這兩個函數允許您輕鬆地將數組存儲在數據庫中,然後在稍後重新創建該數組。

0

正如其他人提到的,另一個表是適當的的方式去。

但是,如果你真的不想這樣做(?),假設你使用PHP和MySQL,爲什麼不使用serialize()並存儲序列化的值?

相關問題