2010-02-04 43 views
4

我有一個php對象的數組,我想存儲到一個mysql數據庫表。我能想到的唯一方法就是隻用一張表來表示具有唯一標識的對象和一個用於存儲數組的獨立表(可能有一列array_id和一個object_id),但檢索會需要一個連接,我相信這可能會得到昂貴。有沒有更好的辦法?我不太關心存儲空間或插入時間和檢索時間。最快的方式來表示數組在mysql中檢索

我不一定需要這樣做才能用於關聯數組,但如果解決方案可以,那將是首選。

+0

你需要存儲哪些對象的字段? – outis

回答

2

在mysql中構建一個樹形結構(讀爲Array)可能會很棘手,但它一直都會完成。幾乎所有具有嵌套線程的論壇都有一些機制來存儲樹結構。另一張海報說,他們不必昂貴。

真正的問題是你想如何使用數據。如果您需要能夠添加/刪除單個節點的數據字段的樹,那麼你可以使用兩種模式之一

1)鄰接表型號

2)改性預購樹的遍歷算法

(他們聽起來很可怕,但並不是我承諾的那麼糟糕。)

第一個列出的可能是你會遇到的更常見的,第二個是我開始更頻繁地使用的,一旦你有了一些很好的好處把你的頭包在裏面。看看這個頁面 - 它有一個關於兩個優秀的寫作。 http://articles.sitepoint.com/article/hierarchical-data-database

正如另一張海報說,如果你不需要改變數據查詢或文本內搜索然後使用PHP函數將它存儲在一個字段。

$array = array('something'=>'fun', 'nothing'=>'to do') 

$storage_array = serialize($array); 

//INSERT INTO DB 

//DRAW OUT OF DB 

$array = unserialize($row['stored_array']); 

快速變化,這是一件很容易。

0

如果您對無法通過數組內的數據進行SQL搜索感到滿意,則可以向表中添加一列,然後將數組序列化到該表中。你將不得不通過retreival反序列化它。

你可以使用JSON/PHP serializeation或什麼更適合你發展的語言

0

加入不必如此昂貴的 - 你可以定義一個索引。

相關問題