數(shù)據(jù)完整性

數(shù)據(jù)完整性

08數(shù)據(jù)完整性.png

域完整性和實體完整性在之前的內(nèi)容中都已經(jīng)涵蓋了,自定義完整性為了解內(nèi)容。下面重點說明一下引用完整性,外鍵。

引用完整性

如果有兩個表,都有主鍵,且兩者的主鍵是公共字段,從表的主鍵是主表的外鍵。只有innodb引擎能創(chuàng)建外鍵,myisam等引擎不支持外鍵

  1. 外鍵約束的特點
    1. 主表中沒有的,從表中不允許插入。
    2. 從表中有的,主表不允許刪除。
    3. 不能改主表中的值,而導致從表孤立存在。
    4. 先刪從表,才能刪主表。
  2. 外鍵(foreign key)
    1. 外鍵是從表中的公共字段,公共字段名字可以不一樣,但是數(shù)據(jù)類型必須一樣。
    2. 外鍵約束用來保證引用完整性。
  3. 外鍵的創(chuàng)建,添加和刪除
    1. 建表時添加外鍵:使用語句 foreign key (從表要添加外鍵的字段名) references 主表名(主表字段名)。
    2. 修改表時添加外鍵: altre table 從表表名 add foreign key (從表字段名) references 主表名 (主表字段名);
    3. 通過外鍵名(使用查詢創(chuàng)建表的語句查看外鍵名)刪除外鍵:alter table 從表表名 drop foreign key 外鍵名;
/*
    創(chuàng)建外鍵
*/
# 創(chuàng)建主表,學生信息(student inforence)表
create table stuinf(
    id int,
    stuid char(11) not null primary key, # 必須是主鍵
    name varchar(10)
);
# 創(chuàng)建從表,學生分數(shù)(student score)表
create table stusco(
    stuid char(11) not null,
    score decimal(4,1),
    foreign key (stuid) references stuinf(stuid) #添加外鍵,通過兩個表的stuid建立聯(lián)系
);
/*
    添加外鍵
*/
# 創(chuàng)建主表,學生信息(student inforence)表
create table stuinf(
    id int,
    stuid char(11) not null primary key,
    name varchar(10)
);
# 創(chuàng)建從表,學生分數(shù)(student score)表
create table stusco(
    stuid char(11) not null,
    score decimal(4,1),
);
# 添加外鍵
alter table stusco add foreign key(stuid) reference stuinf(stuid);
/*
    刪除外鍵
*/
alter table stusco drop foreign key 外鍵名;

外鍵操作(了解)

  1. 嚴格操作,以上講的都是嚴格操作。
  2. 置空操作(set null);如果主表記錄刪除或更新,從表置空。
  3. 級聯(lián)操作(cascade);如果主表記錄刪除或更新,從表級聯(lián)。

一般來說,主表某數(shù)據(jù)刪除時,從表對應數(shù)據(jù)置空;主表數(shù)據(jù)更新時,從表對應數(shù)據(jù)級聯(lián)。

# 語法
foreign key (外鍵) references 主表(關鍵字段) [主表刪除時的動作] [主表數(shù)據(jù)更新時的動作];

例子:

# 創(chuàng)建主表
create table stuinf(
    stuno char(4) primary key,
    name varchar(10) not null
);
# 從表
create table stusco(
    stuid char(4),  # 不能做主鍵,否則無法置空
    score tinyint unsigned,
    foreign key (stuid) references stuinf(stuno) on delete ste null on update cascade
);

這樣,如果你改動了主表中的某些數(shù)據(jù),從表也會發(fā)生相應的改變。

保證實體完整性

  1. 主鍵約束
  2. 唯一約束
  3. 自動增長

保證域完整性

  1. 數(shù)據(jù)類型約束
  2. 非空類型約束
  3. 默認值約束

保證引用完整性

  • 外鍵約束,從表中的公共字段是主表中的外鍵。

保證自定義完整性

  1. 存儲過程
  2. 觸發(fā)器
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容