数据库例题1
數(shù)據(jù)庫例題
1:試述關(guān)系數(shù)據(jù)庫系統(tǒng)中視圖的定義,引進(jìn)視圖的概念有什么好處?視圖和基本表之間有什么區(qū)別和聯(lián)系?
定義:
- 視圖是從一個或者幾個基本表(視圖)中導(dǎo)出的表,它與基本表不同,是一個虛表
- 數(shù)據(jù)庫中只存放視圖的定義,不存放視圖對應(yīng)的數(shù)據(jù)
引進(jìn)視圖的好處:
- 視圖能簡化用戶操作
- 視圖能使用戶多種角度看待數(shù)據(jù)
- 視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性
- 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)
視圖和基本表之間的聯(lián)系和區(qū)別
聯(lián)系:
- 視圖是從一個或者多個基表(視圖)中導(dǎo)出的;
- 一旦基本表中的數(shù)據(jù)發(fā)生變化,視圖查詢的數(shù)據(jù)也就隨之改變了
區(qū)別:
-
視圖是一個虛表,數(shù)據(jù)庫只保存視圖的定義,不存放視圖對應(yīng)的數(shù)據(jù);數(shù)據(jù)庫保存基表中的數(shù)據(jù)
-
視圖更像是一個窗口,透過它可以看到數(shù)據(jù)庫中特定的數(shù)據(jù)以及變化
2:什么是概念模型?試述概念模型的作用
概念模型概念:概念模型,也稱為信息模型,是按用戶觀點來對數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫的設(shè)計
概念模型的作用:
-
概念模型實際上是從現(xiàn)實世界到機(jī)器世界的一個中間層次。
-
概念模型用于信息世界的建模,是現(xiàn)實世界到信息世界的第一層抽象,是數(shù)據(jù)庫設(shè)計人員進(jìn)行數(shù)據(jù)庫設(shè)計的有力工具,也是數(shù)據(jù)庫設(shè)計人員和用戶之間交流的語言
3:外模式/模式/內(nèi)模式
模式
描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu),所有用戶的公共數(shù)據(jù)視圖;
-
一個數(shù)據(jù)庫只有一種模式
-
作為數(shù)據(jù)庫的中間層,既不涉及數(shù)據(jù)的物理存儲細(xì)節(jié)和硬件環(huán)境,
-
與具體應(yīng)用程序、應(yīng)用開發(fā)工具和高級程序設(shè)計語言無關(guān)
-
數(shù)據(jù)庫管理系統(tǒng)提供模式數(shù)據(jù)定義語言(模式DDL)來嚴(yán)格定義模式
外模式
外模式也稱為子模式或者用戶模式,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,描述的是數(shù)據(jù)的局部邏輯結(jié)構(gòu)
-
外模式通常是模式的子集
-
一個數(shù)據(jù)庫可以有多個外模式
-
一個外模式可以被一個用戶的多個應(yīng)用系統(tǒng)所使用,但是一個應(yīng)用程序智能使用一個外模式
-
數(shù)據(jù)庫管理系統(tǒng)提供外模式數(shù)據(jù)定義語言(外模式DDL)來嚴(yán)格定義外模式
內(nèi)模式
內(nèi)模式也稱為存儲模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述
- 一個數(shù)據(jù)庫只有一個內(nèi)模式
- 是對數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述:比如索引方式是B+樹索引還是hash索引、存儲方式是升序或者降序、數(shù)據(jù)是否壓縮
4:什么叫數(shù)據(jù)與程序的物理獨立性?什么叫數(shù)據(jù)與程序的邏輯獨立性?為什么數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)與程序的獨立性?
-
數(shù)據(jù)與程序的邏輯獨立性:用戶的應(yīng)用程序和數(shù)據(jù)庫的邏輯結(jié)構(gòu)是相互獨立的
- 當(dāng)模式改變時,數(shù)據(jù)庫管理員對外模式/模式映像做出改變,可以使外模式不變。應(yīng)用程序是依據(jù)外模式編寫的,從而應(yīng)用程序不用修改,保證了數(shù)據(jù)與程序的邏輯獨立性
-
數(shù)據(jù)與程序的物理獨立性:用戶的應(yīng)用程序和數(shù)據(jù)庫中數(shù)據(jù)的物理存儲是相互獨立的
- 當(dāng)數(shù)據(jù)庫的存儲方式發(fā)生改變,數(shù)據(jù)庫管理員對模式/內(nèi)模式映像做出改變,可以使模式保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨立性
5:自然連接和等值連接
連接運算符是“=”的連接運算稱為等值連接。它是從關(guān)系 R 與 S 的廣義笛卡爾積中選取 A,B 屬性值相等的那些元組
自然連接是一種特殊的等值連接,它要求在兩個關(guān)系中進(jìn)行比較的分量必須是同名的屬性組,在結(jié)果中把重復(fù)的屬性列去掉
6:自主存取控制和強(qiáng)制存取控制
自主存取控制方法:定義各個用戶對不同數(shù)據(jù)對象的存取權(quán)限。當(dāng)用戶對數(shù)據(jù)庫訪問時首先檢查用戶的存取權(quán)限,防止不合法用戶對數(shù)據(jù)庫的存取。
強(qiáng)制存取控制方法:每一個數(shù)據(jù)對象被(強(qiáng)制地)標(biāo)以一定的密級,每一個用戶也被(強(qiáng)制地)授予某一個級別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級別的用戶才能存取某一 個密級的數(shù)據(jù)對象。
7:什么是審計功能,為什么要提供審計功能
審計功能是指 DBMS 的審計模塊在用戶對數(shù)據(jù)庫執(zhí)行操作的同時把所有操作自動記錄到系統(tǒng)的審計日志中。
利用數(shù)據(jù)庫的審計功能:DBA 可以根據(jù)審計跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。
8:如何判斷一個關(guān)系是否屬于第三范式
第一范式:屬性不可分,并且表中不含表的,通常認(rèn)為是第一范式,第一范式就是一張不可分的二維表
第二范式:在1NF的基礎(chǔ)上,判斷是否存在非主屬性對碼的部分依賴,如果存在,就不屬于2NF
第三范式:在2NF的基礎(chǔ)上,判斷是否存在非主屬性對于碼的傳遞依賴,如果存在,就不屬于3NF
BCNF:在3NF的基礎(chǔ)上,判斷決定因素中是否包含碼,決定因素中不包含碼就不屬于BCNF
9:什么是數(shù)據(jù)字典,數(shù)據(jù)字典中通常有哪些內(nèi)容
數(shù)據(jù)字典是關(guān)系數(shù)據(jù)庫管理系統(tǒng)內(nèi)部的一組系統(tǒng)表,記錄了數(shù)據(jù)庫中的所有定義信息。
包括關(guān)系模式定義、視圖定義、索引定義、完整性約束定義、各類用戶對數(shù)據(jù)庫的操作權(quán)限、統(tǒng)計信息等
8:函數(shù)依賴?yán)},求候選碼,求閉包的過程
求候選碼的簡單方法方法:
(1)如果有屬性不在函數(shù)依賴集中出現(xiàn),那么它必須包含在候選碼中;
(2)如果有屬性不在函數(shù)依賴集中任何函數(shù)依賴的右邊出現(xiàn),那么它必須包含在候選碼中;
(3)如果有屬性只在函數(shù)依賴集的左邊出現(xiàn),則該屬性一定包含在候選碼中。
(4)如果有屬性或?qū)傩越M能唯一標(biāo)識元組,則它就是候選碼;
按以下步驟求候選鍵:
1.只在依賴關(guān)系右部出現(xiàn)的屬性,不屬于候選碼;
2.只在依賴關(guān)系左部出現(xiàn)的屬性,一定存在于某候選碼當(dāng)中;
3.外部屬性一定存在于任何候選碼當(dāng)中;
4.其他屬性逐個與2,3的屬性組合,求屬性閉包,直至X的閉包等于U,若等于U,則X為候選碼。
例題1:
R<U,F>,U=(A,B,C,D,E,G),F={AB→C,CD→E,E→A.A→G}R<U,F>,U=(A,B,C,D,E,G),F=\{AB\to C,CD\to E,E\to A.A\to G\}R<U,F>,U=(A,B,C,D,E,G),F={AB→C,CD→E,E→A.A→G}
求候選碼
- G只在函數(shù)依賴右邊出現(xiàn),G不為候選碼;
- B、D只在函數(shù)依賴左邊出現(xiàn),一定為候選碼
- B和D單獨求閉包,并不能求出U;且BD也不能閉包求出U
- BD可以和A、C、E組合
- ABD:AB→C,CD→E,A→GAB\to C,CD\to E,A\to GAB→C,CD→E,A→GABD的閉包為ABDCEG=U
- BDC:CD→E,E→A,A→GCD\to E,E\to A,A\to GCD→E,E→A,A→G,BDC的閉包為BDCEAG=U
- BDE:E→A,A→G,AB→CE\to A,A\to G,AB\to CE→A,A→G,AB→C,BDE的閉包為BDEAGC=U
因為(ABD)、(BCD)、(BDE)的閉包都是ABCDEG,候選碼有3個分別是ABC、BCD和BDE
例題2:
關(guān)系模式 R(A,B,C,D,E,F)R(A,B,C,D,E,F)R(A,B,C,D,E,F)
其函數(shù)依賴集為:F={E→D,C→B,CE→F,B→A}F=\{E→D,C→B,CE→F,B→A\}F={E→D,C→B,CE→F,B→A}
1:指出 R 的所有候選碼并說明原因;
- 只在依賴關(guān)系右部出現(xiàn)的為D、F、A,這些屬性必不包含在碼中
- 只在依賴關(guān)系左部出現(xiàn)的為E、C,這些屬性包含在碼中
- 考慮單獨的E,求E的閉包:{E,D}
- 考慮單獨的C,求C的閉包:{C,B,A}
- 考慮CE,求CE的閉包:{A,B,C,D,E,F}
R的候選碼為CE
2:R 最高屬于第幾范式,為什么?
1NF:關(guān)系模式R中的所有屬性都是不可分的基本數(shù)據(jù)項,就屬于第一范式,一般的一張二維表就屬于第一范式
2NF:消除了非主屬性對主屬性的部分依賴,如果存在非主屬性都主屬性的部分依賴就只屬于第一范式而不是第二范式
3NF:消除了非主屬性的主屬性的傳遞依賴
BCNF:在3NF的基礎(chǔ)上,每個決定因素中都包含碼
R最高屬于第一范式,因為存在部分依賴,{E?>D,C?>B}\{E->D,C->B\}{E?>D,C?>B}
3:分解 R 為 3NF
首先分解為2NF,消除非主屬性的部分依賴
? R1(E,D)、R2(C,B,A)、R3(C,E,F)
分解為3NF,消除非主屬性對主屬性的傳遞依賴
? R1(E,D)、R2(C,B)、R3(C,E,F)、R4(B,A)
例題3:
已知關(guān)系 R(A, B, C, D), 有函數(shù)依賴集 F = { A→C; B→D; BD→A }
1)求出R的所有候選碼
-
只在依賴集右邊出現(xiàn)的為C,C必不在碼中
-
只在依賴集左邊出現(xiàn)的為B,B在碼中
-
求B的閉包:{B,D,A,C}=U,B為候選碼
-
求A的閉包:{A,C}
-
求D的閉包:{D}
R的候選碼為B,非主屬性A,C,D
2)判斷R是否滿足第三范式
滿足2NF,因為非主屬性都完全依賴于碼
不滿足3NF,因為存在傳遞依賴
3)如果不滿足,對其進(jìn)行分解, 直至滿足 3NF
R2(B,D,A)、R3(A,C)
例題4
設(shè)關(guān)系模式 R(A,B,C,D,E)F是依賴集,F={ AB→C,BC→A,AC →B,D→E }
試寫出 R 的所有候選碼,并說明理由
- 只出現(xiàn)在依賴關(guān)系右邊,E不包含在候選碼中
- 只出現(xiàn)在依賴關(guān)系左邊,D包含在候選碼中
- D閉包{D,E}
- 考慮DA,DA閉包{D,E,A}
- 考慮DAB,DAB閉包{D,E,A,B,C}
- DAC,DBC的閉包都為{D,E,A,B,C}
- R的候選碼為ABD、ACD、BCD
例題6:
設(shè)有關(guān)系 R(W, X, Y, Z),依賴關(guān)系 F={X->Z,WX->Y}。判斷該關(guān)系模式符合第幾范式,并說明理由。
- WX主屬性,ZY非主屬性
- 候選碼為WX
- 存在X->Z,存在非主屬性對于碼的部分依賴關(guān)系,符合第一范式
例題7
設(shè)有關(guān)系 R(X,Y,Z)滿足依賴關(guān)系 F={Y→Z,XZ→Y}。該關(guān)系最高 達(dá)到第幾范式(最高考慮到 BC 范式)?并說明理由。(10 分)
- X只在依賴關(guān)系左邊出現(xiàn),包含在主碼中
- X閉包:{X}
- 考慮XY,XY閉包:{XYZ}
- 考慮XZ,XZ閉包:{XYZ}
候選碼為XY,XZ,主屬性為X,Y,Z
Y->Z中,決定因素中不包含碼,最高3NF
例題8
設(shè)有函數(shù)依賴集 F={AB→CE,A→C,GP→B,EP→A,CDE→P, HB→P,D→HG,ABC→PG},求屬性集 D 關(guān)于 F 的閉包 (D)F+(D)_{F}^{+}(D)F+?。
X0=D X1=DHG
(D)F+(D)_{F}^{+}(D)F+?=DHG
例題9
設(shè)有關(guān)系模式 R(X, Y, Z),依賴集 F={XY→Z, XZ→Y, Y→Z},判斷 R 最高滿足第幾范式并說明理由。(8 分)
X只在依賴關(guān)系左邊出現(xiàn),X為主屬性,包含在候選碼中,候選碼為XY 、XZ
X,Y,Z都為主屬性
2NF:每一個非主屬性完全依賴于任何一個候選碼
3NF:在2NF的基礎(chǔ)上,非主屬性不傳遞依賴于碼
BCNF:每一個決定因素都包含碼
最高屬于3NF
9:SQL語句
例題一:
1:JNO=’J2‘ 使用的 PNAME 和 QTY
SELECT P.PNAME, SPJ.QTY FROM P,SPJ WHERE SPJ.JNO='J2';2:S.CITY=’上海‘ 供應(yīng)的PNO
SELECT DISTINCT SPJ.PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY='上海' 或者 SELECT DISTINCT PNO FROM SPJ WHERE SNO IN(SELECT SNO FROM S WHERE CITY='上海');3:S.CITY=‘上海’ ,找出使用上海產(chǎn)的零件的工程名稱
SELECT JNAME FROM J WHERE JNO IN (SELECT JNO FROM SPJ,S WHERE S.CITY='上海' AND S.SNO=SPJ.SNO);4:沒有使用天津產(chǎn)的零件(S.city=‘天津’)的工程號碼
SELECT JNO FROM J WHERE NOT EXISTS(SELECT JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY='天津');5:全部紅色零件改為藍(lán)色
UPDATE P SET COLOR='藍(lán)' WHERE COLOR='紅';6:由S5供給J4的零件P6改為由S3供應(yīng)
UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6';7:從供應(yīng)商關(guān)系中刪除S2記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)記錄
DELETE FROM SPJ WHERE SNO='S2'; DELETE FROM S WHERE SNO='S2';8:將(S2,J6,P4,200)插入供應(yīng)情況關(guān)系中
INSERT INTO SPJ(SNO,PNO,JNO,QTY)VALUES(S2,J6,P4,200);9:創(chuàng)建視圖
CREATE VIEW XXX AS SELECT xxx FROM XXX WITH CHECK OPTION;10:賦予權(quán)限
GRANT SELECT,UPDATE(X) ON XXX TO XXX WITH GRANT OPTION;例題二
設(shè)屬性集 X={B,G},函數(shù)依賴集 F 函數(shù)依賴組成: {AC→PE, PG→A, B→CE, A→P, A→B, GC→A, PAB→G, AG→BG, ABCP →H}
求 X 關(guān)于 F 的閉包。
{B,G}、{B,C,E,G}、{B,C,E,G,A}、{B,C,E,G,A,P}、{B,C,E,G,A,P,H}
例題三
設(shè)有
- 學(xué)生表 Student(Sno, Sname, Ssex, Sage, Sdept)
- 課程表 Course(Cno, Cname, Cpno, Ccredit)
- 學(xué)生選課表 SC(Sno,Cno,Grade)。
用 SQL 語言:
(1)建立一個視圖 V-SC(Sno, Sname, Cno, Cname,Grade)
(2)從視圖 V-SC 上查詢平均成績在 90 分以上的學(xué)生姓名(Sname)、課程名(Cname) 及成績(Grade)
1)
CREATE VIEW V-SC AS SELECT Sno,Sname,Cno,Cname,Grade FROM Student,Course,SC;2)
SELECT Sname,Cname,Grade FROM V-SC GROUP BY Sno HAVING AVG(Grade)>=90;例題四:
設(shè)有關(guān)系模式如下:
S(Sno, Sname, Age, Sex),學(xué)生表:Sno 代表學(xué)號,Sname 代表學(xué)生姓名,Age 代表學(xué)生年齡, Sex 代表學(xué)生性別
SC(Sno, Cno, Grade),選課表:Sno 代表學(xué)號,Cno 代表課程號,Grade 代表成績
C(Cno, Cname, Teacher),課程表:Cno 代表課程號,Cname 代 表課程名,Teacher 代表任課教師姓名
1、查詢平均成績大于 85 分的學(xué)生的姓名及其平均成績(5 分)。
SELECT Sname,AVG(Grade) FROM S,SC WHERE S.Sno=SC.Sno GROUP BY Sno HAVING AVG(Grade)>85;2、把三個表的查詢和插入權(quán)限授予用戶張明,并允許張明進(jìn)一步 把這些權(quán)限授予其他用戶(5 分)
GRANT INSERT,SELECT ON TABLE S,SC,C TO 張明 WITH GRANT OPTION;例5
書店(書店編號,書店名,地址)
圖書(書號,書名,定價)
圖書館(館號,館名,城市,電話)
圖書發(fā)行(館號,書號,書店號,數(shù)量)
(1)用 SQL 語句查詢已發(fā)行圖書中最貴的圖書的書名和定價。(5 分)
SELECT 書名,定價 FROM 圖書,圖書發(fā)行 WHERE 定價= (SELECT MAX(定價) FROM 圖書,圖書發(fā)行 WHERE 圖書.書號=圖書發(fā)行.書號)(2)寫出以下 SQL 語句的含義(查的是什么?)(5 分)
SELECT 館名 FROM 圖書館 WHERE 館號 IN (SELECT 館號 FROM 圖書發(fā)行 WHERE 書號 IN (SELECT 書號 FROM 圖書 WHERE 書名=’數(shù)據(jù)庫系統(tǒng)概念’));查詢:發(fā)行數(shù)據(jù)庫系統(tǒng)概念圖書的圖書館管名
例6
學(xué)生表:Student (Sno,Sname,Sex,Sage,Sdept)
課程表:Course(Cno,Cname,Ccredit)
學(xué)生選課表:SC(Sno,Cno,Grade)
找出每個學(xué)生超過他自己選修課程平均成績的課程號
SELECT Cno FROM SC X WHERE Grade> (SELECT AVG(Grade) FROM SC Y WHERE Y.Sno=X.Sno );建立計科系學(xué)生的視圖 CS_Student,包括學(xué)號、姓名、性別、年齡,并要求進(jìn)行 插入和修改操作時仍需保證該視圖只有計科系的學(xué)生;
CREATE VIEW CS_Student AS SELECT Sno,Sname,Sex,Sage FROM Student WHERE Sdept='計科系' WITH CHECK OPTION;通過計科系學(xué)生視圖 CS_Student 修改數(shù)據(jù),把學(xué)號為“S201608101”的學(xué)生姓名改為王 小平;
UPDATE CS_Student SET Sname='王小平' WHERE Sno='S201608101';DDL:數(shù)據(jù)庫模式定義語言,關(guān)鍵字:create
DML:數(shù)據(jù)操縱語言,關(guān)鍵字:Insert、delete、update
DCL:數(shù)據(jù)庫控制語言 ,關(guān)鍵字:grant、remove
DQL:數(shù)據(jù)庫查詢語言,關(guān)鍵字:select
總結(jié)
- 上一篇: 计算机社团闯关游戏,计算机协会社团文化节
- 下一篇: SQL中的表连接及子查询