數(shù)據(jù)庫系統(tǒng)工程師下午的《應用技術》有5個大題,每題15分,總分75,一般45及格。
(我的成績已經(jīng)出來啦!上午題60,下午題69?。?br> 近年題型:
題型 | 數(shù)據(jù)流圖 | E-R圖 | 關系規(guī)范化 | SQL | 兩段鎖協(xié)議 | 數(shù)據(jù)庫恢復 |
---|---|---|---|---|---|---|
2017 | √ | √ | √ | √ | √ | |
2018 | √ | √ | √ | √ | √ | |
2019 | √ | √ | √ | √ | √ | |
2020 | √ | √ | √ | √ | √ | |
2021 | √ | √ | √ | √ | √ | |
2022 | √ | √ | √ | √ | √ |
從2020年開始將數(shù)據(jù)流圖改成了數(shù)據(jù)庫恢復題型,其實是更簡單了一些,其他的題型不變,但整體上感覺比前些年簡單。在2022備考過程中整理了一些答題技巧,但是前提是已經(jīng)將全部的知識點都學習過了!!適合考前看看背背。
我全程看了紫依的課程,整本教材學完之后,大題也就不難了,剛考完感覺問題不大,筆記就分享給大家啦!
數(shù)據(jù)庫系統(tǒng)工程師下午題筆記如果想要word版本可以下載
E-R圖
考點:
1、兩方聯(lián)系:兩個實體之間產(chǎn)生聯(lián)系(1:1, 1:*, * : *)。(實體矩形、聯(lián)系菱形)
例如:(2020年真題)一個快遞公司可以有若干快遞員,一個快遞員只能屬于一家快遞公司。(1: *)
2、三方聯(lián)系:當同一聯(lián)系需要三方同時參與的時候就是三方聯(lián)系。
例如:(2019年真題)投資方和創(chuàng)業(yè)公司之間依靠孵化公司牽線建立創(chuàng)業(yè)項目合作關系, 具體實施由孵化公司的一位員工負責協(xié)調(diào)投資方和創(chuàng)業(yè)公司的一個創(chuàng)業(yè)項目。 一個創(chuàng)業(yè)項目只屬于一個創(chuàng)業(yè)公司, 但可以接受若干投資方的投資。 (1: * : *)
3、弱實體:一個實體的存在必須以另一個實體為前提。(弱實體雙邊矩形、聯(lián)系是雙邊菱形)
例如:學生的家長、員工的家屬
4、聚合:將聯(lián)系作為實體,與其他的實體產(chǎn)生聯(lián)系。即兩個實體A和B先產(chǎn)生聯(lián)系,聯(lián)系本身再與C產(chǎn)生聯(lián)系,需要用方框把A和B之間的聯(lián)系框起來。
例如:(2017年真題)顧客登錄系統(tǒng)之后,可以下訂單購買商品。代購員根據(jù)顧客的訂單在超市采購對應商品,一份訂單所含的多個商品可能由多名代購員從不同超市采購。
5、子實體:一個實體集可以按照某些特征區(qū)分為幾個子實體。(矩形左右多兩豎)
例如:(2018年真題)員工分為代購員和配送員。
6、同一實體集內(nèi)的聯(lián)系:同一實體集內(nèi)的兩個實體之間互相存在著一定的關系。
例如:第四版教材P237最上面。
注意:
三方聯(lián)系與聚合的區(qū)別:
三方聯(lián)系必須三方實體同時參與,缺一不可。
聚合有先后順序,兩個實體先產(chǎn)生聯(lián)系,再與第三個實體產(chǎn)生聯(lián)系。
總結(jié):
1、問題1補充E-R圖:認真讀題目,確認參與聯(lián)系的實體和聯(lián)系類型(1:1, 1:*, * : *等)。確認聯(lián)系類型,一定要優(yōu)先根據(jù)題目信息判斷,如果題目信息較少,不足以判斷,再根據(jù)題目【邏輯結(jié)構設計】中給出的關系模式判斷。(不確定的時候一般根據(jù)關系模式判斷比較快速準確,因為 * : * 或 * : * : *類型需要用另外一個關系模式記錄,并且這些實體的主碼都在聯(lián)系的關系模式的屬性中)
2、問題2補充關系模式中的屬性:一般都可以從題目的說明中找到答案。如果沒有找到,根據(jù)具體語義以及【概念模型設計】中的E-R圖判斷。(一般還是比較簡單的)
3、問題3,一般是增加實體、聯(lián)系,在E-R圖中補充,并且給出新的關系模式。仔細閱讀說明,根據(jù)實際判斷。
關系規(guī)范化
考點:
1、找候選碼
候選碼可以決定關系模式中的所有屬性,且候選碼的任何一個真子集都不能單獨決定全屬性。
2、是否滿足某一范式,最高可達到第幾范式
(1)有非主屬性對碼的部分函數(shù)依賴,不滿足2NF。
(2)有非主屬性對碼的傳遞函數(shù)依賴,不滿足3NF。
(3)有主屬性對碼的部分和傳遞函數(shù)依賴,不滿足BCNF。
(4)有多值依賴,X→→Y,X和Y在一個關系模式,且只有X和Y不能有其他屬性。如果有則不滿足4NF,可以回答原因:“X多值決定Y,由于存在嵌入式的多值依賴,所以不滿足4NF”。
3、分解關系模式
(1)有部分函數(shù)依賴
R(A,B,C,D,E,F),F(xiàn)={A→(C,D,E),(A,B)→F}
分解為R1(A,C,D,E)和R2(A,B,F)
(2)有傳遞函數(shù)依賴
R(A,B,C,D,E,F),F(xiàn)={A→(B,C), B→(D,E,F)}
分解為R1(A,B,C)和R2(B,D,E,F)
(3)有多值依賴
R(A,B,C,D,E,F),F(xiàn)={A→→B, A→(C,D,E,F)}
分解為R1(A,B)和R2(A,C,D,E,F)
總結(jié):
1、找函數(shù)依賴集
2、判斷候選碼(首選編碼,沒有選名稱)
3、根據(jù)主屬性和非主屬性判斷是否有部分、傳遞函數(shù)依賴
(任一候選碼中的屬性都屬于主屬性,其他為非主屬性)
4、確定達到什么范式
5、分解關系模式(按函數(shù)依賴集分解)
SQL
創(chuàng)建表
CREATE TABLE S ( Sno CHAR(5),
Pno CHAR(6),
Statu CHAR(8),
Qty NUMERIC(9),
PRIMARY KEY (Sno, Pno),
FOREIGN KEY REFERENCES S(Sno),
FOREIGN KEY REFERENCES S(Pno));
NOT NULL UNIQUE = PRIMARY KEY
PRIMARY KEY 可在一行后面寫PRIMARY KEY,也可在最后寫,但有多個一定在最后寫,寫在一起。
FOREIGN KEY 可在一行后面寫REFERENCES S(Sno),也可在最后寫,但是有幾個寫幾行,不能寫在一起。后可加:
ON DELETE CASCADE 刪除被參照關系元組時,同時刪除參照關系中的元組;
ON DELETE SET NULL 刪除被參照關系元組時,將參照關系的屬性值置空。
NULL、NOT NULL、UNIQUE
CHECK (Sex=“男” or Sex=“女”)
default 默認 例:default GETDATE()
修改表
ALTER TABLE S ADD Zap char (6); //增加列
ALTER TABLE S DROP 完整性約束名; //刪除列
ALTER TABLE S MODIFY Zap char (6); //修改列
刪除表
DROP TABLE S;
創(chuàng)建視圖
CREATE VIEW CS-STUDENT(所有屬性)
AS SELECT Sno, Sname, Sage, Sex
FROM Student
WHERE SD=’CS’
WITH CHECK OPTION;
子查詢語句(select后)可以任意復雜,但不能有DISTINCT和ORDER BY
WITH CHECK OPTION 保證更新、插入、刪除的行滿足子查詢中的條件表達式
屬性列明或全部省略或全部指定(都寫上比較保險)
刪除視圖
DROP VIEW CS-STUDENT;
視圖更新
從多個基本表連結(jié)導出的視圖不允許更新
對使用了分組、聚集函數(shù)的視圖不允許更新
單個基本表的投影、選擇的視圖允許更新,同基本表
建立索引
CREATE [UNIQUE][CLUSTER] INDEX SPJ-no ON SPJ (Sno ASC, Pno DESC, Jno ASC);
UNIQUE 表明此索引的每一個索引值只對應唯一的數(shù)據(jù)記錄
CLUSTER聚簇索引,索引項的順序是與表中記錄的物理順序一致的索引組織
刪除索引
DROP INDEX SPJ-no;
查詢
SELECT[ALL|DISTINCT] 目標列表達式 ,目標列表達式 //投影
FROM 表名或視圖名, 表名或視圖名 //笛卡爾積
WHERE 條件表達式 //選擇
GROUP BY 列名1 HAVING 條件表達式
ORDER BY 列名2 ASC|DESC //ASE升序默認,可以省略
WHERE 可使用的運算符: IN、NOT IN、LIKE(_% 匹配)、IS NULL、IS NOT NULL、算術運算符、AND、OR、NOT
聚集函數(shù):COUNT([ALL|DISTINCT] *) 統(tǒng)計元組個數(shù),COUNT、SUM、AVG、MAX、MIN([ALL|DISTINCT] 列名) 計算一個的……
(>,<, >=, <=, =, <>) any、 (>,<, >=, <=, =, <>) all
更名:as (所有地方都要用改后的名,as也可省略)
字符串:_一個字符,%任意字符串
轉(zhuǎn)義符:普通的_和%前加轉(zhuǎn)義符
集合:UNION并(自動去除重復)、UNION ALL并(保留重復)、INTERSECT交、EXCEPT差
外連接
左外連接:(左表所有數(shù)據(jù)都在,右表中沒有的屬性寫null)
SELECT S.Sno, Sname, SC.Cno, Grade
FROM S
LEFT JOIN SC
ON S.Sno=SC.Sno
右外連接:(右表所有數(shù)據(jù)都在,左表中沒有的屬性寫null)
RIGHT JOIN SC
ON S.Sno=SC.Sno
全外連接:(左右表所有數(shù)據(jù)都在,沒有的屬性寫null)
FULL JOIN SC
ON S.Sno=SC.Sno
增刪改
插入行
INSERT INTO 表名 VALUES (值1, 值2) //所有值
INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2) //部分值
刪除行
DELETE FROM 表名 //刪除所有行(表還在)
DELETE FROM 表名 WHERE 條件表達式 //刪除指定行
修改行
UPDATE 表名 SET 列名=新值 WHERE 條件表達式
授權
GRANT 權限, 權限
ON TABLE/DATABASE 表名/數(shù)據(jù)庫名
TO 用戶, 用戶
[WITH GRANT OPTION];
WITH GRANT OPTION 獲得權限的用戶還可以將權限賦給其他用戶
操作權限:
屬性列(TABLE): SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES(4種)
視圖(TABLE): SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES(4種)
基本表(TABLE): SELECT、INSERT、UPDATE、DELETE、ALTER、INDEX、ALL PRIVILEGES(6種)
數(shù)據(jù)庫(DATABASE): CREATETAB(可由DBA授予普通用戶)
銷權
REVOKE 權限, 權限
ON TABLE/DATABASE 表名/數(shù)據(jù)庫名
FROM 用戶
[RESTRICT|CASCADE];
RESTRICT 收回語句中指定用戶的權限
CASCADE 除了收回語句中指定用戶的權限,還收回該用戶賦予其他用戶的權限
創(chuàng)建觸發(fā)器
CREATE TRIGGER 觸發(fā)器名 [{BEFORE|AGTER}] [DELETE|INSERT|UPDATE of 列名]
ON 表名
[REFERENCING 臨時視圖名]
[FOR EACH ROW | FOR EACH STATEMENT]
WHERE觸發(fā)條件
BEGIN
觸發(fā)動作
END[觸發(fā)器名]
REFERENCING 臨時視圖名:觸發(fā)器運行過程中生成兩個臨時視圖
(referencing old row as orow、referencing old-table as otab)
FOR EACH ROW 行觸發(fā)器(該觸發(fā)器由觸發(fā)語句影響的每一行觸發(fā))
FOR EACH STATEMENT 語句觸發(fā)器(默認,整個語句只觸發(fā)一次觸發(fā)器)
更改觸發(fā)器
ALTRE TRIGER 觸發(fā)器名 [BEFORE|AGTER] [DELETE|INSERT|UPDATE of 列名]
ON 表名/視圖名
AS
BEGIN
觸發(fā)動作
END
刪除觸發(fā)器
DROP TRIGGER 觸發(fā)器名
兩段鎖協(xié)議(2PL)
背?。?!
1、兩段鎖協(xié)議:同一事務對任何數(shù)據(jù)進行讀寫之前必須對數(shù)據(jù)加鎖;在釋放一個封鎖之后,該事務不再申請和獲得任何其他封鎖?!皟啥巍钡暮x:事務分為兩個階段。第一階段是獲得封鎖(擴展階段);第二階段是釋放封鎖(收縮階段)。
2、可串行化的并行調(diào)度:多個事務的并發(fā)執(zhí)行時正確的,當且僅當其結(jié)果與某一次序串行地執(zhí)行它們時的結(jié)果相同,稱這種調(diào)度策略是可串行化的調(diào)度??纱谢遣l(fā)事務正確性的準則,按這個準則規(guī)定,一個給定的并發(fā)調(diào)度,當且僅當它是可串行化的才認為是正確調(diào)度。
(遵循兩段鎖協(xié)議,一定可串行化;不能遵循兩段鎖協(xié)議,不一定不是可串行化)
3、兩段鎖協(xié)議也可能產(chǎn)生死鎖。
4、死鎖的處理:(1)死鎖預防(2)死鎖避免(3)死鎖檢測(4)死鎖解除
考點:
1、嵌入式SQL(游標CURSOR)
EXEC SQL
END_EXEC
(1)定義游標 DECLEARE 游標名 CURSOR FOR
(2)打開游標 OPEN 游標名
(3)推進游標 FETCH FROM 游標名 INTO 變量表
(4)關閉游標 CLOSE 游標名
2、事務
BEGIN TRANSACTION
END TRANSACTION
ROLLBACK 撤銷
COMMIT 提交
3、并發(fā)操作導致數(shù)據(jù)不一致(都是因為破壞了事物的隔離性)
(1)丟失修改(2)不可重復讀(3)讀臟數(shù)據(jù)
4、事務隔離級別
READ UNCOMMITED 讀未提交:任何情況無法保證
READ COMMITED 讀已提交:可避免讀臟數(shù)據(jù)
REPEATABLE READ 可重復讀:可避免讀臟數(shù)據(jù)、不可重復讀
SERIALIZABLE 可串行化(最高級別)可避免讀臟數(shù)據(jù)、不可重復讀、幻讀
(考慮/不考慮并發(fā)性能,不考慮可以用最高級別)
5、事務的特性(應該在上午題了解)
(1)原子性(2)一致性(3)隔離性(4)持久性
數(shù)據(jù)庫恢復
1、故障后恢復的值
(1)已COMMIT的事務,填變量改后的值(不管在CHECKPOINT的前后)。
(2)未COMMIT的事務都填原來的值。
2、Redo和Undo的事務列表
(1)CHECKPOINT前COMMIT的事務不用管。
(2)CHECKPOINT和CRASH之間COMMIT的事務重做redo。
(3)未COMMIT的事務撤銷undo。
3、損壞的回復過程
(1)事務故障(只需要日志文件)
step1:反向掃描日志文件,查找該事務的更新操作。
step2:對事務的更新操作執(zhí)行你操作。
step3:繼續(xù)反向掃描日志文件,查找該事務的其他更新操作,并做同樣的處理,直到事務的開始標志。(2)系統(tǒng)故障(只需要日志文件)
step1:掃描日志文件,確定分別需要redo和undo的事務。
step2:對未完成的事務,需要執(zhí)行撤銷undo操作,講已執(zhí)行的操作撤銷。
step3:對已提交的事務,需要執(zhí)行重做redo操作,重新執(zhí)行已執(zhí)行的操作。
(3)介質(zhì)故障(需要日志文件和數(shù)據(jù)備份)
step1:裝載故障前最近一次的備份和故障前的日志文件副本。
step2:按照系統(tǒng)的恢復過程執(zhí)行撤銷undo和重做redo來恢復數(shù)據(jù)庫。文章來源:http://www.zghlxwxcb.cn/news/detail-492577.html
數(shù)據(jù)流圖
(修改題型后沒有再考)
1、每一個小標題對應一個加工,仔細閱讀題干中的說明,將每句話與圖中的數(shù)據(jù)流對應,如果有一句話沒找到對應的數(shù)據(jù)流,可能為缺失的數(shù)據(jù)流(有個題找缺失數(shù)據(jù)流)。
2、閱讀題干說明的過程中可以對應地找到實體E和數(shù)據(jù)存儲D,命名的時候一定要按照題干說明中的詞語并結(jié)合實際語義來命名,不要隨意編造。
3、如果某句話暫時存疑,可以先做標記,等后面的讀完了再做判斷。
4、根據(jù)找缺失數(shù)據(jù)流的分值來估算可能需要找?guī)讞l缺失的數(shù)據(jù)流。(寫答案沒有順序之分,寫對即可)
5、保持父圖與子圖平衡的話背下來?。。。?br> 父圖中某加工的輸入輸出數(shù)據(jù)流必須與它的子圖的輸入輸出數(shù)據(jù)流在數(shù)量和名字上相同。如果父圖中的一個輸入(輸出)數(shù)據(jù)流對應于子圖中幾個輸入(或輸出)數(shù)據(jù)流,而子圖中組成這些數(shù)據(jù)流的數(shù)據(jù)項全體正好是父圖中的這一個數(shù)據(jù)流,那么它們?nèi)匀凰闶瞧胶獾摹?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-492577.html
到了這里,關于【學習筆記】軟考中級【數(shù)據(jù)庫系統(tǒng)工程師】下午題技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!