如何保證數(shù)據(jù)庫中數(shù)據(jù)的完整性 數(shù)據(jù)庫完整性包括哪些?
數(shù)據(jù)庫完整性包括哪些?數(shù)據(jù)完整性分為以下四類:1)實體完整性:指定表中的每一行都是表中唯一的實體。2)域完整性:這意味著表中的列必須滿足某些數(shù)據(jù)類型約束,包括值范圍、精度和其他規(guī)定。3)引用完整性:指
數(shù)據(jù)庫完整性包括哪些?
數(shù)據(jù)完整性分為以下四類:
1)實體完整性:指定表中的每一行都是表中唯一的實體。
2)域完整性:這意味著表中的列必須滿足某些數(shù)據(jù)類型約束,包括值范圍、精度和其他規(guī)定。
3)引用完整性:指兩個表的主鍵和外鍵的數(shù)據(jù)應(yīng)一致,保證表間數(shù)據(jù)的一致性,防止數(shù)據(jù)丟失或無意義的數(shù)據(jù)在數(shù)據(jù)庫中傳播。
4)用戶定義的完整性:不同的關(guān)系數(shù)據(jù)庫系統(tǒng)往往需要一些特殊的約束,根據(jù)其不同的應(yīng)用環(huán)境。用戶定義的完整性是特定關(guān)系數(shù)據(jù)庫的約束條件,它反映了特定應(yīng)用程序必須滿足的語義需求。例如:主鍵約束、外鍵約束、不為空、唯一約束、檢查約束
數(shù)據(jù)完整性分為以下三類。
(1)字段完整性:指一列的輸入有效性,是否允許空值。強制域完整性的方法包括:限制類型(通過設(shè)置列的數(shù)據(jù)類型)、格式(通過檢查約束和規(guī)則)或可能值的范圍(通過外鍵約束、檢查約束、默認(rèn)定義、非空定義和規(guī)則)。例如,學(xué)生的考試成績必須在0到100分之間,其性別只能是“男”或“女”。
(2)實體完整性:確保表中的所有行都是唯一的。實體完整性要求表中的所有行都具有唯一標(biāo)識符。此唯一標(biāo)識符可以是一列或多個列的組合,稱為主鍵。換句話說,表中的主鍵在所有行上都必須具有唯一的值。強制實體完整性的方法有:索引、唯一約束、主鍵約束或標(biāo)識屬性。例如,student表中SnO(student number)的值必須是唯一的,它唯一地標(biāo)識由相應(yīng)記錄表示的學(xué)生。重復(fù)學(xué)號是違法的。學(xué)生的名字不能用作主鍵,因為兩個學(xué)生可能有相同的名字和姓氏。
(3)參照完整性:保證主關(guān)鍵字(參照表)與外部關(guān)鍵字(參照表)的參照關(guān)系。它涉及到兩個或多個表的一致性維護。外鍵值將引用表中包含外鍵的記錄與主鍵與引用表中外鍵匹配的記錄相關(guān)聯(lián)。在輸入、更改或刪除記錄時,引用完整性維護表之間定義的關(guān)系,以確保所有表的鍵值一致。這種一致性要求不引用不存在的值。如果鍵值更改,則整個數(shù)據(jù)庫中對鍵值的所有引用都應(yīng)一致地更改。引用完整性基于外鍵和主鍵之間的關(guān)系。例如,學(xué)生學(xué)習(xí)課程的課程號必須是有效的課程號,分?jǐn)?shù)表中的外鍵CNO將引用課程表中的主鍵CNO,以實現(xiàn)數(shù)據(jù)完整性。
域完整性、實體完整性和引用完整性分別在列、行和表上實現(xiàn)。數(shù)據(jù)完整性可以隨時實現(xiàn),但在現(xiàn)有數(shù)據(jù)表上實現(xiàn)數(shù)據(jù)完整性時,系統(tǒng)首先要檢查表中的數(shù)據(jù)是否滿足實現(xiàn)的完整性。只有當(dāng)表中的數(shù)據(jù)滿足實現(xiàn)的完整性時,才能成功實現(xiàn)數(shù)據(jù)的完整性。
數(shù)據(jù)庫完整性包括哪些?
數(shù)據(jù)庫完整性是指數(shù)據(jù)庫中數(shù)據(jù)的邏輯一致性、正確性、有效性和兼容性。數(shù)據(jù)庫的完整性是由各種完整性約束來保證的,因此可以說數(shù)據(jù)庫完整性設(shè)計就是對數(shù)據(jù)庫完整性約束的設(shè)計。數(shù)據(jù)庫完整性約束可以由DBMS或應(yīng)用程序?qū)崿F(xiàn)?;贒BMS的完整性約束作為模式的一部分存儲在數(shù)據(jù)庫中。數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)的數(shù)據(jù)庫完整性按照數(shù)據(jù)庫設(shè)計步驟進行設(shè)計,而應(yīng)用軟件實現(xiàn)的數(shù)據(jù)庫完整性則包含在應(yīng)用軟件設(shè)計中(本文主要討論前者)。