2012-12-07 59 views
-2

我有一個MySQL 5.0數據庫使用下面的模式:創建MySQL 5.0中的查詢/視圖一個一對多的關係

Database schema

我使用它在Web應用程序對服務器進行Ajax調用/ words,在這裏我使用PDO查詢數據庫並返回json。我的目標是讓生成的JSON這樣的:

[ //array of words 
{ 
"word": "...", 
"fonetics": "...", 
... 
"meanigngs":[] // array of meanings (objects) 
"inflections":[] // array of inflections 
"examples":[] 
}, 
... 
] 

一到實現這一目標的方法是查詢數據庫的多個次,每次每一個表,然後在PHP的JSON結構的工作。我知道這不是很好,但我主要是前端人員,而我對MySQL不太瞭解。 我也在考慮創建一個組成所需表的視圖。

你能指導我找到最佳解決方案,或者甚至可以寫一段創建視圖/從數據庫中獲取所需數據的mysql嗎?

回答

0

如果您需要所有的數據,並且希望它按照您描述的方式在對象層次結構中構建,那麼在應用程序級別這樣做可能確實是您的最佳選擇。請確保按word_id對錶格進行排序,以便您可以從查詢結果中的連續行獲取子數組的值。

替代品將包括:

  • 查詢數據庫一次爲每個子陣列。這將使構建結構變得容易很多,並且可能會減少客戶端的內存消耗,但這會導致更多的查詢。如果你這樣做,那麼一定要準備好陳述!
  • 通過連接表創建一個大視圖。這將會大量複製數據,特別是因爲您在完全不相關的表格之間包含完整的交叉產品,例如一個意義和一個變化之間的每個組合等等。絕對不是這裏的路線。