2010-06-29 183 views
2

信息想象一下,你有一個像這樣在數據庫中的樹形數據結構:在數據庫結構與節點的樹狀數據結構

Level:  
id nextlevel desc 
    1   2  company 
    2   3  department 
    3   4  group 

Nodes: 
    id level parentnode 
    0  1   null -> the company 
    1  2   0  -> dep 1 
    2  2   0  -> dep 2 
    3  3   2  -> group 1.1 
    4  3   2  -> group 1.2 

我想存儲有關各個層面的信息。也就是說,關於公司,部門和團體的信息。你會怎麼做?

我想我可以添加一列到水平表,其中存儲表相關。該表會是這樣:

Level:  
id nextlevel desc   table 
    1   2  company  company 
    2   3  department deparments 
    3   4  group   groups 

然後創建這些表:

Company: 
    id level  desc   etc... 
    1 1 Acme Company 

我一直在想一個更好,更完美的解決方案,但我沒有找到任何。 有人可以幫我嗎?這是一個好的解決方案嗎?

問候。

回答

1

關係的方法是擁有單獨的公司,部門和組表。如果要在公司,部門和組表中存儲不同的元素,則它們應該是單獨的表格。

公司表將只有一個公司ID字段作爲主鍵。你會有一行,或者在一個集團的情況下,有多行。

部門表將有一個部門ID字段作爲主鍵。公司ID將是一個外鍵。

組表將有一個組ID作爲主鍵。部門ID將是一個外鍵。如果有多個公司ID行,公司ID可能是外鍵。

要獲取公司,部門,組織實體的所有或部分內容,您需要對主鍵及其關聯的外鍵進行連接。