孟凡榮,閆秋艷
(中國礦業大學計算機科學與技術學院,徐州221116)
數據庫技術產生于20 世紀60 年代末70 年代初,其主要目的是有效地管理和存取大量的數據資源。數據庫技術主要研究如何存儲、使用和管理數據[1]。數年來,數據庫技術和計算機網絡技術的發展相互滲透,相互促進,已成為當今計算機領域發展迅速,應用廣泛的兩大領域。數據庫技術不僅應用于事務處理,并且進一步應用到情報檢索、人工智能、專家系統、計算機輔助設計等領域[2]。
從20 世紀60 年代末期開始到如今,數據庫技術已經發展了半個多世紀。在這發展歷程中,人們在數據庫技術的理論研究和系統開發上都取得了輝煌的成就,而且已經開始對新一代數據庫系統的深入研究[3]。數據庫系統已經成為現代計算機系統的重要組成部分。數據庫最初是在大公司或大機構中用作大規模事務處理的基礎。后來隨著個人計算機的普及,數據庫技術被移植到PC(Personal Computer,個人計算機)上,供單用戶個人數據庫應用,接著,由于PC 在工作組內連成網,數據庫技術就移植到工作組級。如今,數據庫正在Internet 和內聯網中廣泛使用[4]。
數據庫技術是通過研究數據庫的結構、存儲、設計、管理以及應用的基本理論和實現方法,并利用這些理論來實現對數據庫中的數據進行處理、分析和理解的技術[5]。即:數據庫技術是研究、管理和應用數據庫的一門軟件科學[6]。數據庫技術研究和管理的對象是數據,所以數據庫技術所涉及的具體內容主要包括:通過對數據的統一組織和管理,按照指定的結構建立相應的數據庫和數據倉庫;利用數據庫管理系統和數據挖掘系統設計出能夠實現對數據庫中的數據進行添加、修改、刪除、處理、分析、理解、報表和打印等多種功能的數據管理和數據挖掘應用系統;并利用應用管理系統最終實現對數據的處理、分析和理解[7]。
在數據庫技術中,一個關鍵的步驟就是數據庫的邏輯設計,數據庫設計的好壞會直接影響數據存儲和處理的性能[8]。所以,為了解決數據庫中數據的插入、刪除、修改異常等問題,必須形成一系列規范化的規則,稱為關系規范化理論[9]。關系規范化理論是數據庫邏輯設計的指南和工具,其涉及到考查關系模型的函數依賴關系、確定范式等級和對關系模式進行合并或分解[10]。關系規范化理論提供了判斷關系邏輯模式優劣的理論標準,幫助預測模式可能出現的問題,是產生各種模式的算法工具,因此是設計人員的有力工具[11]。而在實際教學中,關系規范化理論往往較為抽象,且計算較為復雜,為了使教學人員在教學中可以方便地得到關系規范化理論的結果,提高教學質量和水平,本文對關系規范化理論中的最小覆蓋、函數依賴保持和無損分解問題進行了程序實現,只要輸入關系模式和函數依賴關系,就可以得到相應的結果輸出,從而可以極大提高課堂教學效果,保證教學質量和水平。
本文針對最小覆蓋、函數依賴保持、無損分解進行代碼實現,并展示程序運行結果。本文程序基于Python 2.7.9 語言編寫,并在2.94GHz、3GB 內存配置的Windows 7 上運行。
定義3:如果函數依賴集F 滿足下列條件,則稱F是一個極小函數依賴集或最小覆蓋。
(1)F 中每一個函數依賴的右部都是單個屬性。
(2)對F 中任一函數依賴X→A,F-{X→A}都不與F 等價。
(3)對于F 中的任一函數依賴X→A,{F-{X→A}}∪{Z-A}都不與F 等價,其中Z 為X 的任一子集。
設有關系模式R(U,F),其中U 表示表示屬性集合,F 表示函數依賴,求F 最小覆蓋的步驟如下。
(1)將F 的所有函數依賴的右部分解成單一屬性,并去掉重復屬性。
(2)分別F 中考察各個函數依賴,去掉冗余的函數依賴。
(3)去掉F 中冗余的屬性。
由于該材料碳含量高、碳化物數量多,因此預熱可以減少熱應力從而減少零件的變形和開裂傾向。對于航空等精度要求高、形狀復雜的鍛件,為防止開裂,淬火后可先在100℃左右進行去應力處理。
求F 最小覆蓋的實驗代碼如下。


檢驗一個分解是否具有函數依賴保持性,其實就是檢函數依賴集是否和原函數集F 等價,其判斷函數依賴集等價的步驟如下。
其實驗代碼如下。


分解的無損連接性是通過構建屬性表的方式來判斷,其算法步驟如下。
輸出:確定ρ 是否是一個連接不失真分解。
(1)構造一個n 列k 行表,第i 行對應于Ri,第j 列對應于屬性Aj。
(2)填表:若Ai∈Ri,則第i 行第j 列上填入aj,否則填入bij。
(3)修改表:逐一檢查F 中每一個函數依賴X →Y,如果在對應于X 的那些屬性的所有列上X 的符號相同,就使這些符號相同的行中對應于Y 的那些屬性的所有列上的符號相同。即如果其中有aj,則將bij改為aj;若無aj,則將它們全改為bij。一般說,i 是其中最小行號。
(4)反復進行步驟3,如發現某一行變成a1,a2,…,ak,則此分解具有連接不失真性。
其實驗代碼如下。



本文針對關系規范化理論中最小覆蓋、函數依賴保持和無損分解判斷問題,基于Python 語言進行了程序實現,從而使教學人員在實際教學中只需要進行簡單的輸入,就能得到最小覆蓋、函數依賴保持和無損分解判斷問題的結果,提高了數據庫關系規范化理論教學的質量和水平,減輕了教學人員的講解和課業負擔,有利于數據庫技術教學的改進。