2012-08-16 36 views
1

我想在sql數據庫中創建以下層次結構。這是我的。這是正確的還是有一個更簡單的方法。另外我如何查詢它以顯示相同的層次結構?使用parentID的數據庫設計

Services 
    Property 
     Residential 
      To let 
       Purchase 
       Accommodation 
       Maintenance 
       Plumbers 
       Electricians 
       Carpenters 
     Industrial 
    To let 
       Purchase 
       Accommodation 
       Maintenance 
       Plumbers 
       Electricians 
       Carpenters 

CategoryType

CategoryTypeID CategoryName 
1 Services 
2 Products 
3 Main 
4 MainSub 
5 Sub 
6 Sub1 

Category

CateogryID  CategoryName CategoryTypeID ParentID 
1  Property Service 
2  Residential Main  1 
3  To let  MainSub 2 
4  Purchase Sub  3 
5  Accommodation Sub  4 
+0

**什麼是**數據庫系統,以及哪個版本? * SQL *只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......這樣的功能通常是特定於供應商的 - 因此我們確實需要知道**數據庫系統**你正在使用.... – 2012-08-16 18:35:40

回答

0

你的模式可以工作,但RDBMS中是出了名的難試圖代表分層數據時的工作。您要麼更新表格非常困難,要麼查詢它會非常低效。我的建議是,如果你要使用這樣的數據是考慮一個嵌套集合模型。

http://en.wikipedia.org/wiki/Nested_set_model

http://www.evanpetersen.com/item/nested-sets.html

有一個學習曲線,但它是值得的。

乾杯

+0

謝謝你真的很有趣 – 2012-08-17 08:01:07

+0

這些表不會被更新或刪除。我想填充一個可擴展的JavaScript列表樹,其數據只作爲父子節點。 – 2012-10-23 06:39:43

0

使用表格爲每個級別建立層次結構。自上而下:

費用表包含Purchase,Accomodation,Maintenance等行以及指向Ownership表的ID字段的字段。

Ownership表包含行ToBuy和ToLet以及指向BuildingType表的ID字段的字段。

BuildingType表包含Residential和Industrial行以及指向AssetType表的字段。

AssetType Table包含行Property和其他東西。

等等。

這被稱爲3範式建模。

+0

這是microsoft sql server 2008 – 2012-08-16 19:50:03