前言
總結整理不易,希望大家點贊收藏。
給大家整理了一下計數據庫系統概論中的重點概念,以供大家期末復習和考研復習的時候使用。
參考資料是王珊老師和薩師煊老師的數據庫系統概論(第五版)。
文章目錄
- 前言
- 4 第四章 數據庫安全性
- 4.1 數據庫安全性定義
- 4.2 數據庫不安全因素
- 4.3 安全性控制
- 4.3.1 sql控制
- 4.4 數據庫角色
- 5 第五章 數據庫完整性
- 5.1 數據庫完整性
- 5.2 完整性約束
- 5.2.1實體完整性(主鍵):
- 5.2.2 用戶定義完整性:
- 5.2.3 例子
- 5.3 斷言(更一般性的約束)
- 5.4 觸發器
- 5.4.1 A. 創建觸發器
- 5.4.2 B. 行級觸發器
- 5.4.3 C. 刪除觸發器
- 6 練手題
4 第四章 數據庫安全性
4.1 數據庫安全性定義
數據庫的安全性指的是保護數據庫以防止不合法使用造成的數據泄露、更改、破壞。
4.2 數據庫不安全因素
(1) 非授權用戶對數據庫的惡意存取和破壞
(2) 敏感數據泄露
(3) 環境脆弱
4.3 安全性控制
(1) 用戶身份鑒別:靜態口令(密碼),動態口令(驗證碼),生物特征(指紋,人臉),智能卡。
(2) 存取控制:自主存取控制:grant,revoke語句。通過對存取權限的設定來進行安全性控制,對數據本身沒有安全性標記。
強制存取控制:對數據本身進行密級標記,無論數據怎么復制,標記和數據總是一體的。只有符合密級標記要求的用戶才能操縱數據。適用于安全性要求較高的場合。
(3) 視圖
(4) 審計:一種事后檢查的方式,審計把用戶對數據庫的所有操作自動記錄放在審計日記里。用于安全性檢查。
4.3.1 sql控制
Grant語句:
Grant select on table student To U1 With grant option //允許U1授權給其他用戶
REVOKE語句:
Revoke insert On table sc From u1 (cascade/restrict) //cascade 級聯收回U1授權出去的所有權限 Restrict 拒絕操作
創建數據庫用戶:
Create user u1 with DBA/RESOURCE/CONNECT //創建數據庫模式的權限在創建數據庫用戶的時候才授權
DBA:所有權限 CONNECT只能登陸查詢和操縱,不能創建別的東西 RESOURCE 可以創建表和查詢、操縱。不能創建用戶和模式 (默認connect)
4.4 數據庫角色
角色使權限的合集,一般為具有相同權限的用戶創建一個角色。
創建
Create role r1
授權 和給用戶授權一樣,可以給角色授權其他角色和用戶:
Grant 角色1,角色2 To 角色3 With admin option
收回權限 和用戶一樣
5 第五章 數據庫完整性
5.1 數據庫完整性
定義:是指數據的正確性和相容性。是為了防止不符合語義的,不正確的數據。
為了為維護數據庫的完整性,DBMS必須實現:
(1)完整性約束機制
(2)完整性檢查方法
(3)進行違約處理
5.2 完整性約束
5.2.1實體完整性(主鍵):
列級約束,表級約束。主碼唯一,且非空。
全表掃描 Primary key();
參照完整性(外鍵):Foreign key(sno) references student(sno);
參照正確,存在。非空(因為參照主碼啊)
5.2.2 用戶定義完整性:
A. 屬性上的約束條件 Not null(非空) Unique(唯一) Check語句:sex char(2) check (sex in (‘男’,‘女‘));
違約就拒絕執行
B. 元組上的約束條件,可以設置不同屬性之間的相互制約 Check (sex=’女’ or name not like ‘Ms.%’)
5.2.3 例子
完整性約束命名子句
Constraint c1 check (sex in (‘男’,‘女‘)); //C1是約束名
Constraint c2 primary key (sno);
完整性約束都是在create table/alter table
的時候寫 Alter table student Add constraint c3 check(age<20)
5.3 斷言(更一般性的約束)
//限制數據庫最多60個人選
創建
Create assertion ass_st Check(60>=( Select count(*) From course,scWhere course.cno=sc.cno and cname=’數據庫’))
刪除
Drop assertion ass_st
5.4 觸發器
定義:觸發器是用戶定義在關系表上的一類由事件驅動的特殊過程。事件——條件——動作,當事件發生時,檢查條件,條件符合就執行。
觸發器分為insert,update,delete三種觸發器
5.4.1 A. 創建觸發器
Create trigger t1 Before/after select/update/insert ( of sname 指定哪一列) on student
Referencing new/old row as R1 (給新的、舊的行取個名字,方便下面操作) For each row/statement When (條件) 觸發體
例:
create trigger t1 After update of grade on sc Referencing Old row as oldtuple New row as newtuple
For each row When (newtuple.grade>=1.1* oldtuple.grade)
Insert into sc_u(sno,cno,oldgrade,newgrade) Values(oldtuple.sno,oldtuple.cno,oldtuple.grade,newtuple.grade)
5.4.2 B. 行級觸發器
For each row 當觸發器事件發生,表有多少行,就執行多少次觸發器動作體
語句級觸發器
For each statement 當觸發器事件發生,只執行一次
5.4.3 C. 刪除觸發器
Drop trigger 觸發器 on 表名
6 練手題
數據庫不好找題,都是很零碎的知識點,還是要多記概念,SQL語句相對來說并不是很重要