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

學識都 人氣:1.93W

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

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

 摘要:本文主要介紹了在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.