資料的完整性在資料庫應用系統中的設計與實施

才智咖 人氣:1.92W

資料庫完整性是資料庫應用系統的最基本要求之一,下面是小編為大家蒐集整理的一篇關於資料庫完整性重要性的論文範文,供大家閱讀借鑑。

資料的完整性在資料庫應用系統中的設計與實施

 摘要:本文主要介紹了在SQL Server資料庫應用系統中,在服務器端和客戶端實現資料完整性的設計方法,並結合醫院管理資訊系統(簡稱JY-HMIS),闡述了實施資料完整性的策略。

關鍵詞:資料完整性 資料庫 事務處理

前言

資料完整性是指資料的正確性和一致性,它有兩方面的含義:(1)資料取值的正確性,即欄位列值必須符合資料的取值範圍、型別和精度的規定;(2)相關資料的一致性,即相關表的聯絡欄位的列值匹配。在資料庫應用系統中,保證資料完整性是應用系統設計的基本要求;資料完整性實施的好壞,關係到資料系統的正確性、一致性和可靠性,關係到系統的成敗。JY-HMIS採用C/S模式體系結構,其資料庫應用系統為:SQL Server 7.0;客戶端的開發工具為:PowerBuilder 6.5。下面主要從伺服器端資料庫管理系統及客戶端的應用程式一,兩個方面進行介紹。

1、伺服器端利用SQL Server 7.0資料庫實現資料的完整性

在用INSERT、DELETE、UPDATE語句修改資料庫內容時,資料的完整性可能遭到破壞,為了保證存放資料的正確性和一致性,SQL Server對資料施加了一個或多個數據完整性約束。這些約束限制了對資料庫的資料值,或者限制了資料庫修改所產生的資料值,或限制了對資料庫中某些值的修改。

在SQL Server關係資料庫中,主要有以下3類資料完整性:實體完整性(保證表中所有行唯一);參照完整性(主健和外健關係維護,它涉及兩個或兩個以上的表的資料的一致性維護);域完整性(某列有效性的集合,是對業務管理或是對資料庫資料的限制)。在報務器端有兩種方法實現資料完整性:定義Creat Table 完整性約束及定義規則、預設、索引和觸發器。

1.1 定義 createtable 完整性約束

此方法是在建立資料庫表的命令語句中,加入表級約束或列級來實現資料完整性。如在建表語句中加入非空(not null)約束、預設(default)約束、唯一碼(unique)約束、主鍵碼(primary key)約束、外來鍵碼(foreign key)約束、校驗(check)約束等。它的主要特點是:定義簡單、安全可靠、維護方便。

1.1.1 非空約束、預設約束和校驗約束

非空約束限定了列值不能為空值;預設約束指定當向資料庫插入資料時,若使用者沒有明確給出某列的值時,SQL Server 自動輸入預定值;校驗約束則用來限定列的值域範圍。

例如,在建立圖書登記表中,限定登記日期、圖書類別編碼、登記號、中文名等列值不允許為空值;頁數的預設值為1;單價的預設值為0;圖書狀態只能為:“在館”、“借出”、“丟失”之一。

1.1.2 主鍵約束和唯一約束

主鍵約束和唯一約束,均為指定的列建立唯一性索引,即不允許唯一索引的列上有相同的值。主鍵約束更嚴格,不但不允許有重複值,而且也不允許有空值。

例如,在科室編碼表,對列ksbm建立主鍵約束,對ksmc建立唯一約束。

1.1.3 外來鍵約束

外來鍵約束又稱參照完整性約束,用來限定本表外來鍵碼列值與相關表主鍵碼欄位列值的匹配,即保證相關資料的一致性。

例如,在建立醫師編碼表中,醫生所屬科室 ssks 為外來鍵碼,限定它與科室編碼表中的科室編碼 ksbm 列值一致。

1.2 定義規則、預設、索引和觸發器

在資料庫表的建立命令語句中定義約束的方法,雖然具有簡單、方便、安全等特點,但它只對特定的表有效,不能應用到其他表,並且只能使用 alter table 命令修改或刪除約束,缺乏一定的靈活性。與此相反,在資料庫中建立與表相對獨立的規則、索引和觸發器物件,也能實現資料完整性,而且能實施更復雜、更完善的資料完整性約束。它的主要特點是功能強、效率高、維護方便。

1.2.1 定義規則

規則類似於表定義中的校驗約束,用來限定列的值域範圍。但它不限定於特定表,可以繫結到其他表的列或使用者自定義的資料型別中使用。

例如,在定義藥品的編碼規則Rul-ypbm,可繫結到其他表中。

1.2.2 定義預設

預設類似於表定義中的預設約束,用來設定列的預設值輸入。它也不限定於特定表,可以繫結到其他表的列或使用者自定義資料型別中使用。

1.2.3 定義索引

索引類似於表定義中的唯一約束,用來保證列值的唯一性。此外,它還能使用聚簇索引和非聚簇索引選項,來增強資料檢索的效能。

例如,對於門診收費明細帳表,分別建立了按收費日期和收費序號的非聚簇索引,大大提高了資料的查詢速度,在未建立索引前,要在20多萬條記錄中查詢滿足條件的記錄,大約需要5分鐘左右,建立索引後,只需要4秒鐘左右。

1.2.4 定義觸發器

觸發器是一種實施複雜的完整性約束的有效方法,當對它所保護的資料進行修改時自動啟用,防止對資料進行不正確、未授權或不一致的修改。類似於表定義中參照完整性約束;觸發器也可用來保證相關資料的一致性。它還能完成一些表定義參照完整性的約束不能完成的任務。

 2、客戶端利用PB開發的應用程式實現資料的完整性

2.1 用PB的控制元件來確保資料的完整性

在以PB開發工具編寫的應用程式中,可使用資料視窗物件的.列校驗屬性來檢查輸入資料的正確性;在視窗輸入介面中還可以採用下拉列表、複選框、單選按鈕等控制元件,實現固定值選取輸入來確保資料的正確;另外,應用程式本身也可以對輸入資料進行有效檢查來確保資料的完整性。

2.2 利用事務的特點來保證資料的一致性

因PB的每一操作都是基於控制元件中的事件,所以一個完整的事務處理要集中在一個事件或一個操作單元中。例如,門診劃價收費中的付款處理;同一個收費序號下的資料,經過處理後要記入明細帳、一級明細帳、總帳,同時還要更新收費序號登記表等;所有這些處理算是一個完整的任務,必須等所有的語句都執行成功後,才能對資料庫進行提交;如果有一條語句未執行成功,就要撤消該事務的一切操作,回退到事務開始的狀態,這樣才能保證資料的一致。利用客戶端應用程式實現資料完整性的方法,其主要特點是:互動性好、功能強,但程式設計偏大、維護困難、可靠性差。

 3、實現資料完整性的策略

由上述可見,在SQL Server資料庫應用系統中,實現資料完整性的方法各有其特點。對具體應用系統,可根據需要採用其中一種或多種方法來建立資料完整性的機制,其策略為:

(1) 對於通過視窗操作輸入的資料,一般採用客戶端應用程式來確保資料的完整性。這樣,一方面可把非法資料在提交到資料庫之前就拒之門外,另一方面可使使用者及時得到操作反饋資訊,做出正確的選擇。

(2) 對於通過其他途徑轉入的資料,一般需要伺服器端資料庫管理系統來實現資料的完整性。

(3) 對於資料一致性的維護,宜於由伺服器端資料庫的觸發器或表定義的約束來實現。這樣可降低客戶端應用程式的開發量,提高應用系統的執行效率、可維護性及可靠性。

(4) 對於資料完整性和安全性要求較高的系統,則需要採用多層保護屏障來確保資料的完整性和安全性。如:既在客戶端應用系統程式檢查輸入資料的有效性,同時又在伺服器端資料庫中建立表的約束、規則、預設和觸發器等進行資料完整性約束。這樣可以提高系統資料的可靠性和安全性。

 結語

資料庫完整性是資料庫應用系統的最基本要求之一。在SQL Server資料庫應用系統中,可採用伺服器端資料庫表定義約束和資料庫規則、預設、索引、觸發器及客戶端的應用程式等三種方法實施資料的完整性。它們各有其特點,在應用系統中,應根據具體情況,靈活使用。

 參考文獻

[1] 楊正洪 Server 7.0 關係資料庫系統管理與開發指南.機械工業部出版社,2000.

[2] Microsoft SQL Server 7.0 資料庫系統管理與應用開發.北京人民郵電出版社,1999.

[3] 薛華成.管理資訊系統.清華大學出版社,1995.