2010-03-15 144 views
3

我有一些財務數據來存儲和操作。假設我有2個部門,在2個城市設有辦事處,2種貨幣和4個銀行賬戶。 (它實際上比這更復雜。)我想說明這樣一個列表:樹狀結構的幫助

Electronics 
    Chicago 
     Dollars 
      Account 2 -> transactions in acct2 in $ in chicago/electronics 
     Euros 
      Account 1 -> transactions in acct1 in E in chicago/electronics 
      Account 3 -> etc. 
      Account 4 
    Brussles 
     Dollars 
      Account 1 
     Euros 
      Account 3 
      Account 4 
Dessert Toppings 
    Chicago 
     Dollars 
      Account 1 
      Account 4 
     Euros 
      Account 2 
      Account 4 
    Brussles 
     Dollars 
      Account 2 
     Euros 
      Account 3 
      Account 4 

因此,在除頂層外的每一個級別,類別可以出現在多個地方。關於各種方法,我一直在使用readingaround,但沒有一個例子看起來能夠解決我特殊的使用案例,其中節點可以出現在層次結構中的多個位置。 (也許有一個不同於「樹」或「層次結構」的名稱)

我想我的層級實際上就像Division> City> Currency與'Electronics'和'Euros'只是每個級別的實例,但我不太清楚這是如何幫助或傷害。

一些注意事項:這是一個演示站點,因此數據集不會很大 - 易於安裝和維護比查詢效率更重要。 (我實際上正在考慮只是手工構建一個數據對象,儘管我寧願這樣做正確的方式。)另外,FWIW,我們正在php中使用ms訪問後端,所以任何庫在那裏讓這個環境變得簡單會很有幫助。 (我發現一對夫婦嵌套組模式的實現的了。)

回答

1

您確定要使用這種分層的設計?對我而言,層次結構似乎更像是數據結構所固有的輸出格式的結果。

如果您必須以不同的順序顯示數據,例如城市>貨幣>司?這不是很麻煩嗎?

您可以使用普通結構來代替Branches,一個用於Cities,一個用於貨幣,然後用Branch_ID,City_ID和Currency_ID作爲外鍵的一個帳戶表。

+0

這也是我得出的結論,至少在這些領域。對「任意嵌套組」有一個模糊的要求,但在決定如何實現它們之前,我必須得到更多關於真正含義的細節...... – sprugman 2010-03-17 19:59:16

0

我不知道你正在使用的數據庫平臺。但是,如果你正在使用MS SQL服務器,那麼你應該檢查出使用公共表表達式(熱膨脹係數)遞歸查詢。它們易於使用,並且專爲您所說明的情況而設計(例如,物料清單)。看看這個網站獲取更多細節:http://www.mssqltips.com/tip.asp?tip=1520

祝你好運!

+0

不幸的是,我們正在使用MS Access。 – sprugman 2010-03-16 19:18:27