表示方法
在
管理信息系統中表示管理樹結構的一般來說有三種方法:欄位表示法、代碼表示法和靜態指針表示法。
欄位表示法
欄位表示法就是把結點在樹中的層次關係用若干欄位表示出來。管理信息系統基本上是關係
資料庫,關係型
資料庫中每條記錄都存儲了1個
結點的信息。假設需要N個欄位來存儲結點的信息,若樹的高度為M,這樣就為資料庫再增設M一1個欄位.從樹根開始,每層對應1個新增的欄位。這樣。資料庫的每條記錄都包含N+M一1個欄位,除了存儲結點自身的信息外,還存儲了1條從根結點到該結點的路徑,這條路徑清楚地表示出結點在樹中的層次關係。
代碼表示法
代碼表示法就是把結點在樹中的層次關係用1個代碼來表示。在
資料庫中,除了用於存儲結點自身信息的N個欄位外,只需增設1個欄位來存儲樹的層次信息。這個欄位就是代碼段,代碼的寬度不小於樹的層次數。從樹根開始,每層對應著
代碼中的1位,即根結點對應代碼第1位,……,第N層的結點對應代碼第N位。
靜態指針表示法
靜態指針表示法就是利用指針來指示結點在樹中的層次關係。許多高級語言都提供“
指針”這種數據類型,而資料庫卻沒提供,我們可以在
資料庫中引用“指針”這一概念。假設有N個欄位存儲結點自身的信息,再增設1個欄位,作為指針欄位。該欄位是數值型欄位,起指針的作用,故稱靜態指針,指示結點的雙親在資料庫中的存儲位置。由於資料庫中每1條記錄都對應有1個記錄號,存儲位置可由記錄號來表示。
通過以上比較。欄位表示法描述樹中層次關係上勝過代碼表示法和靜態指針法。但隨之而來的卻是大量的冗餘。靜態指針表示法很好地解決了
冗餘的問題。但在描述樹中層次關係上不如欄位表示法直觀。代碼表示法無論是冗餘度上還是直觀性上處於中立。
設計方案
樹型結構
組件的設計有三種方案:一是採用進程外點的編號;完整路徑標題;完整路徑編號等其它信息。伺服器組件
設計方案,此方案設計是利用已經設計好的數據服務層組件實現樹型結構的管理。二是重新設計數據服務層並將樹型結構作為一種特例,單獨設計數據服務層時.將樹型結構直接設計在數據服務層。三是採用控制項的方式設計樹型結構管理組件。
如果採用第一種方案,則在樹型
數據管理用戶接口組件與資料庫系統之間多了一層,這樣運行效率會低一些。如果採用第三種方案,一般對於每一個實例均需要單獨設計一個用戶界面.這樣代碼的可重用性不是很高。這裡採用第二種方案,用戶組件採用進程外
伺服器的模式提供給
應用程式。這樣做的好處:一是可以完全與應用程式設計分割開,有利於系統的調試。二是應用程式不需要對每個樹型結構的數據設計.只需要在使用此類套用時調用進程外伺服器。三是可將此組件不同套用模式的具體實現封裝在組件內,保留一個接口給用戶使用此組件時進行模式的設定。但這樣以來增加了組件設計的複雜性。
基本組織特點
表達節點關係
1)反映了結點的層次關係:管理樹可以把樹看成是滿足一定條件的結點的有窮
集合,結點之間存在層次關係或主從關係。有兩種層次關係:包含關係和
繼承關係。典型的包含關係如業務單據樹。在實際業務中,用戶可能會對業務單據進行一定的改動,例如增加一個
數據項(稱為指標)。這時.系統應該儘量做到不改動應用程式就滿
足用戶的改動需求。為此,在系統資料庫中記錄了業務單據表的
元數據信息,同時,使用控制
資料庫,將改動後的單據顯示給用戶。
反映節點結構
2)結點的分類結構:樹的組織是按照一定標準的。同一業務按照不同的分類標準有不同的樹型結構。以水泥生產企業項目為例,從關心業務流程的角度出發.設備管理功能樹的第1層子結點可以分為採購、契約、入庫、
出庫等;從關心某些重要設備的角度出發,如果用戶關心的角度不同,樹的組織形式就不同,它們之間可以實現相互轉換。