吉林大学数据库系统原理期末复习笔记
看一下題型->書上的知識點看完->做原題
2014原題
2015原題
結(jié)合老師給的模擬題。
2023題目大同小異的。
視頻總結(jié)筆記
第一章 緒論
所有的基本概念在第一章中都有涉獵
第二章\第六章
基本運算
附加的關(guān)系代數(shù)運算:
擴展的關(guān)系代數(shù)運算:如何數(shù)據(jù)更新,聚集函數(shù)的操作(統(tǒng)計)
第三章\第四章\第五章 SQL語句
第三章所有都掌握
第四章定位更高級
第五章SQL語句過程化編程
不要求寫函數(shù)、觸發(fā)器,不針對任何數(shù)據(jù)庫產(chǎn)品,只了解基本概念就可。
DDL
DML
DCL
SQL與集合運算、空值
聚集函數(shù)、having、not exists
嵌套子查詢
視圖、可更新視圖
完整性約束
第七章 數(shù)據(jù)庫設計、ER模型
ER模型是工具,最終我們要得到的是關(guān)系模型。
ER模型設計、關(guān)系模型轉(zhuǎn)換,ER圖畫完整。
題干就是需求分析的結(jié)果,設計非常明確。
實體集的轉(zhuǎn)換要按規(guī)則。
第八章 關(guān)系數(shù)據(jù)庫的設計(難點)
和第七章的設計是兩種不同的方式,通過最原始的想法來設計數(shù)據(jù)庫。
介紹了范式理論,BC范式、3NF。真正實用的標準是第三范式。
BCNF的判定
3NF的判定(NP問題)與分解
無損連接和保持依賴的證明
第九章
關(guān)于數(shù)據(jù)庫應用程序的開發(fā),未講解。給出了應用程序開發(fā)的驅(qū)動程序。
未詳細介紹部分
第十四章 事務
可串行化調(diào)度
沖突可串行化、視圖可串行化
第十五章(2023未考)
并發(fā)控制
鎖有兩階段索協(xié)議
嚴格兩階段鎖、強兩階段索
死鎖的檢測與恢復
第十六章 恢復系統(tǒng)
恢復算法不作為考試的內(nèi)容
CSDN學習筆記
ER圖的理解:
使用數(shù)字的映射基數(shù)圖靠近實體的一邊才是映射關(guān)系(該實體對應多少個對方實體), 另外, 在被約束的一方可以使用雙線表示完全參與.
不使用數(shù)字則相反, 遠離實體的一邊才是映射關(guān)系(該實體對應多少個對方實體).
弱實體集和它所依賴的強實體集之間的聯(lián)系集叫標識聯(lián)系集,在ER圖中用雙菱形
無損分解和保持依賴
無損分解:分解為多個部分后通過自然連接可以恢復的分解稱為無損連接分解(定義)。R1∩R2是R1或R2的超碼(判斷法)。
保持依賴:1.每一個函數(shù)依賴只能映射到它所在分解后的關(guān)系中。(充分條件)
如果不滿足條件1,那么還應進行后續(xù)判斷:
這一篇寫的比較好:正則覆蓋、候選碼的一般求法
總結(jié):右部單屬性、左部冗余屬性(去除左部某個屬性之后剩下屬性的閉包可以包含另一個屬性)、冗余依賴、合并相同的左部。
候選碼的求法: 只左, 兩邊, 均無.
只左的全部 ∪ \cup ∪均無, 求閉包能覆蓋則結(jié)束
只左的全部 ∪ \cup ∪兩邊的 1 1 1個, 求閉包能覆蓋則加入候選碼, 再刪除.
只左的全部 ∪ \cup ∪兩邊的任意 l a s t _ c n t + 1 last\_cnt + 1 last_cnt+1個, 求閉包能覆蓋則加入候選碼, 之后求的候選碼不能包含它碼.
3NF和BCNF的分解
課本筆記
第一章 引言
數(shù)據(jù)庫系統(tǒng)的目標、解決的問題:
- 冗余、不一致
- 訪問難:需要篩選時
- 孤立:分布于不同文件中,且可能格式不同
- 完整性:需要滿足特定的約束
- 原子性:操作不能分離,要么完成要么不完成
- 并發(fā)訪問異常:一起訪問時
- 安全性問題:權(quán)限不能太大,可控
數(shù)據(jù)抽象:
- 物理層:關(guān)注怎樣存儲
- 邏輯層:存儲什么數(shù)據(jù),及之間的關(guān)系
- 視圖層:抽象地關(guān)注某個部分
實例:特定時刻信息的集合
模式:數(shù)據(jù)庫的總體設計。XX模式對應XX層的設計。
關(guān)系模型、E-R模型、基于對象的模型、半結(jié)構(gòu)化模型
DDL(Definition):域、完整性約束、斷言、授權(quán)
DML(Manipulation)
第二章 關(guān)系模型介紹
關(guān)系:表
元組:表中的一行
屬性:表中的一列
域:屬性允許取值的集合
域是原子的:域中的所有元素是不可再分的單元
空:表示未知或者不存在的狀態(tài)
超碼:一個或多個屬性的集合,可以唯一的標識一個元組。超碼并不一定最簡,因為任何超碼的超集也是超碼。(結(jié)合候選碼理解)
候選碼:是最小超碼
主碼:設計者選中的,用來區(qū)分元組的一個候選碼
外碼:一個關(guān)系模式包含的其它模式的主碼
參照關(guān)系:包含外碼的一方;被參照關(guān)系:另外一方
模式圖:每個關(guān)系外,用箭頭從參照關(guān)系的外碼屬性指向被參照關(guān)系的主碼屬性
模式圖沒有表現(xiàn)出參照完整性的約束。相應地,實體-聯(lián)系圖可以表現(xiàn)。
第三章 SQL
基本類型:
- char(n); varchar(n)
- int; smallint
- numeric(p, d):定點數(shù)一共p位,小數(shù)點右邊d位
- real; double precision:浮點數(shù)、雙精度浮點數(shù)
- float(n):精度至少為n的浮點數(shù)
基本模式定義:
- create table
- 破壞完整性約束會被標記為錯誤
- insert into
- delete from
- drop table r;delete from r。前者全部刪除,后者保留關(guān)系模式r但刪除所有元組。
- alter table r add A D。關(guān)系r中添加屬性A域是D。
- alter table r drop A。關(guān)系r中刪除屬性A。
SQL查詢:
- select (all)、from、where
- distinct
- select還支持加減乘除運算,如select A * 10 from B,并不會導致原表中值的改變
- and、or、not以及比較運算符
多關(guān)系查詢:將所有關(guān)系列在from中,where中可指定匹配條件。兩個關(guān)系中都存在的屬性用形如關(guān)系名.屬性的形式.
通常地,閱讀順序是from->where->select
理解:
from語句定義了一個新關(guān)系,該關(guān)系為from后所有關(guān)系的笛卡爾積。
where語句中的謂詞可用來篩選關(guān)系,留下有意義的。
自然連接:兩個關(guān)系模式中,相同名稱屬性的取值相同才連接。最后加using (A)表示僅僅將屬性A作為連接篩選標準。
as:重命名屬性或者關(guān)系
重命名的原因:
- 輸出合適的屬性名稱
- 簡易
- 同一關(guān)系做笛卡爾積
字符串:
- 單引號表示字符串,字符串內(nèi)表示單引號用兩個連續(xù)的單引號
- 字符串是大小寫敏感的
- 模式匹配用like:%任意字串,_一個字符,轉(zhuǎn)義字符\讓%、_正常顯示
select *表示所有屬性
order by排序, 其后的字段有desc或asc
between and在一定范圍之間包含端點
(a, b) <= (c, d)表示同時小于
集合的運算:
union: 自動去重復(因為是集合), 相同屬性合并, union all才保留所有
intersect: 自動去重復, (因為是集合)交運算
except: 差運算
null:
null的比較運算的結(jié)果是unknown, 是true和false之外的第三個邏輯詞
需要注意的是false and unknown = false; true or unknown = true
null = null 會返回unknown, 使用distinct時需注意, 它會保留所有含空值,且除空值屬性外其它屬性相等的元組
聚集函數(shù):
- avg
- min
- max
- sum
- count
- group by: 沒有g(shù)roup by就一個元組一組
select后沒有被聚集的屬性只能是group by后的屬性 - having
having是對分組的篩選, having子句中的謂詞在形成分組后才起作用, 同樣地, having后沒有被聚集的屬性只能是group by后的屬性
除count外所有聚集函數(shù)忽略輸入的null, 如果輸入全為空值null, 那么輸入值的集合為空集
空集的count運算值為0, 其它聚集函數(shù)返回空值
嵌套子查詢:
- in, not in
- where A > some(select A from…), 同理, some可替換為all
- exists: 空關(guān)系測試, 返回值是true或者false
相關(guān)子查詢: 內(nèi)層的嵌套使用了外層的關(guān)系名稱, 進而需要注意的是所定義關(guān)系的作用域的問題(可類比編程語言的變量的作用域)
沒有contains運算符, A contains B 可用not exists(B except A)表示
-
unique: 查詢結(jié)果是否有重復的元組, 可通過1 > select count…實現(xiàn)等價替換
盡管一個元組有很多副本, 只要一個元組含null, unique的測試結(jié)果可能為真 -
lateral: 可以使from中的相關(guān)變量被與之同級的嵌套循環(huán)使用
-
with: 提供定義臨時關(guān)系的方法with max_budget(value) as (select max(budget) from department) select ...
(詳細的例子參考教材P53)
標量子查詢: 若某一查詢只返回單個屬性和單個元組, 那么該查詢可以放在返回單個值的表達式能夠出現(xiàn)的任何地方
delete在使用時需要注意的是刪除條件where的謂詞, 可能隨著刪除出現(xiàn)改變
insert在使用時可能出現(xiàn)無限插入的問題, 原因是select選擇的元組剛好被再次插入到了原來的關(guān)系中, 同時, 沒有主碼約束
insert into-values
update-set
使用case消除先后順序的影響:
第四章 中級SQL
join-on: 比join-using能設置更通用的謂詞
(左、右、全)外連接:保留部分、全部連接結(jié)果
左外連接示例:
1. 先進行內(nèi)連接
2. 對于左邊的每一個元組, 如果未與右邊的任何一個元組匹配, 則向左外連接的結(jié)果表中加入一個新元組, 新元組從左側(cè)關(guān)系中得到的屬性為未匹配的元組的屬性, 其它屬性皆為空
on和where的理解:
外連接實質(zhì)是先進行內(nèi)連接, 然后為那些對內(nèi)連接沒有貢獻的元組補上空值并加入結(jié)果, 補上空值并加入結(jié)果在on篩選之后, 在where之前
所有連接:
| inner join |
| left outer join |
| right outer join |
| full outer join |
| natural |
| on |
| using (A, B, C) |
視圖create view <name> as select...: 在需要時才被創(chuàng)建, 通過計算查詢結(jié)果得出的
物化視圖: 定義視圖的實際關(guān)系發(fā)生改變, 視圖也跟著改變, 方式:
1. 關(guān)系變, 視圖馬上變
2. 允許視圖過時, 周期性地更新視圖
視圖可更新的條件:
1. from只包含一個關(guān)系
2. select不包含表達式, 聚集, 或者distinct
3. 沒有出現(xiàn)在select中的屬性可以為null
4. 查詢不能有g(shù)roup, having
上述限制不是完整的, 因為即使?jié)M足以上所有, 如果插入的元組仍然不滿足最初選擇條件, 則不會出現(xiàn)在視圖中
-
事務: 查詢或更新語句的序列
- 提交: 將當前SQL語句所做更新持久保存
- 回滾: 撤銷當前事務的SQL語句對數(shù)據(jù)庫的更新
-
約束
- not null
- unique
- check
- 參照完整性 foreign key (<name>) reference <name>
- on delete/update cascade 刪除/更新外鍵所在元組時, 級聯(lián)
-
斷言create assertion <name> check ... : 上述約束是斷言的特殊形式
-
date/time/timestamp
time和timestamp可以含小數(shù) -
default
-
index
-
blob/clob: binary/char large object
-
授權(quán)grant <權(quán)限: select/update等等> on <關(guān)系> to <用戶>; 收回權(quán)限用revoke
-
角色create role <name>
第五章 高級SQL
- 觸發(fā)器create trigger <name> after <op> ...
第六章 形式化關(guān)系查詢語言
σ \sigma σ: σ a ( B ) \sigma_a(B) σa?(B)在關(guān)系B中選擇滿足條件a的元組
Π \Pi Π: Π a ( B ) \Pi_a(B) Πa?(B)在關(guān)系B中選擇屬性a投影
∧ ∨ ? \land\lor\lnot ∧∨?: and/or/not
∪ ∩ \cup\cap ∪∩: 并/交, 需要保證集合的相容性
集合交運算可以被集合差運算替代: a ∩ b = a ? ( a ? b ) a\cap{b} = a - (a - b) a∩b=a?(a?b)
- 相容:
- 屬性數(shù)目相等
- 兩者第 i i i個屬性的域相同. i ∈ min ? ( 關(guān)系屬性數(shù)目 ) i\in{\min(關(guān)系屬性數(shù)目}) i∈min(關(guān)系屬性數(shù)目)
? - ?: 集合差運算
× \times ×: 笛卡爾積
ρ \rho ρ: ρ a ( b , c ) ( r e l a ) \rho_{a(b,c)}(rela) ρa(b,c)?(rela)關(guān)系rela更名為a, 屬性按序為b, c
運用兩個同樣的關(guān)系的時候需要更名, 例如, 求出大學里最高工資的導師:
Π s a l a r y ( i n s t r u c t o r ) ? Π i n s t r u c t o r . s a l a r y σ i n s t r u c t o r . s a l a r y < a . s a l a r y ( i n s t r u c t o r × ρ a ( i n s t r u c t o r ) ) \Pi_{salary}{(instructor)} - \Pi_{instructor.salary}\sigma_{instructor.salary < a.salary}{(instructor\times{\rho_a(instructor)}}) Πsalary?(instructor)?Πinstructor.salary?σinstructor.salary<a.salary?(instructor×ρa?(instructor))
? \Join ?: 自然連接運算
← \gets ←: 賦值運算
? ? \ltimes\rtimes ??: 左右外連接, 全外連接在自然連接左右兩側(cè)加上下雙橫線
廣義投影允許在投影的下標下面進行加減乘除運算
a , b , c g f ( p a r a 1 ) , y ( p a r a 2 ) ( r e l a 1 , r e l a 2 ) _{a, b, c}g_{f(para1), y(para2)}(rela1, rela2) a,b,c?gf(para1),y(para2)?(rela1,rela2): d e p a r t _ n a m e g s u m ( s a l a r y ) ( i n s t r u c t o r ) _{depart\_name}g_{sum(salary)}(instructor) depart_name?gsum(salary)?(instructor)聚集函數(shù), 求出每個系的總工資
count-distinct(): 用來去重計數(shù)的聚集函數(shù)
- 閱讀順序及關(guān)系代數(shù)與SQL語句的關(guān)系
- f r o m a , b , c from\ a, b, c from?a,b,c = σ w h a t e v e r ( a , b , c ) \sigma_{whatever}{(a, b, c)} σwhatever?(a,b,c)
- w h e r e P where\ P where?P = σ P ( w h a t e v e r ) \sigma_{P}(whatever) σP?(whatever)
- s e l e c t a , b , c select\ a, b, c select?a,b,c = Π a , b , c ( w h a t e v e r ) \Pi_{a, b, c}(whatever) Πa,b,c?(whatever)
利用元組進行關(guān)系查詢: { t ∣ P ( t ) } \{t | P(t)\} {t∣P(t)}
{ t ∣ P ( t ) } \{t | P(t)\} {t∣P(t)}: 的域是P中顯式出現(xiàn)的值以及名稱出現(xiàn)在P中的那些關(guān)系的所有值的集合
域關(guān)系演算: 把元組細分
第七章數(shù)據(jù)庫是合集和E-R模型
-
設計階段:
- 概念設計
- 功能需求規(guī)格說明
- 邏輯設計
- 物理設計
-
實體聯(lián)系模型
- 實體
- 實體集: 具有相同性質(zhì) (屬性) 實體的集合
- 聯(lián)系
- 聯(lián)系集: n ≥ 2 個 n\ge2個 n≥2個實體集上的數(shù)學關(guān)系
-
屬性
- 域/值集: 該屬性可取值的集合
- 簡單或復合屬性
- 單值或多值屬性
- 派生屬性: 可以推導出來的
-
約束
- 映射基數(shù): 一個實體通過一個聯(lián)系集能關(guān)聯(lián)的實體個數(shù)
- 一對一
- 一對多
- 多對一
- 多對多
理解: 映射的另一邊都是至多
- 全部參與
- 部分參與
- 映射基數(shù): 一個實體通過一個聯(lián)系集能關(guān)聯(lián)的實體個數(shù)
-
聯(lián)系集的主碼:
- 多對多: 兩者主碼并
- 多對一: 多那一方的主碼
- 一對一: 任選一方的主碼
-
刪除冗余:
結(jié)合CSDN資料看
使用數(shù)字的映射基數(shù)圖靠近實體的一邊才是映射關(guān)系(該實體對應多少個對方實體), 另外, 在被約束的一方可以使用雙線表示完全參與.
不使用數(shù)字則相反, 遠離實體的一邊才是映射關(guān)系(該實體對應多少個對方實體).
- 弱實體集:沒有足夠?qū)傩孕纬芍鞔a. 弱實體集被標識實體集擁有. 聯(lián)系成為標識性聯(lián)系.
特化: 由一般到特殊, 用空心箭頭標識, 表示is a. 對某個關(guān)系通過定制屬性, 進而再進行分類.
概化: 由特殊到一般, 是特化的逆過程.
屬性繼承
概化上的約束:
- 條件定義的: 用具體條件定義
- 用戶定義的: 由用戶指派
- 不相交: 上層實體至多屬于一個下層實體
- 重疊: 可不相交相對
- 全部概化/特化: 高層一定屬于某一個下層
- 部分概化/特化: 和全部相對
概化的關(guān)系模式:
第八章
無損分解、有損分解:分解后,再自然連接能不能還原.
1NF: 關(guān)系R中所有屬性的域都是原子的.
依賴 → \rarr →: 一個左邊值只能對應一個右邊
閉包: 由一個依賴能推導出的所有依賴.
BCNF: 所有的非平凡依賴左邊都是的超碼.
將不是BCNF的模式分解為BCNF:
如果 a → b a\rarr{b} a→b是非平凡的, 且 a a a不是原關(guān)系 R R R的超碼, 分解為如下兩個模式:
- a ∪ b a\cup{b} a∪b
- R ? ( β ? a ) R - (\beta - a) R?(β?a)
通常, 對BCNF的分解較少是保持依賴(分解后的依賴全部在一個模式中)的.
進而, 比BCNF要求弱的3NF可以滿足要求.
3NF: a → b a\rarr{b} a→b依賴平凡, 或左邊是模式的超碼, 或 b ? a ? 候選碼 b - a \sube 候選碼 b?a?候選碼.
閉包
自反/增補/傳遞
合并/分解/偽傳遞 :證明過程細看。
無關(guān)屬性: 去除無關(guān)屬性的方法參考CSDN.
正則覆蓋: 1. 不含無關(guān)屬性. 2. 左部唯一.
無損分解、有損分解:分解后,再自然連接能不能還原.
保持依賴: 分解后的關(guān)系都在一個模式中.
多值依賴 a → → b a\rarr\rarr{b} a→→b: 表示 a a a和 b b b之間的聯(lián)系獨立于 a a a和 R ? a R - a R?a之間的聯(lián)系.
- a → b ? a → → b a\rarr{b}\implies{a\rarr\rarr{b}} a→b?a→→b
- a → → b ? a → → R ? a ? b {a\rarr\rarr{b}}\implies{a\rarr\rarr{R - a - b}} a→→b?a→→R?a?b
4NF: a → → b a\rarr\rarr{b} a→→b平凡或者 a a a是 R R R的超碼. 它一定是BCNF.
第十四章 事務
原子性: "全或無"的特性.
隔離性: 數(shù)據(jù)庫具有確保事務正常執(zhí)行不被干擾的特性.
持久性: 崩潰后操作也必須是持久的.
一致性: 隔離執(zhí)行事務時, 保持數(shù)據(jù)庫的一致性.
沖突等價: 經(jīng)非沖突的指令交換.
沖突可串行化: 調(diào)度與一個串行調(diào)度等價.
優(yōu)先圖無環(huán)沖突可串行化.
視圖等價: 注意Read Write的對象。
總結(jié)
以上是生活随笔為你收集整理的吉林大学数据库系统原理期末复习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音视频测试的重点
- 下一篇: The 12th tip of DB Q