數據庫的四個特性(ACID)

ACID,是指在數據庫管理系統DBMS)中事務所具有的四個特性:原子性(Atomicity)、一致性 (Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

在數據庫系統中,一個事務是指由一系列數據庫操作組成的一個完整的邏輯過程。例如銀行轉帳,從原賬戶扣除金額,以及向目標賬戶添加金額,這兩個數據 庫操作的總和構成一個完整的邏輯過程,不可拆分。這個過程被稱爲一個事務,具有ACID特性。ACID的概念在ISO/IEC 10026-1:1992文件的第四段內有所說明。

目錄

[隱藏]

[編輯] 四大特性

  • 原子性:整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回覆 (Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
  • 一致性:在事務開始之前和事務結束以後,數據庫的完整性限制沒有被破壞。
  • 隔離性:兩個事務的執行是互不干擾的,一個事務不可能看到其他事務運行時,中間某一時刻的數據。
  • 持久性:在事務完成以後,該事務對數據庫所作的更改便持久地保存在數據庫之中,並不會被回覆。

延伸閱讀:數據完整性           
 強制數 據完整性可保證數據庫中數據的質量。
 
 1.實體完 整性
  實體完整性將行定義爲特定表的唯一實 體。
  實體完整性通過 UNIQUE 索引、UNIQUE 約束或 PRIMARY KEY 約束,強制表的標識符列或主鍵的完整性。
 
 2.域完整性
  完整性指特定列的項的有效性
  您 可以強制域完整性限制類型(通過使用數據類型)、 限制格式(通過使用 CHECK 約束和規則) 或限制可能值的範圍(通過使用 FOREIGN KEY 約束、CHECK 約束、DEFAULT 定義、NOT NULL 定義和規則)。
 
 3.引用完整性
 輸入或刪除行時,引用完整性保留表之間定義的 關係
 在 SQL Server 中,引用完整性通過 FOREIGN KEY 和 CHECK 約束, 以外鍵與主鍵之間或外鍵與唯一鍵之間的關係爲基礎。引用完整性確保鍵值在所有表中一致。
 這類一致性要求不引用不存在的值,如果一個鍵值發生更 改,則整個數據庫中,對該鍵值的所有引用要進行一致的更改。
 強制引用完整性時,SQL Server 將防止用戶執行下列操作:
  a. 在主表中沒有關聯行的情況下在相關表中添加或更改行。
  b.在主表中更改值(可導致相關表中出現孤立行)。
  c.在有匹配的相關行的 情況下刪除主表中的行。--這個特點可以保護你的一些重要表不被誤刪

  --測試

if OBJECT_ID('tb1') is not null

drop table tb1 

go

create table tb1 (a int  primary key ,value int)

insert tb1 select 1,

union select 2,23 

union select 3,32

go

if OBJECT_ID('tb2') is not null

drop table tb2 

go

create table tb2 (a int references tb1(a),value int)

insert tb2 select 1,4

go

--測試:向TB2中加入TB1中沒有的A

insert tb2 select 6,4

/*INSERT 語句與FOREIGN KEY 約束"FK__tb2__a__2E1BDC42"衝突。該 衝突發生於數據庫"tempdb",表"dbo.tb1", column 'a'*/

--測試:刪除TB1中的a值爲的行,使TB2中值爲的行孤立

delete tb1 where a=1

/*INSERT 語句與FOREIGN KEY 約束"FK__tb2__a__2E1BDC42"衝突。該 衝突發生於數據庫"tempdb",表"dbo.tb1", column 'a'*/

--測試:假設我們的TB1非常重要,而設置了TB2作爲它的外表,這樣可以起到保護TB1被誤刪的可能

drop table tb1

/*無法刪除對象'tb1',因爲該對象正由一個FOREIGN KEY 約束引用*/
發佈了216 篇原創文章 · 獲贊 11 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章