我有一個非常長的具有整數值的行程項目列表。我正在考慮創建一個數據庫,每個項目都有50列,但看起來有點冗長,而且行程可能會改變。有沒有更好的方法來將這些name =>值對存儲在數據庫中?序列化似乎有點粗糙,我正在考慮創建一個帶有名稱,值列的itinerary_items數據庫並將數據粘貼在那裏。什麼是最好的解決方案?在數據庫中存儲大型數組
回答
爲什麼不把它們像表格中的屬性一樣保存。這是
| id| name | value |
+---+------------+--------------+
| 1 | array_key | array_value |
| 2 | array_key2 | array_value2 |
如果一個人想在陣列的多個實例,人們可以隨時添加額外的按鍵用於跟蹤實例:
| id| name | value | instance_key |
+---+------------+--------------+--------------+
| 1 | array_key | array_value | 1 |
| 2 | array_key2 | array_value2 | 1 |
| 3 | array_key | array_value | 2 |
| 4 | array_key2 | array_value2 | 2 |
問題與使用此類型的解決方案是的做法數據往往更不易於人類閱讀,並且如果對象上有多個屬性,則會有大量額外的聯接。
正如你所提到的,你幾乎都有一個關鍵的列和一個值的列,並插入記錄。
如果您存儲的數據不用於搜索數據庫,並且只在應用程序代碼中更新,那麼我會傾向於將其存儲爲blob。如果您很可能會更新其中的部分內容,而無需讀取完整的數據集以進行有意義的更新,那麼帶有id,user_id,key,value等列的單獨表格就可以順利完成。
寫出一個for循環來創建INSERT語句,然後執行查詢以將數組保存到具有鍵和值列的表中。要重新創建數組,請從表中檢索並使用另一個for循環將值重新插入到數組中。
我在這種設置中可以看到的唯一問題是,如果您計劃有多個數組實例並且必須保存所有這些實例,因爲數據庫表只能表示數組的一個實例。
如果計劃擁有多個實例,最好的方法是序列化並存儲在BLOB或TEXT列中。
你有多少條記錄?數百?成千上萬的?
如果你的記錄數低於500,那麼我認爲你根本不應該拿起數據庫。您可以將其存儲在XML文件中。這些是NoSQL :)的時間。
不是我支持這個動作,而是一個數據庫看起來像你的需求的超速。
我用JSON的這種過去的事情使用PHP5的json_encode()和json_decode()功能:http://uk.php.net/json_encode
所有你需要做的是在你的數據庫中的文本字段並將JSON編碼數組插入其中。如果不需要搜索您要存儲的數據,那麼這是存儲數據的一種非常有效的方式,因爲您可以方便快捷地將JSON字符串轉換回PHP數組並根據需要輸出。
你也可以看看YAML,雖然PHP還沒有出現有一個內置的一套功能解析YAML,所以外部類是必需的:http://railsforphp.com/2008/01/08/php-meet-yaml/ http://railsforphp.com/2008/01/08/php-meet-yaml/
你最好的,最簡單的方法是使用連載。
- 1. PHP/MYSQL在數據庫中存儲大型數據集
- 2. 將數組存儲在數據庫中
- 3. 將巨大的數組存儲在數據庫中
- 4. PHP - 將大會話數組存儲在$ _SESSION或數據庫中?
- 5. 在數據庫中存儲大量整數大數組的有效方法
- 6. 從數據庫中檢索數據並存儲在數組中
- 7. SQL存儲過程在大型數據庫中失敗
- 8. 在數據庫中存儲大型列表的正確方法
- 9. 如何在數據庫中存儲大型列表
- 10. 數據庫 - 將數值存儲在VARCHAR數據類型中
- 11. 在MySQL(5.6)數據庫中存儲json數組的數據類型
- 12. 用於存儲大型JSON的SQL Server數據庫中的數據類型
- 13. 將數據存儲在數據庫中
- 14. 在android數據庫中存儲數據
- 15. 不在數據庫中存儲數據
- 16. ZODB或其他數據庫在python中的大型數據存儲
- 17. 將大量圖形數據結構存儲在數據庫中
- 18. 在MySQL數據庫中存儲大量數據的問題
- 19. 將大量數據存儲在數據庫中
- 20. 將數組存儲到SQLite數據庫
- 21. k2組件將數據存儲在數據庫中的位置?
- 22. 存儲庫中的大型測試數據集
- 23. 槍數據庫存儲模型的大型集中存儲數據,微小的協作客戶
- 24. 在一個字段中存儲多個數據(將數據存儲在數據庫的數組中)
- 25. 將整數數組存儲在數據庫中
- 26. 在Django數據庫中存儲整數數組
- 27. 將數組數組存儲在數據庫字段
- 28. 數據存儲/大型網站的組織。如何組織?
- 29. 如何在數據庫中將數據存儲到數據庫
- 30. 如何將雙精度數組存儲到varbinary數據類型中,並將其存儲到數據庫中?
這是我的想法,我不確定這是否是最好的解決方案,但... – brndnmg 2009-07-17 07:40:24
如果您添加一個額外的鍵來跟蹤實例,也許添加第二個(主)表來跟蹤的這些實例,甚至可能會命名每個實例。 – 2009-07-17 07:55:28