我目前在MySQL中有一個表格,通常存儲值,但我想向存儲數組值的表格(如城市)添加一個字段。我應該簡單地將該數組存儲爲CSV嗎?每一行都需要它自己的數組,因此我對創建一個新表以及插入前一個表中插入的每行插入2-5行感到不安。在表格中存儲/檢索數組的最佳方式
我覺得像這種情況應該有一個名字,我只是不能把它:)
編輯
數量的元素 - 2-5(從城市的動態列表中進行選擇,該數組引用列表,這是一張表)
該字段不需要被搜索,只需與其他數據一起檢索。
我目前在MySQL中有一個表格,通常存儲值,但我想向存儲數組值的表格(如城市)添加一個字段。我應該簡單地將該數組存儲爲CSV嗎?每一行都需要它自己的數組,因此我對創建一個新表以及插入前一個表中插入的每行插入2-5行感到不安。在表格中存儲/檢索數組的最佳方式
我覺得像這種情況應該有一個名字,我只是不能把它:)
編輯
數量的元素 - 2-5(從城市的動態列表中進行選擇,該數組引用列表,這是一張表)
該字段不需要被搜索,只需與其他數據一起檢索。
「正確」的方法是讓另一個表格保存每個值,但因爲您不想走分界列表應該工作的路線。只要確保你選擇了一個不會顯示在數據中的分隔符。您還可以將數據存儲爲XML,具體取決於您計劃如何與數據進行交互,這可能是更好的途徑。
也許你正在尋找的詞是「正常化」。如在,將數組移動到一個單獨的表,通過一個鍵鏈接到第一個表。這有幾個優點:
數組大小可以增長几乎無限期
高效的存儲
能力來搜索數組中的值,而不必使用「喜歡」
當然,是否對這些數據進行歸一化的決定取決於您未提及的許多因素,例如ele無論數量是否固定,元素是否需要搜索等。
我會想到包含您的逗號(或其他邏輯分隔符)分隔值的字段。只要確保你的領域將足夠大,以保持最大的數組大小。然後,當您將該字段拉出時,應該很容易使用分隔符對長字符串執行explode(),然後該分隔符會立即將您的數組填充到代碼中。
是您的應用程序PHP嗎?這可能是值得研究的功能serialize和unserialize。
這兩個函數允許您輕鬆地將數組存儲在數據庫中,然後在稍後重新創建該數組。
正如其他人提到的,另一個表是適當的的方式去。
但是,如果你真的不想這樣做(?),假設你使用PHP和MySQL,爲什麼不使用serialize()並存儲序列化的值?
如果您致力於將數據存儲在文本字段中並且正在考慮使用XML,那麼您將通過給YAML至少一眼就可以完成一項服務。我完全沒有時間成爲轉換者。 – Sniggerfardimungus 2009-04-17 16:51:56
這不一定是對/錯,我試圖找出最佳的方式來存儲/檢索這些信息。 – Blaine 2009-04-17 17:10:39