5 資料庫完整性

2021-09-26 20:18:41 字數 2941 閱讀 6119

完整性指資料的正確性和相容性

完整性:為了防止資料庫中存在不符合語義的資料,不正確的資料

安全性:保護資料庫惡意破會和非法訪問

維護完整性,資料庫系統必須實現 如下功能

提供定義完整性的約束條件機制:由sql資料定義語言實現,作為資料庫模式的一部分存入資料字典

完整性檢查的方法: 在insert ,update,delete語句執行後開始檢查,也可以在事務提交時檢查

違約處理: 發現使用者的操作違背了完整性約束條件將採取一定的動作,如拒絕(no action)操作或(cascade)級聯其他操作

sql 語言如何實現完整性控制的方法

多個屬性構成的碼只能定義為表級約束

create table student (sno char(9)) primary key, //列級約束

sname char20) not null

…);或者

create table student (sno char(9),sname char(20) not null

…primary key(sno) // 表級約束

create table student (sno char(9) not null,sname char(20) not null,

…, priamry key(sno,sname));

實體完整性自動檢查:

1. 主碼值是否唯一:全表掃瞄非常費時間,建立主碼b+樹索引

2. 主碼的屬性是否為空

關係模型的參照完整性在create table 中用foreign key短語定義那些列為外碼,用references 短語指明 這些外碼參照哪些表的主碼

create table sc

(sno char(9) not null,

cno char(4) not null,

grade smallint,

primary key(sno,cno),

foreign key(sno) references student(sno)

foreign key(cno) references course(cno)

參照完整性

將兩個表連線起來,增刪改破壞參照完整性

不一致發生時,解決策略:

拒絕執行(no action) 預設策略

級聯操作

設定為空值

外碼能否接收空值

create table sc

(sno char(9) not null,

cno char(4) not null,

grade smallint,

primary key(sno,cno),

foreign key(sno) references student(sno)

on delete cascade

on update cascade

foreign key(cno) references course(cno)

on delete no action

on update cascade

屬性上的約束條件的定義

約束條件的檢查和違約處理

元組上約束條件定義

例子:create table student

(sno char(9)

sname char(8) not null,

s*** char(2),

sage smallint,

primary key(sno),

check (s***='女『 or name not like 『ms.%』)

);約束條件的檢查和違約處理

在 create table 的時候可以插入constraint

建立斷言

create asserttion

1:create aasertion 《斷言名》 >check子句》

限制每一門課程最多最多60名學生選修:

create assertion asse_sc——cnumi

check (60>=all(select count()

from sc

group by cno)

);限制每個學期每一門課程最多60名學生選修

alter table sc add team date;

create assertion asse_sc_cnum2

check(60>=all(select count() from sc group by cno,team))』

2:刪除斷言的語句格式

電容屏assertion《斷言名》

觸發器使使用者定義在關係表上的一類由事件驅動的特殊過程

觸發器:事件-條件-動作

建立觸發器的格式

create trigger 《觸發器名》

《觸發器事件》 on《表名》

referencing new|old row as 《變數名》

for each

[where 《觸發器條件》】《觸發器動作》

行級和語句級觸發器

舉例:對錶sc的grade屬性進行修改,分數增加10%,則此次操作記錄在另乙個表sc_u(sno,cno,oldgrade,newgrade)oldgrade 修改前的分數,newgrade修改後的分數

create trigger sc_t

after update on gradde on sc

referencing

olldrow as oldtuple

newrow as newtuple

for each row

where(newtuple.grade>1.1*outtuple.grade)

insert into sc_u(sno,cno,oldgrade,newgrade)

values(oldtuple.sno,oldtuple,con,oldtuple.grade.newtuple.grade)

資料庫完整性 5

資料的相容性 資料的完整性和安全性是不同的概念 資料的安全性 完整性是阻止合法使用者通過合法操作向資料庫中加入不正確的資料 安全性防範的是非法使用者和非法操作訪問資料庫中的正確資料 為維護資料庫的完整性,資料庫管理系統必須 提供定義完整性約束條件的機制 提供完整性檢查機制 違約處理 關係模型的實體完...

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...

資料庫完整性

資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...