資料庫的完整性設計

2022-01-23 03:23:32 字數 2375 閱讀 6210

資料庫完整性(database integrity)是指資料庫中資料的正確性和相容性。資料庫完整性對於資料庫應用系統非常關鍵,體現在許多方面。 [關鍵字] sqlserver 資料庫完整性   資料庫完整性(database integrity)是指資料庫中資料的正確性和相容性。資料庫完整性由各種各樣的完整性約束來保證,因此可以說資料庫完整性設計就是資料庫完整性約束的 設計。資料庫完整性約束可以通過dbms或應用程式來實現,基於dbms的完整性約束作為模式的一部分存入資料庫中。通過dbms實現的資料庫完整性按照 資料庫設計步驟進行設計,而由應用軟體實現的資料庫完整性則納入應用軟體設計(本文主要討論前者)。資料庫完整性對於資料庫應用系統非常關鍵,其作用主要 體現在以下幾個方面:

1.資料庫完整性約束能夠防止合法使用者使用資料庫時向資料庫中新增不合語義的資料。

2.利用基於dbms的完整性控制機制來實現業務規則,易於定義,容易理解,而且可以降低應用程式的複雜性,提高應用程式的執行效率。同時,基於dbms的完整性控制機制是集中管理的,因此比應用程式更容易實現資料庫的完整性。

3.合理的資料庫完整性設計,能夠同時兼顧資料庫的完整性和系統的效能。比如裝載大量資料時,只要在裝載之前臨時使基於dbms的資料庫完整性約束失效,此後再使其生效,就能保證既不影響資料裝載的效率又能保證資料庫的完整性。

4.在應用軟體的功能測試中,完善的資料庫完整性有助於盡早發現應用軟體的錯誤。

資料庫完整性約束可分為6類:列級靜態約束、元組級靜態約束、關係級靜態約束、列級動態約束、元組級動態約束、關係級動態約束。動態約束通常由應用軟體來實現。不同dbms支援的資料庫完整性基本相同,oracle支援的基於dbms的完整性約束如下表所示:

資料庫完整性設計示例

乙個好的資料庫完整性設計首先需要在需求分析階段確定要通過資料庫完整性約束實現的業務規則,然後在充分了解特定dbms提供的完整性控制機 制的基礎上,依據整個系統的體系結構和效能要求,遵照資料庫設計方法和應用軟體設計方法,合理選擇每個業務規則的實現方式;最後,認真測試,排除隱含的約 束衝突和效能問題。基於dbms的資料庫完整性設計大體分為以下幾個階段:

一.需求分析階段

經過系統分析員、資料庫分析員、使用者的共同努力,確定系統模型中應該包含的物件,如人事及工資管理系統中的部門、員工、經理等,以及各種業務規則。

在完成尋找業務規則的工作之後,確定要作為資料庫完整性的業務規則,並對業務規則進行分類。其中作為資料庫模式一部分的完整性設計按下面的過程進行。而由應用軟體來實現的資料庫完整性設計將按照軟體工程的方法進行。

二.概念結構設計階段

概念結構設計階段是將依據需求分析的結果轉換成乙個獨立於具體dbms的概念模型,即實體關係圖(erd)。在概念結構設計階段就要開始資料 庫完整性設計的實質階段,因為此階段的實體關係將在邏輯結構設計階段轉化為實體完整性約束和參照完整性約束,到邏輯結構設計階段將完成設計的主要工作。

三.邏輯結構設計階段

此階段就是將概念結構轉換為某個dbms所支援的資料模型,並對其進行優化,包括對關係模型的規範化。此時,依據dbms提供的完整性約束機制,對尚未加入邏輯結構中的完整性約束列表,逐條選擇合適的方式加以實現。

在邏輯結構設計階段結束時,作為資料庫模式一部分的完整性設計也就基本完成了。每種業務規則都可能有好幾種實現方式,應該選擇對資料庫效能影響最小的一種,有時需通過實際測試來決定。

資料庫完整性設計原則

在實施資料庫完整性設計的時候,有一些基本的原則需要把握:

1.根據資料庫完整性約束的型別確定其實現的系統層次和方式,並提前考慮對系統效能的影響。一般情況下,靜態約束應盡量包含在資料庫模式中,而動態約束由應用程式實現。

2.實體完整性約束、參照完整性約束是關聯式資料庫最重要的完整性約束,在不影響系統關鍵效能的前提下需盡量應用。用一定的時間和空間來換取系統的易用性是值得的。

3.要慎用目前主流dbms都支援的觸發器功能,一方面由於觸發器的效能開銷較大,另一方面,觸發器的多級觸發不好控制,容易發生錯誤,非用不可時,最好使用before型語句級觸發器。

4.在需求分析階段就必須制定完整性約束的命名規範,盡量使用有意義的英文單詞、縮寫詞、表名、列名及下劃線等組合,使其易於識別和記憶, 如:ckc_emp_real_income_employee、pk_employee、ckt_employee。如果使用case工具,一般有預設 的規則,可在此基礎上修改使用。

5.要根據業務規則對資料庫完整性進行細緻的測試,以盡早排除隱含的完整性約束間的衝突和對效能的影響。

6.要有專職的資料庫設計小組,自始至終負責資料庫的分析、設計、測試、實施及早期維護。資料庫設計人員不僅負責基於dbms的資料庫完整性約束的設計實現,還要負責對應用軟體實現的資料庫完整性約束進行審核。

7.應採用合適的case工具來降低資料庫設計各階段的工作量。好的case工具能夠支援整個資料庫的生命週期,這將使資料庫設計人員的工作效率得到很大提高,同時也容易與使用者溝通。

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...

資料庫完整性

資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...

資料庫 完整性

一 實驗目的 1 掌握資料庫約束的概念 2 熟悉sql server 的完整性約束技術。3 了解sql server 的違反完整性處理措施。二 實驗環境 sql server2014 三 實驗內容 1.在前幾次實驗所使用的資料庫中新建乙個教師資訊表,表名為teacher,字段包括tno 教師編號 t...