DBMS中的約束
在DBMS(資料庫管理系統)中,約束是施加在資料庫表上的指導原則或限制,以維護資料的完整性、正確性和一致性。約束可用於強制執行跨表的的資料鏈接、驗證資料是否唯一,以及阻止插入錯誤資料。資料庫需要約束才能可靠且高質量。
DBMS的約束是什麼?
在DBMS中,約束指的是對資料或資料處理施加的限制。這意味著只有特定型別的資料才能輸入資料庫,或者只有特定型別的操作才能對其中的資料執行。
因此,約束保證了資料庫管理系統(DBMS)中的資料準確性。
可以透過約束保證以下內容
資料準確性 - 約束保證資料準確性,確保僅將正確的資料輸入資料庫。例如,限制可以阻止使用者將負值輸入僅接受正數的欄位。
資料一致性 - 可以透過使用約束來維護資料庫中資料的一致性。這些約束能夠確保一個表中的主鍵值由另一個表中的外部索引鍵值遵循。
資料完整性 - 約束確保資料庫中資料的準確性和完整性。例如,約束可以阻止使用者將空值輸入必填欄位。
DBMS中約束的型別
域約束
鍵約束
實體完整性約束
引用完整性約束
元組唯一性約束
域約束
在資料庫表中,域約束是指定某個屬性或欄位的可接受值的指導原則。這些約束保證資料一致性,並有助於防止將不準確或不一致的資料輸入資料庫。以下是DBMS中域約束的一些示例 -
資料型別約束 - 這些約束定義了可以在列中儲存的資料型別。建立為VARCHAR的列可以接受字串值,而指定為INTEGER的列只能接受整數值。
長度約束 - 這些約束定義了可以放入列中的最大資料量。例如,定義為VARCHAR(10)的列只能接受長度不超過10個字元的字串。
範圍約束 - 範圍約束指定列的允許值範圍。例如,指定為DECIMAL(5,2)的列只能接受最多5位數字(包括2位小數)的十進位制值。
可空性約束 - 可空性約束是關於列是否可以接受NULL值的約束。例如,具有NOT NULL定義的列不能接受NULL值。
唯一約束 - 唯一約束是要求列或列組中存在唯一值的約束。例如,在具有UNIQUE定義的列中不允許重複值。
檢查約束 - 資料檢查約束:這些約束指定必須對放入列中的任何資料都成立的要求。例如,具有定義CHECK (age > 0)的列只能接受大於零的年齡。
預設約束 - 預設約束:預設約束在未提供值的情況下自動為列分配一個值。例如,如果未指定其他值,則DEFAULT值為0的列的值將為0。
鍵約束
鍵約束是DBMS用於確保資料庫中資料準確性和一致性的規則。它們定義了表中一列或多列的值如何與其他表中的值相關聯,從而確保資料保持正確。
DBMS中有多種鍵約束型別,包括 -
主鍵約束 - 主鍵約束是資料庫中每個記錄的唯一識別符號。它確保每個資料庫條目都包含一個唯一的值 - 或一對值 - 作為其識別方法,並且該值不能為null。
外部索引鍵約束 - 引用另一個表中主鍵的外部索引鍵約束。它確保一個表中的一列或一組列的值與另一個表中的主鍵列相對應。
唯一約束 - 在資料庫中,唯一約束確保列或列組中的任何兩個值都不相同。
實體完整性約束
資料庫管理系統使用實體完整性約束 (EIC) 來強制執行規則,這些規則確保表的PrimaryKey是唯一的並且不是null。EIC旨在阻止建立重複或不完整的條目,從而維護資料庫中資料的一致性和完整性。
在關係資料庫中,表中的每個條目都由一個或多個稱為主鍵的欄位唯一標識。EIC保證每個行的主鍵值都是唯一的,並且不是null。例如,考慮“Employees”表,它具有“EmployeeID”和“Name”列。該表的PrimaryKey是“EmployeeID”列。此表上的EIC將確保每行的“EmployeeID”值都是唯一的並且不是null。
如果您嘗試插入具有重複或null“EmployeeID”的條目,資料庫管理系統將拒絕插入並生成錯誤。這確保了表中資訊是正確且一致的。
EIC是資料庫設計的重要組成部分,有助於確保資料庫中包含的資料的準確性和可靠性。
引用完整性約束
為了維護表之間關係的一致性和完整性,資料庫管理系統將應用引用完整性約束 (RIC)。RIC透過防止建立不存在條目的連結或透過刪除在其他表中具有相關條目的記錄來確保資料庫中的資料始終保持一致。
在關係資料庫中,透過使用外部索引鍵建立表之間的連結。一個表中的一列或一組列用作外部索引鍵來引用另一個表的主鍵。RIC確保沒有引用錯誤,並且這些關係是有效的。
例如,考慮“Orders”和“Customers”表。在“Customers”資料庫中的PrimaryKey列對應於在“Orders”資料集中作為外部索引鍵的“CustomerID”列。此關係上的RIC要求“Orders”資料庫中“CustomerID”列中的每個值都存在於“Customers”表的主鍵列中。
如果嘗試將記錄插入到“Orders”表中,而該記錄具有不存在的“CustomerID”值,則資料庫管理系統將拒絕插入並通知使用者錯誤。
類似地,如果刪除“Customers”表中的記錄並且連結的記錄存在於“Orders”表中,則資料庫管理系統將阻止刪除或級聯刪除,以確保引用完整性。
總的來說,RIC是資料庫設計的重要組成部分,有助於確保資料庫中包含的資訊在一段時間內保持準確和一致。
元組唯一性約束
資料庫管理系統使用稱為元組唯一性約束 (TUC) 的約束來確保表中的每個條目或元組都是唯一的。與僅對特定列或列組強制執行唯一性的實體完整性約束 (EIC) 不同,TUC對整行或元組強制執行唯一性。
因此,TUC確保表中沒有兩行在每列中具有相同的值。即使各個列值不是唯一的,這在必須避免建立重複條目時也很有用。
例如,考慮“Sales”表,它具有“TransactionID”、“Date”、“CustomerID”和“Amount”列。即使各個列值可以重複,此表上的TUC也將確保沒有兩行在所有四個列中具有相同的值。
如果嘗試插入一行,並且該行的四個列中的每個列的值都與現有條目相同,則資料庫管理系統將拒絕插入並生成錯誤。這確保了表中資料的唯一性和準確性。
TUC可能是確保資料正確性和一致性的有用工具,尤其是在必須避免建立重複條目時。
結論
約束是每個資料庫管理系統的重要組成部分,並且有效地理解如何應用約束對於建立和維護高質量的資料庫至關重要。DBMS中的約束將規則應用於資料,以確保資料的正確性、一致性和完整性。它們阻止新增、修改或刪除不正確或不完整的資料。一些不同型別的約束包括EIC、RIC、TUC和檢查約束。約束對於構建和維護允許進行明智的業務決策的高質量資料庫至關重要。