2011-09-17 27 views
1

給定一個數據集,它在結構上是遞歸的,但可能從數據點到數據點的深度有所不同,建立mysql數據庫的最佳方式是什麼?針對可變深度數據的mysql db的最佳設置

我知道這可能是一個混亂,所以這裏是我的意思的一個例子。假設你想爲一羣人儲存男性血統。並不是所有的人都可以追溯到同一點。 Person1可能能夠追溯到他的祖父,他的曾祖父的person2和他曾曾祖父的person3。我認爲爲每個可能出現的極大程度的案例提供一張表格是沒有意義的。

我的解決方案是有一個單獨的「父」表,它存儲了它的父或id的ID,一旦到達樹的末尾。但是,我發現構建完整樹的唯一方法是對每個父請求進行單個查詢,直到找到空父對象。

有沒有人有更好的解決方案?

回答

0

我的建議不是追查數據庫中的祖父。 一個典型的行應該是這樣的:

爲person_id,PERSON_NAME,biological_father_person_id, biological_mother_person_id等..

然後你就可以計算在應用方面的宏偉的父親。

一旦您的代碼實際使用,您可以開始跟蹤緩慢的查詢並根據需要開始優化。在某個時候,你可能需要稍微去規範化。也許你需要保留一列或兩列容易預處理。

但是,在對負載的位置有一個想法之前,不要設置非規範化的結構。

相關問題