一.數據完整性的分類數據庫
在關係模型中,提供了實體完整性,參照完整性,用戶定義完整性。spa
二.實體完整性rest
2.1什麼是實體?code
實體是一個數據對象,指的是客觀存在並能夠相互區分的事物,好比學生,老師等。一個實體在數據庫中對應的是一條記錄。對象
2.2實體完整性在MySQL中實現blog
實體完整性在MySQL中的實現是經過主鍵約束和候選鍵約束實現的。索引
2.2.1主鍵約束io
首先,咱們來了解一下主鍵是什麼:主鍵是表中的某一列或者多個列的組合。多個列就是複合主鍵。table
在MySQL中的主鍵必須保證一下幾個要求:class
1.一個表只能有一個主鍵,主鍵能夠複合可是隻有一個。
2.惟一性,主鍵的值在一張表裏面是不能重複是惟一的,並且不能爲空。
3.最小化原則,當一個複合主鍵刪除掉複合的某一行後若是這個主鍵仍是複合的,那麼就是表明原來那個複合主鍵沒有知足最小化原則。
2.2.2實現主鍵
使用關鍵字:primary key
方式一:單列主鍵
create table tb( tb_pk int primary key );
方式二:複合主鍵
create table tb( tb_id int , tb_name varchar(10), primary key (tb_id,tb_name) );
2.2.3候選鍵約束
若是一張表中的某一個列能夠惟一標識這張表,又不含其餘多於的屬性,那麼他就是一個候選鍵。好比學生的學號。
一樣的候選鍵也是非空而且惟一值,候選鍵也支持複合。
2.2.4候選鍵與主鍵鍵
表中主鍵只有一個可是候選鍵能夠擁有多。
二者都會建立索引,主鍵是priamry key索引,可是候選鍵是unique索引
2.2.5實現候選鍵
使用關鍵字unique:
create table tb( tb_id int , tb_name varchar(10), unique(tb_id,tb_name) );
三.參照完整性
在現實世界中存在多個對應的關係,那麼這個對應關係就是參照完整性,也就是MySQL中的外鍵。
3.1參照完整性的定義爲(圖解):
3.2參照的完整性語法
關鍵字:foreign key
語法:
foreign key (自己表的列) references
從表表名(從表的主鍵)
on delete restrict | cascade | set null | no action
on update restrict | cascade | set null | no action
restrict :刪除或者更新時,在外間中出現的值操做失敗
cascade:將外鍵的值一同刪除或者更新
set null :刪除更新時外鍵的值被設置爲空
例子首先說明有兩張表:
create table tb( tb_id int , tb_name varchar(10), foreign key (tb_id) references tb1(tb_id) on delete cascade on update cascade ); create table tb1( tb_id int primary key, tb_name varchar(10), unique(tb_id,tb_name) );
3.3注意點
1.首先從表必須是存在的。
2.從表必須是主鍵被參照