官术网_书友最值得收藏!

第5章 數據表的完整性約束

本章內容提要

數據庫中的數據必須是真實可信、準確無誤的。對數據庫表中的記錄強制實施數據完整性約束,可以保證數據表中各個字段數據的完整性和合理性。本章就來介紹數據表中完整性約束的添加方法,主要內容包括主鍵約束的添加、外鍵約束的添加、默認約束的添加、唯一性約束的添加、非空約束的添加等。

本章知識點

  • 添加主鍵約束。
  • 添加外鍵約束。
  • 添加默認約束。
  • 添加唯一約束。
  • 添加非空約束。

5.1 數據完整性及其分類

數據表中的完整性約束可以理解成是一種規則或者要求,它規定了在數據表中哪些字段可以輸入什么樣的值。

5.1.1 數據完整性的分類

數據庫不僅要能存儲數據,它也必須能夠保證所保存的數據的正確性,為此SQL Server為用戶提高了完整性約束條件。

數據完整性可分為實體完整性、域完整性和引用完整性,下面進行詳細介紹。

(1)實體完整性:指通過表中字段或字段組合將表中各記錄的唯一性區別開來。例如,在學生表中,學生之間可能姓名相同,班級編號相同,但是每個學生的學號必然不同。實體完整性的實施方法是添加PRIMARY KEY約束和UNIQUE約束。

(2)域完整性:指表中特定字段的值是有效取值。雖然每個字段都有數據類型,但實際并非滿足該數據類型的值即為有效,應合乎情理。例如,學生的出生日期不可能晚于錄入數據當天的日期。域完整性的實施方法是添加CHECK約束和DEFAULT約束。

(3)引用完整性:數據庫中的表和表之間的字段值是有聯系的,甚至表自身的字段值也是有聯系的,其中一個表中的某個字段值不但要符合其數據類型,而且必須是引用另一個表中某個字段現有的值。在輸入或刪除數據記錄時,這種引用關系也不能被破壞,這就是引用完整性,它的作用是確保在所有表中具有相同意義的字段值一致,不能引用不存在的值。引用完整性的實施方法是添加PRIMARY KEY約束。

5.1.2 表中的約束條件有哪些

在數據表中添加約束條件歸根到底就是要確保數據的準確性和一致性,即表內的數據不相互矛盾,表之間的數據不相矛盾,關聯性不被破壞。為此,可以從以下幾個方面檢查數據表的完整性約束。

(1)對列的控制,包括主鍵約束(PRIMARY KEY)、唯一性約束(UNIQUE);

(2)對列數據的控制,包括檢查約束(CHECK)、默認值約束(DEFAULT)、非空約束(NOT NULL);

(3)對表之間及列之間關系的控制,包括外鍵約束(FOREIGN KEY)。

滿足完整性約束要求的數據必須具有以下3個特點。

(1)數據值正確無誤:首先數據類型必須正確,其次數據的值必須處于正確的范圍內。例如,“成績”表中“成績”字段的值必須大于或等于0小于或等于100。

(2)數據的存儲必須確保同一表格數據之間的和諧關系。例如,“成績”表中的“學號”字段列中的每一個學號對應一個學生,不可能將其學號對應多個學生。

(3)數據的存儲必須確保維護不同表之間的和諧關系。例如,在“成績”表中的“課程編號”列對應“課程”表中的“課程編號”列;在“課程”表中的“教師編號”列對應“教師”表中的“教師編號”列。

主站蜘蛛池模板: 衡东县| 收藏| 庄河市| 东乌珠穆沁旗| 策勒县| 固镇县| 泸定县| 陈巴尔虎旗| 石阡县| 定结县| 蓝田县| 布尔津县| 林芝县| 吐鲁番市| 河曲县| 北安市| 九台市| 大同县| 阿拉善右旗| 依安县| 巴林右旗| 西和县| 达州市| 芦溪县| 宁武县| 札达县| 九寨沟县| 曲沃县| 会理县| 克东县| 呈贡县| 宁化县| 镇宁| 罗山县| 墨江| 临沭县| 宜兰市| 封丘县| 渭源县| 常州市| 金寨县|