是指儲存在資料庫中的資料,應該是保持一致性和可靠性
關係模型允許定義三類資料約束,他們是 實體完整性、參照完整性以及使用者定義的完整性約束,其中前兩種完整性約束由關係資料庫系統自動支援
實體完整性:實體就是現實世界中的某個物件,rdbms中一行代表乙個實體。實體完整性就是保證每個實體都能被區別
例如:使用者資訊不完整。缺少資料
域完整性:域完整性主要是對列的輸入有要求,通過限制列的資料型別、格式或值得方式來實現
參照完整性:主要是表與表直接的關係,可以通過外來鍵來實現
使用者自定義完整性:借助儲存過程和觸發器實現
實體完整性:
要求每張表都有唯一識別符號,每張表中的主鍵字段不能為空且不能重複
約束方法:唯一性約束、主鍵約束、標識列
域完整性:
針對某一具體關聯式資料庫的約束條件,它保證某些列不能輸入無效的值。
域完整性是指列的值域的完整性,如資料型別、格式、值域範圍、是否允許空值等。
約束方法:限制資料型別、檢查約束、預設值、非空約束
參照完整性:
要求關係中不允許引用不存在的實體。
約束方法:外來鍵約束 (外來鍵:一般來說是其他表的主鍵)
使用者自定義完整性:
針對某一具體關聯式資料庫的約束條件,它反映某一具體應用所涉及的資料必須滿足的要求。
約束方法:規則、儲存過程、觸發器
唯一性約束: unique關鍵字,實現唯一性約束,保證實體完整性。乙個表中可以有多個unique約束
外來鍵(foreign key)約束定義了表之間的一致性關係,用於強制參照完整性。
外來鍵約束定義了對同乙個表或其他表的列的引用,這些列具有primary key或unique約束。
例項:create table person(
id int not null auto_increment primary key comment 『主鍵id』,
name varchar(30) comment 『姓名』,
id_number varchar(18) unique comment 『身份證號』
);這時插入身份證號相同的資料,系統會報錯:
mysql> insert into person (name,id_number)value(「張三」,201901);
query ok, 1 row affected (0.02 sec)
mysql> insert into person (name,id_number)value(「李四」,201901);
error 1062 (23000): duplicate entry 『201901』 for key 'id_number
外來鍵約束:
主表:create table stu(
stu_no int not null primary key comment 『學號』,
stu_name varchar(30) comment 『姓名』
);成績表:
create table sc(
id int not null auto_increment primary key comment 『主鍵id』,
stu_no int not null comment 『學號』,
course varchar(30) comment 『課程』,
grade int comment 『成績』,
foreign key(stu_no) references stu(stu_no)
);在插入成績表中的資料時,要求學號要在主表中存在。
MySQL資料完整性(實體完整性 域完整性)
資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...
mysql 完整性 詳解MySQL 資料完整性
資料完整性分為 實體完整性,域完整性,參考完整性。參照完整性指的就是多表之間的設計,主要使用外來鍵約束。多表設計 一對多 多對多 一對一設計 一 實體 行 完整性 實體完整性通過表的主鍵來實現。使用主鍵來表示一條記錄的唯一,且不為空 語法 primary key 主鍵分類 邏輯主鍵 例如id,不代表...
mysql 域完整性 Mysql之資料完整性約束
mysql之ddl操作 四 資料完整性約束 實體完整性 域完整性 引用完整性 自定義完整性 1 實體完整性 主鍵約束 唯一約束 主鍵自增 1 主鍵約束 特點 唯一的,不能為空 關鍵字 primary key 新增約束語法 alter table 表名 add constraint 約束名 prima...