第一章 ?數(shù)據(jù)庫概論
1.在數(shù)據(jù)庫管理技術(shù)的發(fā)展過程中,數(shù)據(jù)庫獨立性最高的是“
數(shù)據(jù)庫系統(tǒng)
”階段
2.三大經(jīng)典的數(shù)據(jù)結(jié)構(gòu)模型是“
關(guān)系,層次和網(wǎng)狀模型
”
3.單個用戶使用的數(shù)據(jù)視圖的描寫敘述,稱為“
外模式
”,它是用戶與DBS的接口
4.DB中,數(shù)據(jù)的邏輯獨立性是指“
概念模式改變,外模式與應(yīng)用程序不變
”
5.通過指針鏈表來表示實體間聯(lián)系的模型是“
網(wǎng)狀和層次模型
”
6.DB的體系結(jié)構(gòu)分成三層,各自是“
邏輯模式,內(nèi)模式,外模式
”
7.DBMS的主要功能有“
數(shù)據(jù)庫定義功能,數(shù)據(jù)庫的操縱功能和數(shù)據(jù)庫的執(zhí)行管理
”,DB維護(hù)和組織存儲管理及數(shù)據(jù)通信接口等
8.組成數(shù)據(jù)模型的三大要素是“
數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操作,數(shù)據(jù)完整性約束規(guī)則
”
9.DBMS包含的主要程序“
數(shù)據(jù)庫定義語言及編譯處理程序,數(shù)據(jù)操縱語言及編譯程序,數(shù)據(jù)庫執(zhí)行控制程序,實時維護(hù)管理程序
”
第二章 關(guān)系數(shù)據(jù)庫
1.在關(guān)系模式中,“
關(guān)系的主keyword的值不能為空
”
2.關(guān)系代數(shù)的物種基本操作為“
并,差,笛卡爾積,投影和選擇
”
3.設(shè)關(guān)系R(A,B,C)和S(B,C,D),則“
能夠有R連接S,R與S的笛卡爾積,可是R不能夠并S,由于屬性數(shù)目不同
”
4.在關(guān)系代數(shù)中,對一個關(guān)系作投影操作后,新關(guān)系的元祖?zhèn)€數(shù)“
小于或等于
”原來的關(guān)系的元祖?zhèn)€數(shù)
5.當(dāng)屬性“年齡”值為1000時,該數(shù)據(jù)受到了“
用戶定義完整性
”破壞
? ? ? ? ?
實體完整性:主keyword不能取空值 ?用戶完定義完整性:取值范圍 ?參照完整性:不引用不存在的實體
6.關(guān)系的元數(shù)指”
屬性的個數(shù)
“,關(guān)系的基數(shù)指”
元組的個數(shù)
“,能唯一標(biāo)識元組的屬性集,而無多余屬性,該屬性集稱為”
候選keyword
“
7.關(guān)系模型的三類完整性規(guī)則包含:”
實體完整性,參照完整性,用戶定義完整性
“
8.在關(guān)系代數(shù)的運算中,專門的關(guān)系代數(shù)運算有:”
選擇(σ),投影(Π)連接(|x|)除(÷)
“
9.θ連接操作是由關(guān)系代數(shù)的”
選擇和笛卡爾積
“操作組合而成的
10.關(guān)系代數(shù)是用代數(shù)對關(guān)系的運算來表達(dá)查詢的,而關(guān)系演算是用”
謂詞形式
“表達(dá)查詢的,它們分為”
元組關(guān)系演算和域關(guān)系演算
“兩種
? ? 計算題舉例1:
? ? 已知關(guān)系R,W,D如圖所看到的:
?R: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
P | Q | T | Y |
2 | b | c | d |
9 | a | e | f |
2 | b | e | f |
9 | a | d | e |
7 | g | e | f |
7 | g | c | d |
T | Y | B |
c | d | m |
c | d | n |
d | f | n |
T | Y |
c | d |
e | f |
(1)R1=π Y,T(R) ??
? ?解答:
注意:沒有同樣的元組:
Y | T |
d | c |
f | e |
e | d |
?解答:
要求R中 P列的元素大于5且T列中的元素等于e:
P | Q | T | Y |
q | a | e | f |
7 | g | e | f |
?解答:
連接R與W,要求列同樣才干夠連接,結(jié)果例如以下
P | Q | T | Y | B |
2 | b | c | d | m |
2 | b | c | d | n |
7 | g | c | d | m |
7 | g | c | d | n |
解答:
R與D達(dá)卡爾積計算后: ?篩選 出 第二列,第一列和第六列 ,而且第三列等于第五列
P ? | Q ? | TR? | YR? | TD | YD |
2 | b | c | d | c | d |
2 | b | c | d | e | f |
9 | a | e | f | c | d |
9 | a | e | f | e | f |
2 | b | e | f | c | d |
2 | b | e | f | e | f |
9 | a | d | e | c | d |
9 | a | d | e | c | f |
7 | g | e | f | c | d |
7 | g | e | f | e | f |
7 | g | c | d | c | d |
7 | g | c | d | e | f |
P | Q | Y |
2 | b | d |
9 | a | f |
2 | b | f |
7 | g | d |
7 | g | f |
首先總結(jié)一下關(guān)系除法的計算方法:
如有R,S例如以下:
R:
A | B | C | D |
2 | 1 | a | c |
2 | 2 | a | d |
3 | 2 | b | d |
3 | 2 | b | c |
2 | 1 | b | d |
C | D | E |
a | c | 5 |
a | c | 2 |
b | d | 6 |
上面顏色已標(biāo)出,S中的CD去R中相應(yīng)的CD中找,找到同樣的行,此時能夠看到有3行同樣的,各自是 第一行,第三行,第五行,
然后能夠看到,CD中的 a,c和b,d列有兩個同樣的AB列,2,1,而 CD中相應(yīng)的b,d卻僅僅有3,2,所以所除的結(jié)果是:
A | B |
2 | 1 |
由以上方法,能夠得第五題的解是:
P | Q |
2 | b |
7 | g |
計算題舉例2:
設(shè)教學(xué)數(shù)據(jù)庫由三個關(guān)系: S(S#,SNAME,AGE,SEX)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SC(S#,C#,GRADE)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? C(C#,CNAME,TEACHER)
使用關(guān)系代數(shù)式表達(dá)下列查詢:
(1)查找學(xué)號為s3的學(xué)生所學(xué)的課程名和任課教師名;
? ? ? ? 解答:πcname,teacher(σsname='s3'(s|x|c))
(2)查找姓名為WANG學(xué)生不學(xué)的課程的課程號
? ? ? ? 解答:πc#(c)-πc#(σsname=’WANG‘,(s|x|c))
(3)查找女同學(xué)選修的課程名和任課教師名
? ? ? ? 解答:πsname,cname,teacher(σsex=’女‘,c#(c)=c#(sc),s#(s)=s#(sc),(s|x|c))?
第三章:關(guān)系DB的標(biāo)準(zhǔn)語言SQL
1.傳統(tǒng)的關(guān)系模型中的術(shù)語與SQL中的術(shù)語存在例如以下相應(yīng)關(guān)系,關(guān)系模式在SQL中稱為”
基本表
“,存儲模式稱為”
存儲文件
“,子模式稱為”
視圖
“
2.視圖是一個虛表,它是一個從”
一個或幾個基本表中選定某些記錄或列
“中導(dǎo)出的表
3.Select語句中,”
where
“子句用于選擇滿足給定條件的元組,使用”
Group By
“子句可按指定的列的值分組,同一時候使用”
HAVING
“子句提取滿足條件的元組
4.SQL語言的數(shù)據(jù)定義功能包含”
定義基本表,定義視圖和定義索引
“
5.SQL語言有兩種使用方式,各自是”
獨立的交互使用方式和嵌入到高級語言方式
“
計算題舉例:
已知DBS中包括了三個基本表goods(G#,gname,price,type,fact)當(dāng)中商品表中,G#,gname,商品名,price:單位價格,type:型號,fact:制造商,商場基本表:
shops(s#,sname,addr,manag)當(dāng)中分別為:商場號,商場名,地址,經(jīng)理名,基本銷售表:SALES(S#,G#,QTY)QTY為數(shù)量
1.試用SQL語句完畢下列查詢
(1)查詢?nèi)侩娨暀C(jī)的生產(chǎn)廠商,型號,單位價格
select fact,type,price from goods where gname='電視機(jī)';
(2)查詢同一時候生產(chǎn)電視機(jī)和電冰箱的制造商
select fact from goods where goods.gname='電冰箱' and goods.gname='電視機(jī)'
(3)查詢”吉利“商場所銷售的各種商品的商品號和數(shù)量
select g#,qty from sales where s# in(select s# from shops where sname='吉利');
(4)查詢銷售量最高的商場號和所銷售的商品號
select sales.s#,g# from sales where sales.qty=(select max(qty) from sales);
2.試用SQL對基本表做創(chuàng)建和更新操作
(1)創(chuàng)建基本表Goods(類型,長度自定)
create table goods(g# in not null indentity(1,1) primary key,
gname varchar(20) not null,
price numeric(18,0),
fact varchar(20) not null);
(2)將華南廠全部的商品名稱,型號和單位價格插到一個已存在的基本表A(gn,gtype,price)中
insert into A (gn,gtype,price) select gname,type,price from goods where gname='華南廠'
(3)將總銷量低于1000的全部商品的價格減少10%
update goods set price=price*0.9 where g# in(select g# from (select g#,sum(qty) from sales group by g# having sum(qty)<1000))
第四章 關(guān)系數(shù)據(jù)庫設(shè)計理論
1.當(dāng)B屬性依賴于A屬性時,屬性A與B的聯(lián)系類型是 : ”
多對一或一對一
“
2.關(guān)系DB規(guī)范化是為了解決關(guān)系DB中”
數(shù)據(jù)冗余,更新異常
“問題而引入的
3.將一個關(guān)系模式規(guī)分解成多個關(guān)系模式時,為了保持原模式所滿足的特性,要求分解具有”
無損連接性和保持函數(shù)依賴性
“
4.已知關(guān)系例如以下圖所看到的:
R:
A | D | E |
a1 | d1 | e2 |
a2 | d6 | e2 |
a3 | d4 | e3 |
a4 | d4 | e4 |
(1) R中的函數(shù)依賴是否成立 :
? ? ? 1).A->D ?(
成立
)
? ? ? 2)AD->E(
成立
) ?
? ? ? 3)DE->A(
成立
)
(2)R的候選keyword為
A,DE?
這里復(fù)習(xí)下候選keyword的求法:
L,R,LR類屬性, L累屬性都是候選keyword,LR類屬性中,可以多個組合,假設(shè)可以決定所有,則是候選keyword
(3)R屬于"
BCNF
"范式
"左部決定因素都是R的超keyword"
解答題舉例1:
指出下列關(guān)系模式最高是第幾范式?并說明理由
(1)R(X,Y,Z),F={XY->Z}
解答:
考察F,X,Y是L類屬性,(XY+)=XYZ,所以 XY是R的唯一Key,在F中僅僅有一個FD,且左部包括Key,所以是BCNF.
(2)R(X,Y,Z),F={Y->Z,XZ->Y}
解答:
L類屬性: X
LR類屬性:Y,Z
因為 X+=X, (XY+)=XYZ
即XY是R的一個Key
XZ是R的還有一個Key,
所以X,Y,Z都是主屬性,所以∈3NF
解答題舉例2:
設(shè)關(guān)系R例如以下:
課程名 | 教師名 | 教師地址 |
C1 | 馬千里 | D1 |
C2 | 于得水 | D1 |
C3 | 余塊 | D2 |
C4 | 于得水 | D1 |
請問:1)R為第幾范式,為什么?
解答:
由表:1.課程名->教師名 ,2. 課程名->教師地址 ,3. 教師名->教師地址,由1,2,R的key :課程名
非主屬性對單主屬性不存在依賴
又由于教師名 不決定課程名,所以 課程名部分決定教師地址 ?所以R∈3NF
(2)是否存在刪除異常?若存在,則說明在什么情況下發(fā)生?
存在,當(dāng)刪除教師,教師相應(yīng)的課程也將被刪除,存在刪除異常
課程名 | 教師名 |
C1 | 馬千里 |
C2 | 于得水 |
C3 | 余塊 |
C4 | 于得水 |
教師名 | 教師地址 |
馬千里 | D1 |
于得水 | D1 |
余塊 | D2 |
于得水 | D1 |
解答題舉例3
設(shè)有關(guān)系模式R(U,F1),當(dāng)中,U={E,F,G,H}
F1={E->G,G->E,F->EG,H->EG,FH->E}
(1)求F的最小依賴集
解答:
? ? ? ?
1).單一化: F1={E->G,G->E,F->E,F->G,H->E,H->G,FH->E}
? ? ? ? 2).去掉多余屬性
? ? ? ? ? ? ?考察FH->E,F+=FEG,H多余,即F->E
? ? ? ? 3).去掉多余FD,
? ? ? ? ? ? ? ?F->E由E->G,F->G推得多余,
? ? ? ? ? ? ? ?H->E由H->G,G-E推得多余
? ? ? ? ? ? ? 所以F'={E->G,G->E,F->G,H-G}
(2)求R的候選keyword
? ? 解答:
L:H,F ? 所以(FH+)=EGFH
(3)將R分解成滿足3NF,且具有無損連接性,保持函數(shù)依賴
ρ1={(EG),(FG),(HG)}
? ?推斷ρ1是否具有無損連接性,使用判定表,判定出有損,
ρ2=ρ1∪{FH}
? ? ?={(EG),(FG),(HG),(FH)}
以下總結(jié)下無損連接的判定:
步驟:
設(shè)有關(guān)系模式R(A1,A2,A3,.....An) 和 FD集, 及R的一個分解?ρ={R1,R2,...Rk}
a.構(gòu)造一張k行n列的判定表
? ? 每一列相應(yīng)一個屬性Ai(1<=j<=n),每一行相應(yīng)一個分解的模式Ri(1<=i<=k);若Aj∈Ri,則在第i行與第j列交叉處填入符號aj,否則填入bij
b.重復(fù)利用F中的每一個FD,改動表中元素,知道不能改動為止
c.假設(shè)發(fā)現(xiàn)表中某一行變成了a1,a2,.....ak.則是無損分解
否則是有損分解
舉例:
無損分解判定法:
設(shè)有關(guān)系模式R(A,B,C,D),R被分解成ρ={AB,BC,CD} 若R上成立的FD集F1={B->A,C->D} 那么ρ相對F1是否具有無損分解?
ρ的初始判定表:
Ri | A | B | C | D |
AB(分解模式) | a1 (A∈AB所以是a1) | a2 | b13 | b14 |
BC(分解模式) | b21 (A?BC所以是b21) | a2 | a3 | b24 |
CD(分解模式) | b31(A?CD所以是b32) | b41 | a3 | a4 |
B,C,D列中同理
又B決定A, C決定D,所以須要將 A中的 b21改動為 a2以與B保持一致,其它同理可得 (顏色已標(biāo)出)
改完后:
Ri | A | B | C | D |
AB(分解模式) | a1 | a2 | b13 | b14 |
BC(分解模式) | a1 | a2 | a3 | a4 |
CD(分解模式) | b31 | b41 | a3 | a4 |
發(fā)現(xiàn): 第二行中 有完整的 a1,a2,a3,a4 ?所以說是無損分解!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
