數(shù)據(jù)的完整性在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的設(shè)計(jì)與實(shí)施
數(shù)據(jù)庫(kù)完整性是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的最基本要求之一,下面是小編為大家搜集整理的一篇關(guān)于數(shù)據(jù)庫(kù)完整性重要性的論文范文,供大家閱讀借鑒。
摘要:本文主要介紹了在SQL Server數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,在服務(wù)器端和客戶端實(shí)現(xiàn)數(shù)據(jù)完整性的設(shè)計(jì)方法,并結(jié)合醫(yī)院管理信息系統(tǒng)(簡(jiǎn)稱(chēng)JY-HMIS),闡述了實(shí)施數(shù)據(jù)完整性的策略。
關(guān)鍵詞:數(shù)據(jù)完整性 數(shù)據(jù)庫(kù) 事務(wù)處理
前言
數(shù)據(jù)完整性是指數(shù)據(jù)的正確性和一致性,它有兩方面的含義:(1)數(shù)據(jù)取值的正確性,即字段列值必須符合數(shù)據(jù)的取值范圍、類(lèi)型和精度的規(guī)定;(2)相關(guān)數(shù)據(jù)的一致性,即相關(guān)表的聯(lián)系字段的列值匹配。在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,保證數(shù)據(jù)完整性是應(yīng)用系統(tǒng)設(shè)計(jì)的基本要求;數(shù)據(jù)完整性實(shí)施的好壞,關(guān)系到數(shù)據(jù)系統(tǒng)的正確性、一致性和可靠性,關(guān)系到系統(tǒng)的成敗。JY-HMIS采用C/S模式體系結(jié)構(gòu),其數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)為:SQL Server 7.0;客戶端的開(kāi)發(fā)工具為:PowerBuilder 6.5。下面主要從服務(wù)器端數(shù)據(jù)庫(kù)管理系統(tǒng)及客戶端的應(yīng)用程序一,兩個(gè)方面進(jìn)行介紹。
1、服務(wù)器端利用SQL Server 7.0數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的完整性
在用INSERT、DELETE、UPDATE語(yǔ)句修改數(shù)據(jù)庫(kù)內(nèi)容時(shí),數(shù)據(jù)的完整性可能遭到破壞,為了保證存放數(shù)據(jù)的正確性和一致性,SQL Server對(duì)數(shù)據(jù)施加了一個(gè)或多個(gè)數(shù)據(jù)完整性約束。這些約束限制了對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)值,或者限制了數(shù)據(jù)庫(kù)修改所產(chǎn)生的數(shù)據(jù)值,或限制了對(duì)數(shù)據(jù)庫(kù)中某些值的修改。
在SQL Server關(guān)系數(shù)據(jù)庫(kù)中,主要有以下3類(lèi)數(shù)據(jù)完整性:實(shí)體完整性(保證表中所有行唯一);參照完整性(主健和外健關(guān)系維護(hù),它涉及兩個(gè)或兩個(gè)以上的表的數(shù)據(jù)的一致性維護(hù));域完整性(某列有效性的集合,是對(duì)業(yè)務(wù)管理或是對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的限制)。在報(bào)務(wù)器端有兩種方法實(shí)現(xiàn)數(shù)據(jù)完整性:定義Creat Table 完整性約束及定義規(guī)則、缺省、索引和觸發(fā)器。
1.1 定義 createtable 完整性約束
此方法是在創(chuàng)建數(shù)據(jù)庫(kù)表的命令語(yǔ)句中,加入表級(jí)約束或列級(jí)來(lái)實(shí)現(xiàn)數(shù)據(jù)完整性。如在建表語(yǔ)句中加入非空(not null)約束、缺省(default)約束、唯一碼(unique)約束、主鍵碼(primary key)約束、外鍵碼(foreign key)約束、校驗(yàn)(check)約束等。它的主要特點(diǎn)是:定義簡(jiǎn)單、安全可靠、維護(hù)方便。
1.1.1 非空約束、缺省約束和校驗(yàn)約束
非空約束限定了列值不能為空值;缺省約束指定當(dāng)向數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí),若用戶沒(méi)有明確給出某列的值時(shí),SQL Server 自動(dòng)輸入預(yù)定值;校驗(yàn)約束則用來(lái)限定列的值域范圍。
例如,在創(chuàng)建圖書(shū)登記表中,限定登記日期、圖書(shū)類(lèi)別編碼、登記號(hào)、中文名等列值不允許為空值;頁(yè)數(shù)的缺省值為1;單價(jià)的缺省值為0;圖書(shū)狀態(tài)只能為:“在館”、“借出”、“丟失”之一。
1.1.2 主鍵約束和唯一約束
主鍵約束和唯一約束,均為指定的列建立唯一性索引,即不允許唯一索引的列上有相同的值。主鍵約束更嚴(yán)格,不但不允許有重復(fù)值,而且也不允許有空值。
例如,在科室編碼表,對(duì)列ksbm創(chuàng)建主鍵約束,對(duì)ksmc創(chuàng)建唯一約束。
1.1.3 外鍵約束
外鍵約束又稱(chēng)參照完整性約束,用來(lái)限定本表外鍵碼列值與相關(guān)表主鍵碼字段列值的匹配,即保證相關(guān)數(shù)據(jù)的一致性。
例如,在創(chuàng)建醫(yī)師編碼表中,醫(yī)生所屬科室 ssks 為外鍵碼,限定它與科室編碼表中的科室編碼 ksbm 列值一致。
1.2 定義規(guī)則、缺省、索引和觸發(fā)器
在數(shù)據(jù)庫(kù)表的創(chuàng)建命令語(yǔ)句中定義約束的方法,雖然具有簡(jiǎn)單、方便、安全等特點(diǎn),但它只對(duì)特定的表有效,不能應(yīng)用到其他表,并且只能使用 alter table 命令修改或刪除約束,缺乏一定的靈活性。與此相反,在數(shù)據(jù)庫(kù)中創(chuàng)建與表相對(duì)獨(dú)立的規(guī)則、索引和觸發(fā)器對(duì)象,也能實(shí)現(xiàn)數(shù)據(jù)完整性,而且能實(shí)施更復(fù)雜、更完善的數(shù)據(jù)完整性約束。它的主要特點(diǎn)是功能強(qiáng)、效率高、維護(hù)方便。
1.2.1 定義規(guī)則
規(guī)則類(lèi)似于表定義中的校驗(yàn)約束,用來(lái)限定列的值域范圍。但它不限定于特定表,可以綁定到其他表的列或用戶自定義的數(shù)據(jù)類(lèi)型中使用。
例如,在定義藥品的編碼規(guī)則Rul-ypbm,可綁定到其他表中。
1.2.2 定義缺省
缺省類(lèi)似于表定義中的缺省約束,用來(lái)設(shè)置列的缺省值輸入。它也不限定于特定表,可以綁定到其他表的列或用戶自定義數(shù)據(jù)類(lèi)型中使用。
1.2.3 定義索引
索引類(lèi)似于表定義中的唯一約束,用來(lái)保證列值的唯一性。此外,它還能使用聚簇索引和非聚簇索引選項(xiàng),來(lái)增強(qiáng)數(shù)據(jù)檢索的性能。
例如,對(duì)于門(mén)診收費(fèi)明細(xì)帳表,分別建立了按收費(fèi)日期和收費(fèi)序號(hào)的非聚簇索引,大大提高了數(shù)據(jù)的查詢速度,在未建立索引前,要在20多萬(wàn)條記錄中查詢滿足條件的記錄,大約需要5分鐘左右,建立索引后,只需要4秒鐘左右。
1.2.4 定義觸發(fā)器
觸發(fā)器是一種實(shí)施復(fù)雜的完整性約束的有效方法,當(dāng)對(duì)它所保護(hù)的數(shù)據(jù)進(jìn)行修改時(shí)自動(dòng)激活,防止對(duì)數(shù)據(jù)進(jìn)行不正確、未授權(quán)或不一致的修改。類(lèi)似于表定義中參照完整性約束;觸發(fā)器也可用來(lái)保證相關(guān)數(shù)據(jù)的一致性。它還能完成一些表定義參照完整性的約束不能完成的任務(wù)。
2、客戶端利用PB開(kāi)發(fā)的應(yīng)用程序?qū)崿F(xiàn)數(shù)據(jù)的完整性
2.1 用PB的控件來(lái)確保數(shù)據(jù)的完整性
在以PB開(kāi)發(fā)工具編寫(xiě)的應(yīng)用程序中,可使用數(shù)據(jù)窗口對(duì)象的.列校驗(yàn)屬性來(lái)檢查輸入數(shù)據(jù)的正確性;在窗口輸入界面中還可以采用下拉列表、復(fù)選框、單選按鈕等控件,實(shí)現(xiàn)固定值選取輸入來(lái)確保數(shù)據(jù)的正確;另外,應(yīng)用程序本身也可以對(duì)輸入數(shù)據(jù)進(jìn)行有效檢查來(lái)確保數(shù)據(jù)的完整性。
2.2 利用事務(wù)的特點(diǎn)來(lái)保證數(shù)據(jù)的一致性
因PB的每一操作都是基于控件中的事件,所以一個(gè)完整的事務(wù)處理要集中在一個(gè)事件或一個(gè)操作單元中。例如,門(mén)診劃價(jià)收費(fèi)中的付款處理;同一個(gè)收費(fèi)序號(hào)下的數(shù)據(jù),經(jīng)過(guò)處理后要記入明細(xì)帳、一級(jí)明細(xì)帳、總帳,同時(shí)還要更新收費(fèi)序號(hào)登記表等;所有這些處理算是一個(gè)完整的任務(wù),必須等所有的語(yǔ)句都執(zhí)行成功后,才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行提交;如果有一條語(yǔ)句未執(zhí)行成功,就要撤消該事務(wù)的一切操作,回退到事務(wù)開(kāi)始的狀態(tài),這樣才能保證數(shù)據(jù)的一致。利用客戶端應(yīng)用程序?qū)崿F(xiàn)數(shù)據(jù)完整性的方法,其主要特點(diǎn)是:交互性好、功能強(qiáng),但編程偏大、維護(hù)困難、可靠性差。
3、實(shí)現(xiàn)數(shù)據(jù)完整性的策略
由上述可見(jiàn),在SQL Server數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,實(shí)現(xiàn)數(shù)據(jù)完整性的方法各有其特點(diǎn)。對(duì)具體應(yīng)用系統(tǒng),可根據(jù)需要采用其中一種或多種方法來(lái)建立數(shù)據(jù)完整性的機(jī)制,其策略為:
(1) 對(duì)于通過(guò)窗口操作輸入的數(shù)據(jù),一般采用客戶端應(yīng)用程序來(lái)確保數(shù)據(jù)的完整性。這樣,一方面可把非法數(shù)據(jù)在提交到數(shù)據(jù)庫(kù)之前就拒之門(mén)外,另一方面可使用戶及時(shí)得到操作反饋信息,做出正確的選擇。
(2) 對(duì)于通過(guò)其他途徑轉(zhuǎn)入的數(shù)據(jù),一般需要服務(wù)器端數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)實(shí)現(xiàn)數(shù)據(jù)的完整性。
(3) 對(duì)于數(shù)據(jù)一致性的維護(hù),宜于由服務(wù)器端數(shù)據(jù)庫(kù)的觸發(fā)器或表定義的約束來(lái)實(shí)現(xiàn)。這樣可降低客戶端應(yīng)用程序的開(kāi)發(fā)量,提高應(yīng)用系統(tǒng)的運(yùn)行效率、可維護(hù)性及可靠性。
(4) 對(duì)于數(shù)據(jù)完整性和安全性要求較高的系統(tǒng),則需要采用多層保護(hù)屏障來(lái)確保數(shù)據(jù)的完整性和安全性。如:既在客戶端應(yīng)用系統(tǒng)程序檢查輸入數(shù)據(jù)的有效性,同時(shí)又在服務(wù)器端數(shù)據(jù)庫(kù)中建立表的約束、規(guī)則、缺省和觸發(fā)器等進(jìn)行數(shù)據(jù)完整性約束。這樣可以提高系統(tǒng)數(shù)據(jù)的可靠性和安全性。
結(jié)語(yǔ)
數(shù)據(jù)庫(kù)完整性是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的最基本要求之一。在SQL Server數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,可采用服務(wù)器端數(shù)據(jù)庫(kù)表定義約束和數(shù)據(jù)庫(kù)規(guī)則、缺省、索引、觸發(fā)器及客戶端的應(yīng)用程序等三種方法實(shí)施數(shù)據(jù)的完整性。它們各有其特點(diǎn),在應(yīng)用系統(tǒng)中,應(yīng)根據(jù)具體情況,靈活使用。
參考文獻(xiàn)
[1] 楊正洪.SQL Server 7.0 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)管理與開(kāi)發(fā)指南.機(jī)械工業(yè)部出版社,2000.
[2] Microsoft SQL Server 7.0 數(shù)據(jù)庫(kù)系統(tǒng)管理與應(yīng)用開(kāi)發(fā).北京人民郵電出版社,1999.
[3] 薛華成.管理信息系統(tǒng).清華大學(xué)出版社,1995.
【數(shù)據(jù)的完整性在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的設(shè)計(jì)與實(shí)施】相關(guān)文章:
數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)簡(jiǎn)歷范文08-26
數(shù)據(jù)庫(kù)在管理信息系統(tǒng)中的安全與體現(xiàn)研究論文06-24
數(shù)據(jù)在淘寶開(kāi)店中的應(yīng)用06-09
ERP系統(tǒng)中數(shù)據(jù)倉(cāng)庫(kù)的應(yīng)用11-11
淺析基于數(shù)據(jù)加密的網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計(jì)與應(yīng)用10-23
XML在GIS數(shù)據(jù)轉(zhuǎn)換中的應(yīng)用11-09
大數(shù)據(jù)在旅游網(wǎng)站設(shè)計(jì)中的應(yīng)用分析論文07-07