這裡介紹一下自己在準備考研複試時對於資料庫這門可的知識點總結,本科期間上課沒聽懂,後來自己經歷考研,把常見的問題難點總結一下.
常考知識點:關係代數,連線查詢,巢狀查詢,正規化,模式分解,er圖(資料庫設計)
關係代數基本運算包括並,差,笛卡爾積,選擇,投影
傳統集合運算:並,差,交,笛卡爾積
專門關係運算:選擇,投影,連線,除
運算子就不展示了(太難畫了)
選擇:該運算是找到某個表中符合條件的若干行.格式:σ選擇謂詞(關係)
投影:該運算是找到某個表中符合條件的若干列.∏屬性1…屬性n(關係)
連線:連線是把具有相同屬性且值相同的行做笛卡爾積.格式:(關係)⋈(關係)
這裡說說等值連線和自然連線
等值連線是按照等值條件將兩個表連線起來,對不同表的相同屬性予以區別
自然連線是特殊的等值連線,按照相同屬性且屬性值相同的行做笛卡爾積,把相同屬性去重.
除:書上用到了象集,但是解釋太麻煩,這裡不嚴謹的解釋一下表ra
bca1b1
c2a2
b3c7
a3b4
c6a1
b2c3
a4b6
c6a2
b2c3
a1b2
c1表sbc
db1c2d1
b2c1
d1b2
c3d2
r÷sa
a1在關係r中,a可以取四個值,其中:
a1的象集為:
a2的象集為:
a3的象集為:
a4的象集為:
s在(b,c)上的投影為。
顯然只有r的象集a1包含s在(b,c)屬性組上的投影,所以r÷s=
其實就是找到兩個表的公共屬性,對r表按照屬性進行分組,把a1的行放在一起,a2行放在一起..,然後找到r表中公共屬性包含另外乙個表的公共屬性的a值就是除法的結果.
除常用於問題中含有全部字樣的問題
當查詢的資料在兩個及其以上的表中時就需要使用連線操作將兩個表連線起來進行操作.連線的方法就是將兩個表中的公共屬性進行連線,也就是說兩個表右參照關係才能連線,連線的語句就是讓公共屬性相等.where 表1.屬性=表2屬性
如:
學生(學號,姓名,年齡)
選課(課程號,課程名,學號)
select *
from 學生,選課
where 學生.學號=選課.學號
巢狀查詢一般可以用where子句替代,有的不行,一般常有exists, in 等關鍵字,這裡注意,子查詢一定要在運算子的後面
如:
select *
from ...
where *** = (
select *
.......
);
巢狀查詢分為1.子查詢完成後結果返回到父查詢中,父查詢繼續執行.和2.父查詢查一條記錄後在子查詢中繼續查,這種效率低,一般是父子查詢中用的相同的乙個表.
舉個例子:
各個正規化的嚴格定義這裡不做介紹,只列出自己的理解
1nf,關係中每個屬性都不可分,都是原子的
2nf,每乙個非主屬性都完全依賴與主屬性,即不存在部分函式依賴
3nf,不存在非主屬性對碼傳遞函式依賴
bcnf,每乙個決定因素都含有碼
(1)對於某個屬性x的閉包演算法:
1.令x0 = x
在函式依賴集f中找到箭頭左邊是x0子集的函式依賴,並把這些函式依賴右邊並如x0中
2.判斷新的xi+1是否與xi相等
若不相等,則判斷xi+1目前是否包含屬性集中的所有屬性,若全部屬性都已經包含則退出,否則繼續
若相等,則退出
(2)f+
1.找到所有屬性的各種組合,包括空集
2.分別以各種組合為左部依據armstrong公式推導
1.將函式依賴集f中的函式依賴的右邊化為單一屬性
2.去掉f中的所有函式依賴左邊的冗餘屬性
3.去掉f中的所有冗餘的函式依賴
例:r, u=, f=
1.把右邊屬性化為單一屬性
f=2.去掉左邊冗餘屬性
a+ =
b+ =
所以b為冗餘屬性
所以f=
3.去掉冗餘函式依賴
首先判斷函式依賴左邊相同屬性多的函式依賴進行判斷,找是否有某個函式依賴可以推出其他函式依賴
a->d冗餘
所以f=
1.檢驗無損連線性
r,u=, f=,p=
初始化表ab
cdr1r2
…若該列的屬性存在與該分解中,就填ai, i 為列號,否則填bij, i為行號,j列號
按照函式依賴更新各個行,判斷是否有乙個行全是a,有則滿足無損連線,否則反之
2.轉化為3nf的保持函式依賴分解
1.最小化處理f
2.把f中所有函式依賴左右都未出現過的屬性構成乙個關係模式
3.f中x->a,構成關係模式xa,若有x->a1, x->a2,…x->an,化為xa1a2…an
4.若分解後的關係ri的屬性集ui,包含於rj的屬性集uj中則去掉關係ri
不想敲了,上**吧......
對於一段話,找到所有實體,找到實體對應的屬性,屬性數量不少於兩個,然後按照聯絡的型別去掉一些多餘的屬性.為什麼會有多餘的屬性呢?舉個例子,因為對於1:n的聯絡,n端的實體要包含1端的碼和聯絡的屬性,但是在er圖中,這些屬性不是n端實體的,不需畫出來.
對於聯絡的關係模式設計
1:1,把聯絡的屬性和任意一端的碼寫在另外一端
1:n,把聯絡的屬性和1端的碼寫在n端
m:n,單獨作為乙個模式,再加入兩端的主碼
PROTOTYPE模式難點解析
這個模式在c 中什麼時候才會使用,為什麼不直接new,大家只要明白乙個場景,就會知道它的用處。比如,現在讓你設計乙個遊戲,一共有8個關卡,每關的小兵有四種,但是第一關的小兵最弱,第八關的小兵最強,你怎麼設計?你可能認為這還不簡單,需要小兵的時候,直接new乙個相應的小兵,就可以了。但是這樣做會遇見乙...
面試疑難點解析
list,set,map,有什麼區別?list和set實際上市實現了collection介面,那麼collection介面的原理你能簡單描述一下嗎?list介面可以插入多個null值,並且重複值,而且list是乙個有序的集合。set是乙個不可重複的集合,裡面的元素都只出現,最多隻出現1次,並且set...
2011全國計算機四級考試資料庫難點解析(10)
資料庫的實施 執行和維護 編輯推薦 2011全國計算機四級資料庫難點解析 9 2011全國計算機四級資料庫難點解析 8 2011全國計算機四級資料庫難點解析 7 10.1 試執行 功能測試 效能測試 10.2 資料庫維護 資料庫的轉儲和恢復 資料庫的安全性 完整性控制 資料庫效能的檢測和改善 資料庫...