目錄
第一章? 緒論
一.數據庫的基本概念
1. 數據庫的4個基本概念
2、數據庫系統的特點
二.數據庫和文件
三.數據模型
1.概念模型
2.邏輯模型(物理模型)
2.1關系模型
四.數據庫系統的三級模式結構:
五數據庫的二級映像功能與數據獨立性
第二章? 關系數據庫
一.關系的基本概念
二.關系的類型
1.關系類型的概念
2.基本關系的6個性質
三.關系模式
1.關系模式的表示
2.關系數據庫
四.關系的完整性
1.實體完整性
2.參照完整性
3.用戶定義的完整性
五.關系運算
1.傳統的集合運算
2.專門的關系運算
第三章? 關系數據庫標準語言
一.模式的定義和刪除
1.定義模式
2.刪除模式
二.基本表的定義,刪除和修改
?1.定義基本表
2.修改基本表
3.刪除基本表
三.索引的建立和刪除
?1.建立索引
2.修改索引
3.刪除索引
四.數據查詢?
? ? ? ? ? ? ? ? ? ??
第四章? 數據庫安全性
1.不安全因素
2、數據庫安全性控制
3、為什么要授權
4、如何授權:
5、收回授權: 收回 REVOKEREVOKE
6、創建數據庫模式的權限
7、數據庫角色
8、視圖機制
9、審計
10、數據加密
第五章? 數據庫完整性
1、數據庫的完整性是指數據的正確性和相容性
2、維護完整性需要實現的功能
3、三大完整性
1.屬性上的約束條件
第六章? 關系數據理論
?編輯一.第一范式
二.第二范式
三.第三范式
四.BCNF
五.數據依賴、
1.函數依賴
2.多值依賴?
六.第四范式
七.數據依賴的公理系統
1.蘊涵
2.算法(含覆蓋知識點)?
第七章? 數據庫設計
第一章? 緒論
一.數據庫的基本概念
1. 數據庫的4個基本概念
數據:描述事物的符號,數據庫中存儲的基本對象
?數據庫 :長期存儲在計算機內的、有組織的、可共享的大量數據的集合
?數據庫管理系統?DBMS: 位于用戶與操作系統之間的一層數據管理軟件
?數據庫系統 : 由數據庫、數據庫管理系統、應用程序和數據庫管理員 (DBA) 組成
2、數據庫系統的特點
① 數據結構化
② 數據的共享性高,冗余度低而且容易擴充③ 數據獨立性高:物理獨立性 (應用程序與物理存儲相互獨立,數據的物理存儲改變,應用程序不改變),邏輯獨立性 (應用程序與邏輯結構相互獨立,數據的邏輯結構改變,應用程序不改變)
④ 數據由數據庫管理系統統一管理和控制
二.數據庫和文件
在日常生活中,我們會使用很多的軟件,那么,大家思考一下,這些軟件中最主要的是什么呢?是數據。這些軟件中的數據的存儲需要數據庫,但是,我們之前學過的文件的知識點中提到,文件也可以存儲數據,那么為什么不用文件來存儲呢?
一般的文件確實提供了數據的存儲功能,但是文件沒有提供非常好的數據(內容)管理能力(用戶角度),文件只是把數據存儲起來,如果要增加,查找數據,那么在文件中操作會很不方便
文件保存數據的缺點:
1.文件的安全性問題
2.文件不利于數據查詢和管理
3.文件不利于存儲海量數據
4.文件在程序中控制不方便
數據庫本質:對數據內容存儲的一套解決方案,你給我(數據庫/mysqld)字段或者要求,我給你結果就行
數據庫定義的某一種提供數據存儲能力的一種文件,有自己內部的格式
數據庫存儲介質:磁盤,內存
三.數據模型
數據模型是對現實世界的模擬,是數據庫系統的核心和基礎
數據模型的組成要素:數據結構、數據操作、數據的完整性約束條件數據模型是嚴格定義的一組概念的集合,需要精確描述系統的靜態特性、動態特性和完整性約束條件因此數據模型由以下三個部分組成:
① 數據結構:描述系統的靜態特性→描述數據庫的組成對象以及對象之間的聯系
② 數據操作:描述系統的動態特性→是對數據庫中各種對象的實例所允許的操作的集合,其類型有查詢和更新(增刪改)
③ 數據的完整性約束條件:用以限定符合數據模型的數據庫狀態以及狀態的變化,以保證數據的正確、有效與相容,完整性約束條件是一組完整性規則的集合
數據模型
***數據模型包括概念模型 (信息模型)和邏輯模型/物理模型
1.概念模型
按用戶的觀點建模,用于數據庫設計,表示方法有 E-R模型邏輯模型按計算機的觀點建模
2.邏輯模型(物理模型)
描述數據在系統內部(或磁盤或磁帶)的表示方式和存取方式
2.1關系模型
二維表
學號 | 姓名 | 年齡 | 性別 | 系名 | 年級 |
2013004 | 小明 | 19 | 男 | 社會學 | 2013 |
2013006 | 大華 | 20 | 男 | 法學 | 2013 |
關系:一個關系對應通常說的是一張表。如上圖的學生登記表
元組:表里的一行是一個元組。
屬性:表里的一列是一個屬性,給每一個屬性起一個名稱就是屬性名。上圖有六個屬性
域:一組具有相同數據類型的值的集合。上圖的性別的域是(男,女)
分量:元組中的一個屬性值
關系模式:關系名(屬性1,屬性2,屬性3...)? ? ?學生(學號,姓名,年齡,性別,系名,年級)
四.數據庫系統的三級模式結構:
1.型和值的區別:
舉個例子,
記錄型:學生(學號,姓名,性別,系別,年齡,籍貫)
記錄值:(2013006,小明,男,計算機系,19,江蘇南京)
2.外模式、模式 (邏輯模式)、內模式
外模式(子模式/用戶模式):數據庫用戶能夠看見和使用的局部數據的邏輯結構和特征的描述,數據庫用戶的數據視圖,是與某應用有關的數據的邏輯表示,不同的應用程序有時可以共用同一個外模式,外模式是模式的子集
模式 (邏輯模式):數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖,只涉及型而與值無關,一個數據庫只有一個模式
內模式 (存儲模式):數據物理結構和存儲方法的描述,是數據在數據庫內部的組織方式,一個數據庫只有一個內模式
五數據庫的二級映像功能與數據獨立性
數據庫系統的三級模式是對數據進行抽象的三個級別
外模式/模式映像
保證了數據的邏輯獨立性當模式改變時,對外模式/模式的映像做出改變,保證外模式不變,應用程序由外模式編寫,從而應用程序不變
模式/內模式映像(唯一的)
保證了數據的物理獨立性當數據庫的存儲結構改變時,對模式/內模式映像做出改變,使模式不變,進而應用程序不變
第二章? 關系數據庫
關系模式是對關系的描述,關系模式是型,關系是值?
一.關系的基本概念
笛卡爾積:D={() ()},一個記錄叫做一個元組,元組中的每一個屬性值叫一個分量
基數:域的元素個數
A={a,b}? B={0,1,2}? ?兩個集合的笛卡爾積為{(a,0)(a,1)(a,2)(b,0)(b,1)(b,2)}
候選碼:某一屬性組的值能唯一標識一個元組,而它的子集不能,這個屬性組為候選碼
在學生關系中,學號可以唯一標識一個學生,班級+姓名也可以,那么就說學號(班級+姓名)都是后選碼
主碼:簡單來說就是從候選碼中選出一個最具有代表性的
全碼:關系模式的所有屬性都是這個關系模式的候選碼
外碼:關系R1,R2,其中屬性集X是R1的非主屬性,而是R2的主碼,就說X的、是R1的外碼,R1為參照關系,R2為被參照關系(外碼只是不是主碼,不代表外碼不是主屬性)
主屬性:包含在任何一個候選碼的各個屬性,也就是說,之前提到的(班級+姓名)中,班級和姓名都是主屬性
非主屬性:不包含在任何候選碼的屬性
元組:關系中的每個元素是關系中的元組
二.關系的類型
1.關系類型的概念
基本關系(基本表):實際存在的表
查詢表:查詢結果對應的表
視圖表:由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據
2.基本關系的6個性質
(1)列是同質的。(同一數據類型)
(2)不同的列可以出自同一個域,不同的屬性要有不同的屬性名
(3)列的順序無所
(4)任意兩個元組的候選碼不能取相同的值
(5)行的順序無所謂
(6)分量必須取原子值,每一個分量都不可分的數據項?
三.關系模式
1.關系模式的表示
R(U,D,DOM,F)
U:關系名
D:組成該關系的屬性名的集合
DOM:屬性向域的映像集合
F:屬性見數據的依賴關系集合
2.關系數據庫
?關系數據庫的型稱為關系數據庫模式
關系數據庫的值就是關系數據庫模式在某一時刻對應的關系的集合
四.關系的完整性
關系模型的三類完整性約束:實體完整性,參照完整性(關系的兩個不變性),用戶定義的完整性
1.實體完整性
如果屬性A(一個或一組)是? ? ? ? 基本關系R的主屬性,那么A不能取空值
學生(學號,姓名,班級)中,學號是主碼,則學號不能取空值
2.參照完整性
3.用戶定義的完整性
五.關系運算
基本運算:并,差,笛卡爾積,投影,選擇?
1.傳統的集合運算
并?
R∪S
R∪S={t∣t∈R∨t∈S}
差
R - S
R?S={t∣t∈R∧t∈S}
交
R∩S={t∣t∈R∧t∈S}
R∩S=R–(R?S)
笛卡爾積
嚴格地講應該是廣義的笛卡爾積
2.專門的關系運算
選擇(行的角度)
投影(列的角度)?
連
除運算
第三章? 關系數據庫標準語言
?
?
一.模式的定義和刪除
1.定義模式
CREATE SCHEMA <模式名>AUTHORIZATION<用戶名>
例1
為用戶WANG定義一個S-T模式
CREATE SCHEMA"S-T" AUTHORIZATION WANG
例2
為用戶ZHANG創建一個模式TEST,并且在其中定義一個表TABL
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TABL(COL1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?COL2
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? );
2.刪除模式
DROP SCHEMA<模式名><CASCADE | RESTRICT>;
CASCADE和RESTRICT兩個選一個
DROP SCHEMA ZHANG CASCADE;刪除模式ZHANG ,里面的TABL表也被刪除
二.基本表的定義,刪除和修改
?1.定義基本表
CREATE TABLE<表名>(<列名><數據類型>[列級完整性約束條件]
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<列名><數據類型>[列級完整性約束條件]);
例子
建立一個學生表Student
CREATE TABLE Student
(Sno CHAR(5)
?Sname CHAR(9)
);
2.修改基本表
?ALTER TABLE<表名>
[ADD [COLUMN] <新列名><數據類型>[完整性約束]]
[ADD <表級完整性約束>]
[DROP [COLUMN] <列名><數據類型>[CASCADE | RESTRICT]]
[DROP CONSTRAINT <完整性約束名>[CASCADE | RESTRICT]]
[ALTER COLUMN<列名><數據類型>];
ADD--增加
DROP COLUMN--刪除列
DROP CONSTRAINT--刪除指定的完整性約束條件
ALTER COLUMN--修改原有的列定義
例子
向Student中加入入學時間
ALTER COLUMN Student ADD S_entrance DATE;
將年齡數據由字符型改成整型
ALTER COLUMN Student?ALTER COLUMN Sage INT;
3.刪除基本表
DROP TABLE <表名>[CASCADE | RESTRICT] ;
三.索引的建立和刪除
?1.建立索引
?CREATE [UNIQUE][CLUSTER]INDEX<索引名>
ON<表名>();
2.修改索引
?ALTER INDEX<舊索引名>RENAME TO <新索引名>;
3.刪除索引
DROP INDEX<索引名>;
四.數據查詢?
?
? ? ? ? ? ? ? ? ? ??
第四章? 數據庫安全性
1.不安全因素
① 非授權用戶對數據庫的惡意存取和破壞
② 數據庫中重要數據的泄露
③ 安全環境的脆弱性
2、數據庫安全性控制
① 用戶身份鑒別:靜態口令鑒別、動態口令鑒別、生物特征鑒別、智能卡鑒別
② 存取控制
③ 自主存取控制方法
3、為什么要授權
授權是指授予和收回,是數據庫安全性控制中的自主存取控制方法。是為了保護數據庫,防止不合法使用所造成的數據泄露、更改或破壞
4、如何授權:
發出如下語句的可以是數據庫管理員、也可以是數據庫對象創建者、也可以是已經擁有該權限的用戶
GRANT 權限
ON 對象類型 對象名
TO 用戶名 [WITH GRANT OPTION];
權限: 查詢權限 SELECT, 全部操作權限 ALL PRIVILEGES
對象類型&對象名:對象類型可以是TABLE 也可以是 VIEW,對象名為對應的表名或者視圖名
用戶名:可以是指定用戶,也可以是全體用戶 PUBLIC
如果沒有指定 WITH GRANT OPTION 子句,則獲得某種權限的用戶只能使用該權限,不能傳播該權限注意:SQL 不允許循環授權,即被授權者不能把權限再授回給授權者或其祖先
eg. 把查詢權限授給用戶 U1GRANT SELECT ON TABLE Student TO U1;
5、收回授權: 收回 REVOKEREVOKE
權限 ON 對象類型 對象名 FROM 用戶名 [CASCADE|RESTRICT];
CASCADE:級聯回收。將用戶傳播出去的權限一并收回
RESTRICT:受限回收。若用戶傳播過該權限,回收將會失敗
eg.把用戶 U4 修改學生學號的權限收回
REVOKE UPDATE(Sno) ON TABLE Student FROM U4;
6、創建數據庫模式的權限
對創建數據庫模式一類的數據庫對象的授權再數據庫管理員創建用戶時實現:
CREATE USER username[WITH DBA|RESOURCE|CONNECT];
只有系統的超級用戶才有權創建一個新的數據庫用戶,新創建的數據庫用戶有三種權限:DBA、RESOURCE、CONNECT (此為默認)
DBA:可以創建新用戶、創建模式、創建基本表和視圖等,擁有對所有數據庫對象的存取權限,還可以把這些權限授予一般用戶
RESOURCE:可以創建基本表和視圖,但不能創建模式和新用戶。數據庫對象的屬主可以用GRANT語句把該對象上的存取權限授予其他用戶
CONNECT:只能登陸數據庫,根據其他用戶或者數據庫管理員授予的權限的情況對數據庫對象進行權限范圍內的操作
7、數據庫角色
角色是權限的集合。可以為一組具有相同權限的用戶創建一個角色,使用角色來管理數據庫權限可以簡化授權的過程
創建角色: CREATE ROLE 角色名;
在一個角色中添加角色或者用戶: GRANT 角色 TO 某角色/某用戶 [WITH ADMIN OPTION];
????????指定 WITH ADMIN OPTION 子句,則獲得某種權限的角色或者用戶還可以把這種權限再授予其他角色
給角色授權: GRANT 權限 ON 對象類型 對象名 TO 角色;角色權限收回: REVOKE 權限 ON 對象類型 對象名 FROM 角色;
8、視圖機制
為不同的用戶定義不同的視圖,把不需要的數據隱藏,這樣用戶就不會誤操作
9、審計
把對數據庫的所有操作都記錄到審計日志中,然后就可以通過日志審查這個里面是否有一些非法的行為
10、數據加密
通過一些加密算法,把明文變成密文。這樣別人就無法查看
例子
把查詢Student表的權限授給用戶U1
GRANT SELECT
ON TABLE Student
TO U1;
把對表SC的查詢權限授予所有用戶
GRANT SELECT
ON TABLE SC
TO PUBLIC;
把查詢Student表和修改學生學號的權限授給用戶U4
GRANT UPDATE(Sno),SELECT
ON TABLE Student
TO U4;
把對表SC的NSERT權限授予U5用戶,并允許將此權限再授予其他用戶。
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
把對Student表和Course表的全部操作權限授予用戶U2和U3.
GRANT ALL PRIVILEGES
ON TABLE Student, Course
TO U2,U3;
把用戶U4修改學生學號的權限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4:
收回所有用戶對表SC的查詢權限。
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
把用戶US對SC表的INSERT權限收回。
REVOKE INSERT
ON TABLE SC
FROM US CASCADE;
第五章? 數據庫完整性
1、數據庫的完整性是指數據的正確性和相容性
正確性:符合現實世界語義
相容性:同一對象在不同表中的數據符合邏輯
2、維護完整性需要實現的功能
① 提供定義完整性約束條件的機制
② 提供完整性檢查的方法
③ 進行違約處理
3、三大完整性
① 實體完整性:主碼唯一且非空檢查與違約處理:檢查主碼是否唯一,如果不唯一則拒絕插入或修改;檢查主碼各個屬性是否為空,只要有一個為空就拒絕插入或修改
② 參照完整性:外碼的約束檢查:對被參照表和參照表進行增刪改操作時可能會破壞參照完整性,必須檢查以保證兩個表的相容性違約處理:外碼約束可以在創建參照表時說明不同的違約策略可能破壞參照完整性的情況及違約處理
③ 用戶定義完整性:屬性上約束條件的定義
1.屬性上的約束條件
非空 NOT NULL
列值唯一 UNIQUE
檢查列值是否滿足一個表達式CHECK
檢查和違約處理:當向表中插入元組或者修改屬性值時,關系數據庫管理系統將檢查屬性上的約束條件是否被滿足,如果不滿足則操作被拒絕
2.元組上的約束條件在CREATE TABLE語句中可以用CHECK 短語定義元組上的約束條件,元組級的限制可以設置不同屬性之間的取值的相互約束條件
檢查和違約處理:當向表中插入元組或者修改屬性值時,關系數據庫管理系統將檢查元組上的約束條件是否被滿足,如果不滿足則操作被拒絕
第六章? 關系數據理論
一.第一范式
?1.概念
二維表,每一個分量必須是不可分的數據項
二.第二范式
?若R屬于INF,且每一個非主屬性完全函數依賴于任何一個候選碼,則R屬于2NF
三.第三范式
?關系模式R 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z (強制依賴)Y),使得X→Y,Y→Z,成立,Y→X不成立,則稱R ∈ 3NF
四.BCNF
?設關系模式R<U,F>∈1NF,如果對于R的每個函數依賴X→Y,若Y不屬于X,則X必含有超碼,那么R∈BCNF。滿足BCNF條件有:所有非主屬性對每一個候選鍵都是完全函數依賴; 所有的主屬性對每一個不包含它的候選鍵,也是完全函數依賴;沒有任何屬性完全函數依賴于非候選鍵的任何一組屬性。
五.數據依賴、
1.函數依賴
設R(U)是屬性集U上的關系模式,X,Y是U的子集·若對于R(U))的任事數依賴一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等定則稱X函數確定Y或Y函數依賴于X,記作X->Y
函數依賴和別的數據依賴一樣是語義范疇的概念,只能根據語義來確定一個函數
2.多值依賴?
?
對稱性
傳遞性
函數依賴可以看作是多值依賴的特殊情況
六.第四范式
?設關系R(X,Y,Z),其中X,Y,Z是成對的、不相交屬性的集合。若存在非平凡多值依賴,則意味著對R中的每個屬性
七.數據依賴的公理系統
1.蘊涵
?對于滿足一組數依胸F的關系模式R<U,F>,其中任何一個關系r,若函數依賴X->Y都成立,則稱F邏輯蘊涵X->Y
2.算法(含覆蓋知識點)?
第七章? 數據庫設計
一.數據庫設計概念
1. 信息管理要求:在數據庫中應該存儲和管理哪些數據對象
2.數據操作要求:對數據對象進行查詢,增,刪,查,統計等操作
3.數據庫設計步驟:
需求分析;
概念結構設計;
邏輯結構設計;
物理結構設計;
數據庫實施;
數據庫運行和維護
4.數據字典
內容:數據項,數據結構,數據流,數據存儲和處理
二.概念結構設計
1.E-R模型
2,E-R圖
實體型--矩形
屬性--橢圓形
聯系--菱形
1、需求分析調查機構情況與熟悉業務活動,明確用戶的需求,確定系統的邊界,生成數據字典和用戶需求規格說明書
2、概念結構設計將需求分析得到的用戶需求抽象為概念模型,繪制E-R圖
3、邏輯結構設計將E-R圖轉換為與DBMS相符合的邏輯結構 (包括數據庫模式和外模式),例如E-R圖向關系模型轉換,再根據規范化理論對數據模型進行優化,設計用戶子模式
4、物理結構設計通常關系數據庫物理設計的內容包括關系模式選擇存取方法、以及設計關系、索引等數據庫文件的物理存儲結構
5、數據庫實施建立實際數據庫結構、試運行、裝入數據
? ?6、數據庫運行和維護維護數據庫的安全性、完整性控制以及系統的轉儲和恢復;性能的監督、分析和改進;增加新功能;發現錯誤和修改錯誤