1. mysql資料庫原理及應用第三版答案在哪裡找
mysql資料庫原理及應用 資料庫原理與應用(第3版)答案《資料庫原理與應用》(第三版)習題參考答案 第 1 章 資料庫概述 1. 試說明數據、資料庫、資料庫管理系統和資料庫系統的概念。答:數據是描述事物的符號記錄。資料庫是長期存儲在計算機中的有組織的、可共享的大量數據的集合。資料庫管理系統是一個專門用於實現對數據進行管理和維護的系統軟體。資料庫系統是指在計算機中引入資料庫後的系統,一般由資料庫、資料庫管理系統(及相關的實用工具)、應用程序、資料庫管理員組成。2. 數據管理技術的發展主要經歷了哪幾個階段?答:文件管理和資料庫管理。3. 與文件管理相比,資料庫管理有哪些優點? 答:與文件系統管理數據相比,資料庫系統管理數據帶來了如下好處:將相互關聯的數據集成在一起,較少的數據冗餘,程序與數據相互獨立,保證數據的安全可靠,最大限度地保證數據的正確性,數據可以共享並能保證數據的一致性。4. 在資料庫管理方式中,應用程序是否需要關心數據的存儲位置和存儲結構?為什麼? 答:不需要。因為資料庫管理系統提供了邏輯獨立性和物理獨立性。5. 在資料庫系統中,資料庫的作用是什麼? 答:資料庫是數據的匯集,它以一定的組織形式保存在存儲介質上。6. 在資料庫系統中,應用程序可以不通過資料庫管理系統而直接訪問數據文件嗎? 答:不能7. 數據獨立性指的是什麼?它能帶來哪些好處? 答:數據獨立性是指應用程序不會因數據的物理表示方式和訪問技術的改變而改變,即應用程序不依賴於任何特定的物理表示方式和訪問技術,它包含兩個方面:邏輯獨立性和物理獨立性。物理獨立性是指當數據的存儲位置或存儲結構發生變化時,不影響應用程序的特性;邏輯獨立性是指當表達現實世界的信息內容發生變化時,不影響應用程序的特性。8. 資料庫系統由哪幾部分組成,每一部分在資料庫系統中的作用大致是什麼? 答:資料庫系統一般包括資料庫、資料庫管理系統(及相應的實用工具)、應用程序和資料庫管理員四個部分。資料庫是數據的匯集,它以一定的組織形式保存在存儲介質上;資料庫管理系統是管理資料庫的系統軟體,它可以實現資料庫系統的各種功能;應用程序專指以資料庫數據為基礎的程序,資料庫管理員負責整個資料庫系統的正常運行。
第2章 數據模型與資料庫結構 1. 解釋數據模型的概念,為什麼要將數據模型分成兩個層次? 答:答:數據模型是對現實世界數據特徵的抽象。數據模型一般要滿足三個條件:第一是數據模型要能夠比較真實地模擬現實世界;第二是數據模型要容易被人們理解;第三是數據模型要能夠很方便地在計算機上實現。由於用一種模型來同時很好地滿足這三方面的要求在目前是比較困難的,因此在資料庫系統中就可以針對不同的使用對象和應用目的,採用不同的數據模型。根據模型應用的不同目的,將這些模型分為兩大類:概念層數據模型和組織層數據模型,以方便對信息的描述。2. 概念層數據模型和組織層數據模型分別是針對什麼進行的抽象? 答:概念層數據模型是對現實世界的抽象,形成信息世界模型,組織層數據模型是對信息世界進行抽象和轉換,形成具體的DBMS支持的數據組織模型。3. 實體之間的聯系有哪幾種?請為每一種聯系舉出一個例子。答:實體之間的聯系有一對一、一對多和多對多三種。例如:系和正系主任是一對一聯系(假設一個系只有一個正系主任),系和教師是一對多聯系(假設一個教師只在一個系工作),教師和課程是多對多聯系(假設一個教師可以講授多門課程,一門課程可由多個教師講授)。4. 說明實體-聯系模型中的實體、屬性和聯系的概念。5.指明下列實體間聯系的種類:(1)教研室和教師(設一個教師只屬於一個教研室,一個教研室可有多名教師)。(2)商品和顧客。(3)國家和首都(假設一個國家的首都可以變化)。(4)飛機和乘客。(5)銀行和賬戶。(6)圖書和借閱者。(設一個借閱者可同時借閱多本書,可在不同時間對同一本書借閱多次) 6.資料庫系統包含哪三級模式?試分別說明每一級模式的作用? 答:資料庫系統包含的三級模式為:內模式、模式和外模式。外模式是對現實系統中用戶感興趣的整體數據結構的局部描述,用於滿足不同資料庫用戶需求的數據視圖,是資料庫用戶能夠看見和使用的局部數據的邏輯結構和特徵的描述,是對資料庫整體數據結構的子集或局部重構。模式是資料庫中全體數據的邏輯結構和特徵的描述,是所有用戶的公共數據視圖。內模式是對整個資料庫的底層表示,它描述了數據的存儲結構。
7. 資料庫管理系統提供的兩級映像的作用是什麼?它帶來了哪些功能? 答:資料庫系統的兩級映象是模式與內描述間的映象和外模式與模式間的映象。模式/內模式的映象帶來了物理獨立性,即如果資料庫的存儲結構改變了,可通過調整模式/內模式的映象,使模式能夠保持不變。外模式/概念模式間的映象帶來了邏輯獨立性,當概念模式的結構可發生改變時,也可通過調整外模式/模式間的映象關系,使外模式可以保持不變。8.資料庫三級模式劃分的優點是什麼?它能帶來哪些數據獨立性? 答:資料庫的三級模式的劃分實際上將用戶、邏輯資料庫與物理資料庫進行了劃分,使彼此之間的相互干擾減到最少。這三個模式的劃分實際上帶來了兩個數據獨立性:物理獨立性和邏輯獨立性。這使得底層的修改和變化盡量不影響到上層。第3章 關系資料庫 1. 試述關系模型的三個組成部分。答:關系數據結構、關系操作集合和關系完整性約束。2. 解釋下列術語的含義:(1) 笛卡爾積:設D1,D2,…,Dn為任意集合,定義笛卡爾積D1,D2,…,Dn為:D1×D2× …×Dn ={(d1,d2,…,dn) | di ∈Di,i=1,2,…,n }(2) 主鍵:也稱主碼為或主關鍵字,是表中的屬性或屬性組,用於惟一地確定一個元組。(3) 候選鍵:如果一個屬性或屬性集的值能夠惟一標識一個關系的元組而又不包含多餘的屬性,則稱該屬性或屬性集為候選鍵。(4) 外鍵:設F是關系R的一個或一組屬性,如果F與關系S的主鍵相對應,則稱F是關系R的外鍵。(5) 關系:關系就是簡單二維表。(6) 關系模式:二維表的結構稱為關系模式。(7) 關系資料庫:對應於一個關系模型的所有關系的集合稱為關系資料庫。3. 關系資料庫的三個完整性約束是什麼?各是什麼含義? 答:實體完整性、參照完整性和用戶定義的完整性。實體完整性是保證關系中的每個元組都是可識別的和惟一的。參照完整性也稱為引用完整性,用於表達現實世界中的實體之間的關聯關系。
用戶定義的完整性也稱為域完整性或語義完整性,用於保證資料庫中存儲的值與現實世界相符。4. 連接運算有哪些?等值連接和自然連接的區別是什麼? 答:連接運算中最重要也是最常用的連接有兩個,一個是等值連接,一個是自然連接。自然連接與等值連接的差別為:l 自然連接要求相等的分量必須有共同的屬性名,等值連接則不要求;l 自然連接要求把重復的屬性名去掉,等值連接卻不這樣做。5. 對參與並、交、差運算的兩個關系R、S有什麼要求? 答:必須結構相同,且相應的屬性值取自同一個值域。6. 對參與除運算的兩個關系(R÷S)有什麼要求?除運算的結果關系中包含哪些屬性? 答:R中必須包含S的全部或部分屬性,除運算的結果包含的屬性是只屬於R不屬於S的屬性。7. 對參與自然連接和等值連接操作的兩個關系R、S有什麼要求?答:有語義相同的屬性。8. 投影操作的結果關系中是否有可能存在重復的記錄?為什麼? 答:不可能,因為投影運算會自動去掉投影後重復的記錄。9.利用表3-10至3-12所示的三個關系,寫出實現如下查詢要求的關系代數表達式。(1)查詢「信息系」學生的選課情況,列出學號、姓名、課程號和成績。∏Sno, Sname, Cno, Grade(σSdept=『信息系』(SCStudent)) 或:∏Sno, Sname, Cno, Grade(SC σSdept=『信息系』(Student))(2) 查詢「VB」課程的考試情況,列出學生姓名、所在系和考試成績。∏Sname, Sdept, Grade(σCname=『VB』(CoureSCStudent)) 或:∏Sname, Sdept, Grade(σCname=『VB』(Coure) SCStudent)(3) 查詢考試成績高於90分的學生的姓名、課程名和成績。∏Sname, Cname, Grade(σGrade>90(CoureSCStudent)) 或:∏Sname, Cname, Grade(Coure
σGrade>90(SC)Student)(4) 查詢至少選修了0512號學生所選的全部課程的學生的姓名和所在系。∏Sname, Sdept(Student (SC ÷ ∏Cno(σsno=』0512』(SC))))(5) 查詢至少選了「C01」和「C02」兩門課程的學生的姓名、所在系和所選的課程號。∏Sname, Sdept, Cno(Student (SC ÷ ∏Sno(σcno=』C01』 V Cno=』C02』(SC))))(6) 查詢沒有選修第1學期開設的全部課程的學生的學號、姓名和所選的課程號。∏Sno, Sname, Cno(Student SC (∏sno(SC) - ∏sno(σsemester=1(Course)SC)))(7) 查詢計算機系和信息系選了VB課程的學生姓名。∏Sname(σsdept=』計算機系』V sdept=』信息系』)∧ cname=』vb』(StudentSC Course)) 或:∏Sname(σsdept=』計算機系』V sdept=』信息系』(Student)SC σcname=』vb』(Course)) 第4章 SQL Server 20__基礎 1. 安裝SQL Server 20__對硬碟及內存的要求分別是什麼? 答:SQL Server 20__實際硬碟空間需求取決於系統配置和您決定安裝的功能,一般應確保系統驅動器中是否有至少 6.0 GB 的可用磁碟空間。內存:E_press 版本:最少512 MB;其他版本:最少1 GB。2. SQL Server實例的含義是什麼?實例名的作用是什麼? 答:一個實例代表一個獨立的資料庫管理系統。實例名是實例的標識,用戶通過「計算機名/實例名」的方式可訪問指定的命令實例。3. SQL Server 20__的核心引擎是什麼? 答:SQL Server(MSSQLSERVER)4. SQL Server 20__提供的設置服務啟動方式的工具是哪個? 答:配置管理器
5. 在SQL Server 20__中,每個資料庫至少包含幾個文件? 答:2個文件,一個數據文件,一個日誌文件 6. SQL Server 20__資料庫文件分為幾類?每個文件有哪些屬性? 答:主要數據文件和次要數據文件,屬性有:物理文件名及其位置、邏輯文件名、初始大小、增長方式、最大大小。第 5 章 數據類型及關系表創建 1. Tinyint數據類型定義的數據的取值范圍是多少? 答:0-2552. SmallDatatime類型精確到哪個時間單位? 答:分鍾3. 定點小數類型numeric中的p和q的含義分別是什麼? 答:p代表整數位數+小數位數的和值,q代表小數位數。4. Char(n)、nchar(n)的區別是什麼?它們各能存放多少個字元? 答:Char(n)中的n代表能存放n個位元組的字元,如果是字母可以存放n個,如果是漢字可存放n/2個。Nchar(n)中的n代表能存放的字元個數。5. Char(n)和varchar(n)的區別是什麼?答:Char(n)是定長存儲,一定佔n個位元組的空間。Varchar(n)代表最多佔n個位元組的空間。6. 數據完整性約束的作用對象有哪些? 答:表和列7. CHECK約束的作用是什麼? 答:限制列的取值范圍。8. UNIQUE約束的作用是什麼? 答:限制列取值不重。9. DEFAULT約束的作用是什麼? 答:提供列的默認值。上機練習 1. 在第4章創建的Students資料庫中,寫出創建如下三張表的SQL語句,要求在定義表的同時定義數據的完整性約束:(1)「圖書」表結構如下:書號:統一字元
2. 資料庫原理及應用試題
1.B 2.C 3.B 4.C 5.D 6.C 7.C 8.D 9.C 10.A
11.A 12.A 13.A --不太確定 14.B 15.C 16.A 17.B 18.A 19.D 20.C
1.試述事務的概念及事務的四個特性。
答:
事務是用戶定義的一個資料庫操作序列,這些操作要麼全做要麼全不做,是一個不可分割的工作單位。
事務具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續性(Durability)。這個四個特性也簡稱為ACID特性。
原子性:事務是資料庫的邏輯工作單位,事務中包括的諸操作要麼都做,要麼都不做。
一致性:事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。
隔離性:一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對其他並發事務是隔離的,並發執行的各個事務之間不能互相干擾。
持續性:持續性也稱永久性(Permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其執行結果有任何影響。
2.為什麼事務非正常結束時會影響資料庫數據的正確性,請列舉一例說明之。
答:
事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。如果資料庫系統運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對資料庫所做的修改有一部分已寫入物理資料庫,這時資料庫就處於一種不正確的狀態,或者說是不一致的狀態。
例如某工廠的庫存管理系統中,要把數量為Q的某種零件從倉庫1移到倉庫2存放。
則可以定義一個事務T,T包括兩個操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常終止時只做了第一個操作,則資料庫就處於不一致性狀態,庫存量無緣無故少了Q。
3.資料庫中為什麼要有恢復子系統?它的功能是什麼?
答:
因為計算機系統中硬體的故障、軟體的錯誤、操作員的失誤以及惡意的破壞是不可避免的,這些故障輕則造成運行事務非正常中斷,影響資料庫中數據的正確性,重則破壞資料庫,使資料庫中全部或部分數據丟失,因此必須要有恢復子系統。
恢復子系統的功能是:把資料庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為一致狀態或完整狀態)。
4.資料庫運行中可能產生的故障有哪幾類?哪些故障影響事務的正常執行?哪些故障破壞資料庫數據?
答:資料庫系統中可能發生各種各樣的故障,大致可以分以下幾類:
(1)事務內部的故障;
(2)系統故障;
(3)介質故障;
(4)計算機病毒。
事務故障、系統故障和介質故障影響事務的正常執行;介質故障和計算機病毒破壞數據
庫數據。
5.據庫恢復的基本技術有哪些?
答:
數據轉儲和登錄日誌文件是資料庫恢復的基本技術。
當系統運行過程中發生故障,利用轉儲的資料庫後備副本和日誌文件就可以將資料庫恢復到故障前的某個一致性狀態。
6. 資料庫轉儲的意義是什麼? 試比較各種數據轉儲方法。
答:
數據轉儲是資料庫恢復中採用的基本技術。所謂轉儲即DBA定期地將資料庫復制到磁帶或另一個磁碟上保存起來的過程。當資料庫遭到破壞後可以將後備副本重新裝入,將資料庫恢復到轉儲時的狀態。
靜態轉儲:在系統中無運行事務時進行的轉儲操作。靜態轉儲簡單,但必須等待正運行的用戶事務結束才能進行。同樣,新的事務必須等待轉儲結束才能執行。顯然,這會降低資料庫的可用性。
動態轉儲:指轉儲期間允許對資料庫進行存取或修改。動態轉儲可克服靜態轉儲的缺點,它不用等待正在運行的用戶事務結束,也不會影響新事務的運行。但是,轉儲結束時後援副本上的數據並不能保證正確有效。因為轉儲期間運行的事務可能修改了某些數據,使得後援副本上的數據不是資料庫的一致版本。
為此,必須把轉儲期間各事務對資料庫的修改活動登記下來,建立日誌文件(log file)。這樣,後援副本加上日誌文件就能得到資料庫某一時刻的正確狀態。
轉儲還可以分為海量轉儲和增量轉儲兩種方式。
海量轉儲是指每次轉儲全部資料庫。增量轉儲則指每次只轉儲上一次轉儲後更新過的數據。從恢復角度看,使用海量轉儲得到的後備副本進行恢復一般說來更簡單些。但如果資料庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效。
7. 什麼是日誌文件?為什麼要設立日誌文件?
答:
(1)日誌文件是用來記錄事務對資料庫的更新操作的文件。
(2)設立日誌文件的目的是: 進行事務故障恢復;進行系統故障恢復;協助後備副本進行介質故障恢復。
8. 登記日誌文件時為什麼必須先寫日誌文件,後寫資料庫?
答:
把對數據的修改寫到資料庫中和把表示這個修改的日誌記錄寫到日誌文件中是兩個不同的操作。有可能在這兩個操作之間發生故障,即這兩個寫操作只完成了一個。
如果先寫了資料庫修改,而在運行記錄中沒有登記這個修改,則以後就無法恢復這個修改了。如果先寫日誌,但沒有修改資料庫,在恢復時只不過是多執行一次UNDO操作,並不會影響資料庫的正確性。所以一定要先寫日誌文件,即首先把日誌記錄寫到日誌文件中,然後寫資料庫的修改。
9. 針對不同的故障,試給出恢復的策略和方法。(即如何進行事務故障的恢復?系統故障的恢復?介質故障恢復?)
答:
事務故障的恢復:
事務故障的恢復是由DBMS自動完成的,對用戶是透明的。
DBMS執行恢復步驟是:
(1)反向掃描文件日誌(即從最後向前掃描日誌文件),查找該事務的更新操作。
(2)對該事務的更新操作執行逆操作。即將日誌記錄中「更新前的值」寫入資料庫。
(3)繼續反向掃描日誌文件,做同樣處理。
(4)如此處理下去,直至讀到此事務的開始標記,該事務故障的恢復就完成了。
答:
系統故障的恢復:
系統故障可能會造成資料庫處於不一致狀態:
一是未完成事務對資料庫的更新可能已寫入資料庫;
二是已提交事務對資料庫的更新可能還留在緩沖區,沒來得及寫入資料庫。
因此恢復操作就是要撤銷(UNDO)故障發生時未完成的事務,重做(REDO)已完成的事務。
系統的恢復步驟是:
(1)正向掃描日誌文件,找出在故障發生前已經提交的事務隊列(REDO隊列)和未完成的事務隊列(UNDO隊列)。
(2)對撤銷隊列中的各個事務進行UNDO處理。
進行UNDO處理的方法是,反向掃描日誌文件,對每個UNDO事務的更新操作執行逆操作,即將日誌記錄中「更新前的值」(Before Image)寫入資料庫。
(3)對重做隊列中的各個事務進行REDO處理。
進行REDO處理的方法是:正向掃描日誌文件,對每個REDO事務重新執行日誌文件登記的操作。即將日誌記錄中「更新後的值」(After Image)寫入資料庫。
*解析:
在第(1)步中如何找出REDO隊列和UNDO隊列?請大家思考一下。
下面給出一個演算法:
1) 建立兩個事務隊列:
· UNDO-LIST: 需要執行undo操作的事務集合;
· REDO-LIST: 需要執行redo操作的事務集合;
兩個事務隊列初始均為空。
2) 從日誌文件頭開始,正向掃描日誌文件
· 如有新開始(遇到Begin Transaction)的事務Ti,把Ti暫時放入UNDO-LIST隊列;
· 如有提交的事務(遇到End Transaction)Tj,把Tj從UNDO-LIST隊列移到REDO-LIST隊列;
直到日誌文件結束
答:
介質故障的恢復:
介質故障是最嚴重的一種故障。
恢復方法是重裝資料庫,然後重做已完成的事務。具體過程是:
(1)DBA裝入最新的資料庫後備副本(離故障發生時刻最近的轉儲副本),使資料庫恢復到轉儲時的一致性狀態。
(2)DBA裝入轉儲結束時刻的日誌文件副本
(3)DBA啟動系統恢復命令,由DBMS完成恢復功能,即重做已完成的事務。
*解析
1)我們假定採用的是靜態轉儲,因此第(1)步裝入資料庫後備副本便可以了。
2)如果採用的是靜動態轉儲,第(1)步裝入資料庫後備副本還不夠,還需同時裝入轉儲開始時刻的日誌文件副本,經過處理後才能得到正確的資料庫後備副本。
3)第(2)步重做已完成的事務的演算法是:
a. 正向掃描日誌文件,找出故障發生前已提交的事務的標識,將其記入重做隊列
b. 再一次正向掃描日誌文件,對重做隊列中的所有事務進行重做處理。即將日誌記錄中「更新後的值」寫入資料庫。
10. 具有檢查點的恢復技術有什麼優點?
答:
利用日誌技術進行資料庫恢復時,恢復子系統必須搜索日誌,確定哪些事務需要REDO,哪些事務需要UNDO。一般來說,需要檢查所有日誌記錄。這樣做有兩個問題:
一是搜索整個日誌將耗費大量的時間。
二是很多需要REDO處理的事務實際上已經將它們的更新操作結果寫到資料庫中了,恢復子系統又重新執行了這些操作,浪費了大量時間。
檢查點技術就是為了解決這些問題。
11. 試述使用檢查點方法進行恢復的步驟。
答:
① 從重新開始文件中找到最後一個檢查點記錄在日誌文件中的地址,由該地址在日誌文件中找到最後一個檢查點記錄。
② 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單ACTIVE-LIST。
這里建立兩個事務隊列:
· UNDO-LIST: 需要執行undo操作的事務集合;
· REDO-LIST: 需要執行redo操作的事務集合;
把ACTIVE-LIST暫時放入UNDO-LIST隊列,REDO隊列暫為空。
③ 從檢查點開始正向掃描日誌文件
· 如有新開始的事務Ti,把Ti暫時放入UNDO-LIST隊列;
· 如有提交的事務Tj,把Tj從UNDO-LIST隊列移到REDO-LIST隊列,直到日誌文件結束;
④ 對UNDO-LIST中的每個事務執行UNDO操作, 對REDO-LIST中的每個事務執行REDO操作。
12. 什麼是資料庫鏡像?它有什麼用途?
答:
資料庫鏡像即根據DBA的要求,自動把整個資料庫或者其中的部分關鍵數據復制到另一個磁碟上。每當主資料庫更新時,DBMS自動把更新後的數據復制過去,即DBMS自動保證鏡像數據與主數據的一致性。
資料庫鏡像的用途有:
一是用於資料庫恢復。當出現介質故障時,可由鏡像磁碟繼續提供使用,同時DBMS自動利用鏡像磁碟數據進行資料庫的恢復,不需要關閉系統和重裝資料庫副本。
二是提高資料庫的可用性。在沒有出現故障時,當一個用戶對某個數據加排它鎖進行修改時,其他用戶可以讀鏡像資料庫上的數據,而不必等待該用戶釋放鎖。
3. 【資料庫歷年期末考試題】資料庫原理期末考試題
2005-2006(2)資料庫系統原理試題(A)參考答案及評分標准
一、填空題(每空1分,共14分)
1、 數據結構
2、 元組
3、 實體完整性 參照完整性
4、 1NF
5、 數據字典
6、 B R +BR B S B S +BR B S
7、 可串列的
8、 RAID
9、 動態Hash 方法 可擴展Hash 方法
10、 並發控制技術 資料庫恢復技術
二、選擇題(每題1分,共10分)
1、 D 2、A 3、A 4、B 5、C 6、C 7、C 8、C 9、C 10、A
三、簡答題(每題4分,共16分)
1. 可以表示任何關系代數操作的5種基本代數操作是什麼?
答: ⋃ , - , ⨯ , σ , π
註:1個1分,寫對4個即可得4分
2. 關系資料庫中常用的連接操作的實現演算法有哪些?
答:循環嵌套連接演算法(1分)、排序合並連接演算法(1分)、hash 連接演算法(1分)、索引連接演算法(1分)。
3. 簡述B 樹和B+樹的區別。
答:(1)B+樹的葉子節點鏈在一起(2分)。(2)B+樹的內節點不存放數據指針(2分)。
4. 什麼是資料庫事務?什麼是資料庫事務的原子性?
答:一個存取或更改資料庫的程序的運行稱為資料庫事務(2分)。事務中的所有操作要麼全部被成功的完成且這些操作的結果被永久地存儲到資料庫中,要麼這
個事務對資料庫和其它事務沒有任何影響。這種性質稱為事務的原子性(2分)。
四、綜合題(每題12分,共60分)
(一)已知關系S ,P ,J ,SPJ 的關系模式為:
S (SNO ,SN ,CITY )
P (PNO ,PN ,COLOR )
J (JNO ,JN ,CITY )
SPJ (SNO ,JNO ,PNO ,QTY )
其中:SNO 為供應商號,SN 為供應商姓名,CITY 為所在城市;PNO 為零件號,PN 為 零件名稱,COLOR 為顏色;JNO 為工程項目號,JN 為工程項目名稱;QTY 為數量。
1、 試用
∏JN ((∏JNO ,PNO (SPJ )÷ ∏PNO (P ∏JNO ,JN (J ))(4分)
2、試用完成下列查詢:把零件號為P2的零件重量增加5,顏色改為黃色。
UPDATE P
SET WEIGHT=WEIGHT+5,COLOR=』黃色』
WHERE PNO=』P2』; (4分)
3、試用完成下列查詢:取出1個以上供應商提供的零件號。
SELECT PNO
FROM SPJ
GROUP BY PNO
HA VING COUNT (SNO )≥1 (4分)
(二) 設某商業集團資料庫有三個實體集。一是「商店」實體集,屬性有商店編號、商店名、地址等;二是「商品」 實體集,屬性有商品編號、商品名、規格、單價等;三是「供應商」 實體集,屬性有供應商編號、供應商名、地址等。
商店與商品間存在「銷售」聯系,每個商店可銷售多種商品,每個商品也可放在多個商店檔信胡銷售,每個商店行攔銷售一種商品,有月銷售量;供應商與商品間存在著「供應」 聯系,每個供應商供應多種商品,每種商品可以向多個供應商訂購。供應商供應商品給每個商店有月供應量。
(1)試畫出E-R 圖,並在圖上註明屬性。
(2) 將E--R 圖轉換成關系模型,並指明主鍵和外鍵。
(1)E-R 圖如圖所示。
(6分,其中實體2分、聯系2分、屬性2分)
(2)此E--R 圖轉換成的關系模型如下
商店(商店編號,商店名,地址) 主碼為商店編號
供應商(供應商編號,供應商名,地址) 主碼為供應商編號
商品(商品編號,商品名,規格,單價)
銷售(商店編號,商品號,月銷售量)
主碼為(商店編號,商品號),外碼為商店編號和商品號
供應(供應商編號,商店編號,月供應量)
主碼為(供應商編號,商店編號),外碼為供應商編號,商店編號
共6分,由於學生的寫法多樣,教師根據具體情況給分。
(三)1.設關系模式R 其中: U={A, B, C, D, E, P}
F={A→B,C→P,E→A,CE→D}
求出R 的所有候選關鍵字。
解:由計算可知: (CE)的閉包 = {ABCDEP}
而 C 的閉包={CP}
E 的閉包={ABE} (2分)
所以:R 的候選鍵為坦配 : CE 。 (2分)
2.判斷下面的關系模式最高屬於第幾範式) ,並說明理由。
R({A,B,C},{AC→B,AB→C,B→C})
答:是1NF ,(2分) 因為該關系的候選鍵之一為AB, 又因為有B→C,存在部分函數依賴(2分), 所以, 該關系為1NF.
3. 設關系R 具有屬性集合{O, I, S, A, B},函數依賴集合{I->B, IS->A, A->O}。把R 分解成
3NF ,並使其具有無損連接性和函數依賴保持性。
答:{IB,ISA,AO}(4分)
(四) 設文件F 具有10000個記錄,每個記錄50位元組,其中10位元組用來表示文件的鍵值。每個磁碟塊大小1000位元組,指向磁碟塊的指針佔5位元組,不允許記錄跨兩個塊。
(1) 如果為文件F 建立簡單hash 索引,使用100個hash 桶,則桶目錄需要多
少磁碟塊?平均每個桶需要多少磁碟塊?
答:(1)1 (2)10000個記錄/100個桶=100個記錄每桶,(2分)100個記
錄×50位元組每記錄/1000位元組每塊=5塊(2分)
(2) 如果為文件F 建立B +樹索引,各磁碟塊盡量裝滿,需要多少磁碟塊存儲索
引?
答:求秩D :5D+10(D+1) D=67 (2分)
即每個葉節點能保存D-1=66個鍵值。所以葉節點數為⎡10000/66⎤
=152個。(2分)
上一層的內節點同樣有67個指針,是一個67叉的節點,
⎡10000/67⎤=3,⎡3/67⎤=1(2分)
因此B+樹的節點總數為152+3+1=156個。即需要156個磁碟塊
存儲B+樹索引。(2分)
(五) 對於教學資料庫S(S#,SNAME ,AGE ,SEX) ,SC(S#,C#,GRADE) ,C(C#,CNAME ,TEACHER) 。現有一個查詢:檢索至少學習W ANG 老師所授一門課程的男學生學號和姓名。
1. 給出該查詢的關系代數表達式,並畫出該表達式構成的語法樹。
2. 使用啟發式優化演算法對語法樹進行優化,得到優化的語法樹。
解:(1) 關系代數表達式:
∏ S#,SNAME (σS.S#=SC.S#∧SC.C#=C.C#∧S.SEX=』男』 ∧teacher=』wang』(S×SC×C )) (3分)
∏ S#,SNAME
S.S#=SC.S#∧SC.C#=C.C#∧S.SEX=』男』 ∧teacher=』wang』
(3分)
∏ S#,SNAME σSC.C#=C.C#
σteacher=』wang』
∏ S#,C# S.SEX=』男』
s
結果樹(3分) c sc (3分)
4. 資料庫期末考試題 求答案 急!
--1
create database 學生選課系統
on primary
(name = 學生選課系統_data,
filename='d:\aa\學生選課系統.mdf',
size=8,
maxsize=100,
filegrowth=20%)
log on
(name =學生選課系統_log,
filename = 'e:\ee\學生選課系統.ldf')
--2
create table 學生
(學號 char(10) primary key,
姓名 char(20),
性別 char(2) check (性別 in('男','女')),
年齡 int default 20,
所在系 char(20))
--3
select 學號,年齡
from 學生
where 所在系='物理系'
--4
select 學號,成績
where 課程號='2'
order by 成績 asc,學號 desc
--5
select 學生.學號 學號,姓名,選修的課程名,成績
from 學生,課程,選課
where 學生.學號=選課.學號 and 課程.課程號=選課.課程號
--6
insert into 學生(學號,姓名,所在系)
values('96002','張三','英語系')
--7
update 學生 set 年齡=年齡+3
--8
delete from 學生
where 所在系='化學系'
--9
create view 英語系學生
as
select 學號,性別,年齡
from 學生
where 所在系='英語系'
--10
create unique index IX_課程號 on 課程(課程號)
--11
create trigger trig1 on 學生
for delete
as
declare @SID char(10)
select @SID=學號 from deleted
begin
delete from 選課 where 學號=@SID
end