❶ 什麼是數據冗餘什麼是數據的完整性如何來實施數據完整性
數據冗餘是指在兩個或更多文件中重復出現的數據。例如,職工的信息可能同時在人事部文件、銷售部文件和財務部文件中存在。它可能產生的後果有:數據異常、數據不一致性和影響數據的完整性
數據完整性分為以下3類。
(1)域完整性:是指一個列的輸入有效性,是否允許為空值。強制域完整性的方法有:限制類型(通過設定列的數據類型)、格式(通過CHECK約束和規則)或可能值的范圍(通過FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規則)。如:學生的考試成績必須在0~100之間,性別只能是「男」或「女」。
(2)實體完整性:是指保證表中所有的行唯一。實體完整性要求表中的所有行都有一個唯一標識符。這個唯一標識符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。強制實體完整性的方法有:索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性。如:student表中sno(學號)的取值必須唯一,它唯一標識了相應記錄所代表的學生,學號重復是非法的。學生的姓名不能作為主鍵,因為完全可能存在兩個學生同名同姓的情況。
(3)參照完整性:是指保證主關鍵字(被引用表)和外部關鍵字(引用表)之間的參照關系。它涉及兩個或兩個以上表數據的一致性維護。外鍵值將引用表中包含此外鍵的記錄和被引用表中主鍵與外鍵相匹配的記錄關聯起來。在輸入、更改或刪除記錄時,參照完整性保持表之間已定義的關系,確保鍵值在所有表中一致。這樣的一致性要求確保不會引用不存在的值,如果鍵值更改了,那麼在整個資料庫中,對該鍵值的所有引用要進行一致的更改。參照完整性是基於外鍵與主鍵之間的關系。例如學生學習課程的課程號必須是有效的課程號,score表(成績表)的外鍵cno(課程號)將參考course表(課程表)中主鍵cno(課程號)以實現數據完整性。
域完整性、實體完整性及參照完整性分別在列、行、表上實施。數據完整性任何時候都可以實施,但對已有數據的表實施數據完整性時,系統要先檢查表中的數據是否滿足所實施的完整性,只有表中的數據滿足了所實施的完整性,數據完整性才能實施成功。
❷ 關系資料庫完整性有哪幾類 分別可以使用那些技術實現
關系資料庫完整性有域(列)、實體(行)、參照(引用)整性類。
1、域(列)完整性的技術實現:通常指數據的有效性,它包括欄位的值域、欄位的類型及欄位的有效規則等約束,它是由確定關系結構時所定義的欄位的屬性決定的。
2、實體(行)完整性的技術實現:關系中的主屬性值不能為Null且不能有相同值。
3、參照(引用)完整性的技術實現:對關系資料庫中建立關聯關系的數據表間數據參照引用的約束,也就是對外鍵的約束。
數據完整性分析
資料庫採用多種方法來保證數據完整性,包括外鍵、約束、規則和觸發器。系統很好地處理了這四者的關系,並針對不同的具體情況用不同的方法進行,相互交叉使用,相補缺點。
從外界輸入的,而數據的輸入由於種種原因,會發生輸入無效或錯誤信息。保證輸入的數據符合規定,成為了資料庫系統,尤其是多用戶的關系資料庫系統首要關注的問題。
❸ 資料庫中,如何保證數據完整性
保證數據的完整性:
1. 用約束而非商務規則強制數據完整性
如果你按照商務規則來處理需求,那麼你應當檢查商務層次/用戶界面:如果商務規則以後發生變化,那麼只需要進行更新即可。
假如需求源於維護數據完整性的需要,那麼在資料庫層面上需要施加限制條件。
如果你在數據層確實採用了約束,你要保證有辦法把更新不能通過約束檢查的原因採用用戶理解的語言通知用戶界面。除非你的欄位命名很冗長,否則欄位名本身還不夠。 — Lamont Adams
只要有可能,請採用資料庫系統實現數據的完整性。這不但包括通過標准化實現的完整性而且還包括數據的功能性。在寫數據的時候還可以增加觸發器來保證數據的正確性。不要依賴於商務層保證數據完整性;它不能保證表之間(外鍵)的完整性所以不能強加於其他完整性規則之上。
— Peter Ritchie
2. 分布式數據系統
對分布式系統而言,在你決定是否在各個站點復制所有數據還是把數據保存在一個地方之前應該估計一下未來5 年或者10 年的數據量。當你把數據傳送到其他站點的時候,最好在資料庫欄位中設置一些標記。在目的站點收到你的數據之後更新你的標記。為了進行這種數據傳輸,請寫下你自己的批處理或者調度程序以特定時間間隔運行而不要讓用戶在每天的工作後傳輸數據。本地拷貝你的維護數據,比如計算常數和利息率等,設置版本號保證數據在每個站點都完全一致。
— Suhair TechRepublic
3. 強制指示完整性
沒有好辦法能在有害數據進入資料庫之後消除它,所以你應該在它進入資料庫之前將其剔除。激活資料庫系統的指示完整性特性。這樣可以保持數據的清潔而能迫使開發人員投入更多的時間處理錯誤條件。
— kol
4. 關系
如果兩個實體之間存在多對一關系,而且還有可能轉化為多對多關系,那麼你最好一開始就設置成多對多關系。從現有的多對一關系轉變為多對多關系比一開始就是多對多關系要難得多。
— CS Data Architect
5. 採用視圖
為了在你的資料庫和你的應用程序代碼之間提供另一層抽象,你可以為你的應用程序建立專門的視圖而不必非要應用程序直接訪問數據表。這樣做還等於在處理資料庫變更時給你提供了更多的自由。
— Gay Howe
6. 給數據保有和恢復制定計劃
考慮數據保有策略並包含在設計過程中,預先設計你的數據恢復過程。採用可以發布給用戶/開發人員的數據字典實現方便的數據識別同時保證對數據源文檔化。編寫在線更新來「更新查詢」供以後萬一數據丟失可以重新處理更新。
— kol
7. 用存儲過程讓系統做重活
解決了許多麻煩來產生一個具有高度完整性的資料庫解決方案之後,我所在的團隊決定封裝一些關聯表的功能組,提供一整套常規的存儲過程來訪問各組以便加快速度和簡化客戶程序代碼的開發。在此期間,我們發現3GL 編碼器設置了所有可能的錯誤條件,比如以下所示:
SELECT Cnt = COUNT (*)
FROM [<Table>]
WHERE [<primary key column>] = <new value>
IF Cnt = 0
BEGIN
INSERT INTO [<Table>]
( [< primary key column>] )
VALUES ( <New value> )
END
ELSE
BEGIN
<indicate plication error>
END
而一個非3GL 編碼器是這樣做的:
INSERT INTO [<Table>]
( [< primary key column>] )
VALUES
( <New value> )
IF @@ERROR = 2627 -- Literal error code for Primary Key Constraint
BEGIN
<indicate plication error>
END
第2 個程序簡單多了,而且事實上,利用了我們給資料庫的功能。雖然我個人不喜歡使用嵌入文字(2627)。但是那樣可以很方便地用一點預先處理來代替。資料庫不只是一個存放數據的地方,它也是簡化編碼之地。
— a-smith
8. 使用查找
控制數據完整性的最佳方式就是限制用戶的選擇。只要有可能都應該提供給用戶一個清晰的價值列表供其選擇。這樣將減少鍵入代碼的錯誤和誤解同時提供數據的一致性。某些公共數據特別適合查找:國家代碼、狀態代碼等
❹ 什麼是數據的完整性
數據完整性(Data Integrity)是指數據的精確性(Accuracy) 和可靠性(Reliability)。
資料庫中的數據是從外界輸入的,而數據的輸入由於種種原因,會發生輸入無效或錯誤信息。保證輸入的數據符合規定,成為了資料庫系統,尤其是多用戶的關系資料庫系統首要關注的問題。數據完整性因此而提出。
存儲在資料庫中的所有數據值均正確的狀態。如果資料庫中存儲有不正確的數據值,則該資料庫稱為已喪失數據完整性。
資料庫採用多種方法來保證數據完整性,包括外鍵、約束、規則和觸發器。系統很好地處理了這四者的關系,並針對不同的具體情況用不同的方法進行,相互交叉使用,相補缺點。
(4)實施資料庫完整性的方法有五種擴展閱讀:
數據完整性由以下三個方面構成:
1、域完整性:
是指一個列的輸入有效性,是否允許為空值。強制域完整性的方法有:限制類型、格式或可能值的范圍。
2、實體完整性:
是指保證表中所有的行唯一。實體完整性要求表中的所有行都有一個唯一標識符。這個唯一標識符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。
3、參照完整性:
是指保證主關鍵字和外部關鍵字之間的參照關系。它涉及兩個或兩個以上表數據的一致性維護。
外鍵值將引用表中包含此外鍵的記錄和被引用表中主鍵與外鍵相匹配的記錄關聯起來。在輸入、更改或刪除記錄時,參照完整性保持表之間已定義的關系,確保鍵值在所有表中一致。
參考資料來源:網路-數據完整性
❺ 資料庫管理系統實現參照完整性的方式和措施是什麼
關系的完整性主要包括域完整性、實體完整性和參照完整性三種。 1.域完整性 域完整性是對數據表中欄位屬性的約束,它包括欄位的值域、欄位的類型及欄位的有效規則等約束,它是由確定關系結構時所定義的欄位的屬性決定的。 2.實體完整性 實體完整性是對關系中的記錄唯一性,也就是主鍵的約束。准確地說,實體完整性是指關系中的主屬性值不能為Null且不能有相同值。 3.參照完整性 參照完整性是對關系資料庫中建立關聯關系的數據表間數據參照引用的約束,也就是對外鍵的約束。准確地說,參照完整性是指關系中的外鍵必須是另一個關系的主鍵有效值,或者是NULL。
❻ 資料庫中的常用完整性有幾種在sql Server主要通過什麼方式
完整性:約束維護數據完整性、默認值維護數據完整性、規則維護數據完整性
方式(訪問):windows身份驗證、sql
server身份驗證