提供定義完整性約束條件的機制
提供完整性檢查方法
違約處理
在建立表時(create table),使用primary key定義。
[例]:
create table student
(sno char(9) primary key
sname char(20) not null
s*** char(2)
sage smallint
sdept char(20)
)
或
create table student
(sno char(9)
sname char(20) not null
s*** char(2)
sage smallint
sdept char(20)
primary key (sno)
)
sno即為定義的主碼。
實體完整性有兩項自動檢查,
檢查主碼值是否唯一,如果不唯一則拒絕插入或修改
檢查主碼值是否為空,為空則拒絕插入或修改
為了方便檢查主碼會自動建立索引,索引的儲存格式為b+數,具體實現請參照「資料結構 b樹」的討論。
在create table中使用foreign key短語來定義哪些列為外碼,用reference短語來指明這些外碼參照哪些表的主碼。
[例]:
create table sc
(sno char(9) not null,
cno char(4) not null,
grade smallint,
primary key (sno,cno),
foreign key (sno) reference student(sno),
foreign key (cno) reference course(cno)
);
上段**為表sc定義了表級約束條件主碼為sno和cno,同時sno,cno分別為表student,course的外碼。
以sc表和student表為例,破壞參照完整性的情況大致有一下四種情況。
sc表中增加乙個元組,元組的sno屬性在student中找不到。
修改sc表中的元組,sno屬性在student中找不到。
從student表中刪除乙個元組,使sc表中的sno屬性在表student中找不到對應元組。
修改student表,使sc表中的sno屬性在表student中找不到對應元組。
可能破壞參照完整性的情況和違約處理
被參照表
參照表
違約處理
可能破壞參照完整性
插入元素
拒絕可能破壞參照完整性
修改外碼值
拒絕刪除元組
可能破壞參照完整性
拒絕/級連/置空
修改主碼值
可能破壞參照完整性
拒絕/級連/置空
顯示說明參照完整性違約處理示例。
資料庫 完整性約束
問題描述 現有乙個商店的資料庫 shopping 記錄客戶及其購物情況,由以下四個關係組成 a 客戶表customer 儲存客戶資訊,包括客戶號customerid 客戶姓名cname 位址address 電子郵件email 性別gender 身份證號cardid 號碼telcode。b 商品表go...
資料庫完整性 MySQL新增約束
1 作業系統 window10 2 mysql 5.7 1.建立乙個教工表teacher tno,tname,tadd,telphone,t id 將教工號tno設為主鍵,性別預設值為 男 create table teacher tno char 7 primary key,tname char ...
資料庫完整性 MySQL新增約束
1 作業系統 window10 2 mysql 5.7 1.建立乙個教工表teacher tno,tname,tadd,telphone,t id 將教工號tno設為主鍵,性別預設值為 男 create table teacher tno char 7 primary key,tname char ...