一.資料完整性的分類
在關系模型中,提供了實體完整性,參照完整性,使用者定義完整性。
二.實體完整性
2.1什麼是實體?
實體是一個資料對象,指的是客觀存在并可以互相區分的事物,比如學生,老師等。一個實體在資料庫中對應的是一條記錄。
2.2實體完整性在MySQL中實作
實體完整性在MySQL中的實作是通過主鍵限制和候選鍵限制實作的。
2.2.1主鍵限制
首先,我們來了解一下主鍵是什麼:主鍵是表中的某一列或者多個列的組合。多個列就是複合主鍵。
在MySQL中的主鍵必須保證一下幾個要求:
1.一個表隻能有一個主鍵,主鍵可以複合但是隻有一個。
2.唯一性,主鍵的值在一張表裡面是不能重複是唯一的,而且不能為空。
3.最小化原則,當一個複合主鍵删除掉複合的某一行後如果這個主鍵還是複合的,那麼就是代表原來那個複合主鍵沒有滿足最小化原則。
2.2.2實作主鍵
使用關鍵字:primary key
方式一:單列主鍵
create table tb(
tb_pkintprimary key
);
方式二:複合主鍵
create tabletb(
tb_idint,
tb_namevarchar(10),primary key(tb_id,tb_name)
);
2.2.3候選鍵限制
如果一張表中的某一個列可以唯一辨別這張表,又不含其他多于的屬性,那麼他就是一個候選鍵。比如學生的學号。
同樣的候選鍵也是非空并且唯一值,候選鍵也支援複合。
2.2.4候選鍵與主鍵鍵
表中主鍵隻有一個但是候選鍵可以擁有多。
兩者都會建立索引,主鍵是priamry key索引,但是候選鍵是unique索引
2.2.5實作候選鍵
使用關鍵字unique:
create tabletb(
tb_idint,
tb_namevarchar(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 tabletb(
tb_idint,
tb_namevarchar(10),foreign key (tb_id) references tb1(tb_id) on delete cascade on update cascade);create tabletb1(
tb_idint primary key,
tb_namevarchar(10),unique(tb_id,tb_name)
);
3.3注意點
1.首先從表必須是存在的。
2.從表必須是主鍵被參照
原文:https://www.cnblogs.com/SAM-CJM/p/9703536.html