鄧強勁
(民航湖南空中交通管理分局技保部,湖南 長沙410137)
現代通信設備型號繁多,而且各個設備之間線路復雜。以無線通信接受信號為例,信號從接收機下來以后需要通過不同的傳輸設備來保障傳輸信號的穩定可靠,同時在機房還需對該信號進行各個終端設備的引接,這樣信號將會被一層一層地引接下去。而且一般機房這種需引接的信號均在幾十或上百以上,每個信號又分別由發射、接收等信號組成,再加上還有有線勤務電話,可見維護機房信號的復雜性。每一個設備維護人員都希望在任何一路信號有問題時,能快速簡單地查到這一路信號所經過的配線模塊,進而對每一個點進行測試,以便在規定時間內解決問題。
為此希望有一個數據庫,大到各臺站的信號走向,小到終端機房設備的一根跳線,都記錄在案,可以方便地查詢和修改信號的走向,亦可查詢和修改配線柱上所走的信號。
建立數據庫的第一步是選用恰當的數據模型。數據模型的主要功能是用于描述數據和數據的關聯。它包含三個基本要素:數據結構、數據操作和數據約束條件。
在數據模型的三個要素中數據結構是基礎,它決定著數據模型的性質。主要的數據結構有層次結構、網狀結構、關系結構和面向對象的結構。基于關系結構的數據模型稱為關系模型。
在關系模型中,實體間的聯系是通過二維關系來定義,每一個二維關系可以用一張二維表來表示。它主要涉及到如下一些內容,關系、記錄、字段、域、數據、主關鍵字段、關系模式。它相對層次模型、網狀模型具有以下的優點:具有嚴密的數學基礎;概念單一化,表達直觀,但又具有較強的數據表達和建模能力;關系經過嚴格的范式理論規范化;它對數據的操作通過集合進行,不具有方向性,不管如何操作,難度都是一樣的。當然關系模型相對面向對象模型也有自身的缺點,但是目前面向對象模型的相關理論和方法還不夠成熟,因此選用關系數據模型作為通信資源數據庫的數學抽象。
關系模式是關系所涉及的屬性的集合。這些屬性的設置是出于對刻劃實體以及實體間聯系的需要。關系模式設計得合理就能夠在保證滿足這種需要的前提下盡可能使這些屬性少而簡單。
規范化在數據庫設計中有著重要的作用。范式是規范化理論中基本而重要的概念,它是對關系數據庫進行等級分類的一種標準,分為六種:第一范式,第二范式,第三范式,BC范式,第四范式,第五范式。它們對關系的限制是逐級遞增的,而且每一級都包含前一級所帶的約束條件。設計數據庫的目標就是逐步提高范式的等級使之處于一個合理的水平,使設計工作盡可能少的同時又能極大地減少數據冗余,消除插入異常和刪除異常。一般,關系數據庫只要它的所有關系都能滿足BC范式就可以用極少的數據充分地描述實體間聯系。
回過頭來看前面提出的問題,最終希望能夠得到的查詢結果是如圖1的形式,知道經過任一一點的信號是什么信號,從哪里來的,到哪里去。這樣一個結點的信息主要包括該結點所處的模塊及在此模塊的行列號、此模塊所處的機架編號、該結點上走的信號、該結點前級結點的信息(此前級結點所處的模塊及在此模塊的行列號、此模塊所處的機架編號)及與此前級結點的連接信息、該結點后級結點的信息(此后級結點所處的模塊及在此模塊的行列號、此模塊所處的機架編號)及與此后級結點的連接信息等等,其形式如下:
綜合結點:結點編號,結點所處模塊信息,行,列,機架,信號所屬臺站,信號類型,信號名稱,前級結點所處的模塊,行,列,機架,與前級結點連接信息1…n,后級結點所處的模塊,行,列,機架,與后級結點連接信息1…n,……其中行列是指結點的位置信息,即結點所處模塊的行列。

圖1 期望查詢結果
實際上,此綜合結點是符合第一范式的定義:設R是一個關系模式,對于R的任意一個屬性a,如果a的每一個屬性值都是不可再分的數據項,則稱R屬于第一范式。
但是此綜合結點關系存在以下缺點:
(1)大量的數據冗余,圖1中結點2為結點3和結點8的前級結點,這樣它的信息就會以前級結點的形式出現在結點3和結點8中;
(2)插入異常,由于結點9沒有后級結點,這樣結點9將無法加入插入;
(3)刪除異常,刪除結點3,將導致結點4沒有前級結點。
因為第一范式有上述問題的存在,需引入更高級的范式。
設R是一個關系模式,如果R屬于第一范式且每個非主屬性都完全依賴于主碼,則稱R屬于第二范式。第二范式是比第一范式更高級別的范式,它能有效地部分消除第一范式存在的數據冗余、插入異常和刪除異常。
綜合結點的主碼為結點編號,結點2的后級結點既有結點3同時又有結點8,所以后級結點并非完全依賴于主碼,不符合第二范式的定義。
為了使綜合結點關系符合第二范式對其進行分解為:
結點(結點編號,結點所處模塊信息,行,列,機架,信號所所屬臺站,信號類型,信號名稱);
連接(連接編號,前級結點編號,后級結點編號,連接信息1…n);
其它關系略。
經過分解,新的關系在很大程度上解決了原關系存在的一些數據冗余、插入異常和刪除異常的問題。
但是問題并沒有徹底解決,由于存在傳遞依賴,使得冗余異常問題依然存在。為此把目光轉向第三范式。
設R是一個關系模式,如果R屬于第二范式且每個非主屬性都非傳遞依賴于主碼,則稱R屬于第三范式。
可見,新得到的關系中信號類型←信號名稱(信號類型依賴于信號名稱),信號名稱←結點編號,所以信號類型傳遞依賴于結點編號。為此,必須對關系進行新的分解,以消除傳遞依賴關系,使其滿足第三范式的定義。
經過分解,得到如下的關系:
結點(結點編號,模塊編號,行,列,信號編號);
信號(信號編號,信號所屬臺站,信號類型,信號名稱);
模塊(模塊編號,機架信息,位置);
連接(連接編號,前級結點編號,后級結點編號,連接信息1…n)。
經過新的分解得到的關系,同時也符合BC范式的定義:設R是一個關系模式,如果對于R中任一一個非平凡函數依賴于B→C,都有B包含某一個候選碼,則稱R屬于BC范式。如果一個關系模式屬于BC范式,則它一定屬于第三范式。至此關系數據庫使用的所有關系都是符合BC范式的關系,這個數據庫已經很完美了。如果再片面地追求滿足更高級別的范式關系,會使數據庫的設計變得非常復雜。
以上列舉了設計數據庫、簡化關系所需的主要工作。除此之外,還需要對它作一些處理,比如“模塊”中的“機架”,為了管理上的方便,也為了不至于使一張表做得過大,對它專門設計了一張表,而在表“模塊”中只是保存了“機架”的索引號。
將經過規范與分解后得到的屬于第三范式的每一個關系做成一個表,表及表與表的關系數據約束就構成了所需的完整的關系數據庫。這樣就把通信資源做成了一個完整關系數據庫,經過數據錄入和數據維護就可以方便準確地查詢顯示通信資源的信息(如圖1)。
認真對待工作中的需要,就能發現問題,解決問題,提高效率。前文完成了數據庫的設計工作,但是數據的錄入同樣是一件不可忽視的細致工作,一個數據的錄入錯誤可能導致以后工作的致命失誤。比如將某個頻率A的接線點錯錄成了另一個頻率B的接線點,就有可能導致在頻率A的線路檢查排故時將頻率B的路由斷開,若頻率B是一個正在使用的管制頻率,那后果就可想而知。
[1] 蒙祖強.SQL Server 2005應用開發大全[M].北京:清華大學出版社,2007.
[2] 譚浩強.數據結構[M].北京:清華大學出版社,1994.
[3] 唐發根.數據結構教程(第2版)[M].北京:北京航空航天大學出版社,2005.