數據完整性約束(1)——實體完整性、參照完整性

一.數據完整性的分類數據庫

在關係模型中,提供了實體完整性,參照完整性,用戶定義完整性。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.從表必須是主鍵被參照

相關文章
相關標籤/搜索