習題參考解答 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題1-2 ] 教師基本資料資料庫
[ 習題1-3 ] 若是依圖所示的架構 , 由於每台 PC 中 dbaseIII 都可能增修檔案伺服器裡的資料。此時萬一兩台 PC 要修改同一筆資料,便可能會各修改一半,造成資料不一致 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[習題2-2] 在 ERD中,如果”緊急聯絡人”可能與其他實體型態形成關係型態,或是有一個屬性是唯一時(比如姓名),則採用弱實體型態。否則用多值複合屬性表示較簡潔。
[習題2-4] A.
不符合。因為 M1 和 M2 各有兩台購物車的 cartTime 一樣。
B.
符合。 C.
不符合。因為 M2 有兩台購物車的 cartTime 一樣,且 C2 沒有相對應的會員。 D.
符合。 E.
不符合。因為 M1 和 M2 各有兩台購物車的 cartTime 一樣,且( M1, C2 )重複記載。 F.
不符合。因為 M2 有兩台購物車的 cartTime 一樣,且( M1, C1 )重複記載。。 G.
不符合。因為 M1 有四台購物車,但其中 [習題2-6] A. • 無法清楚指出兩隊比賽後,哪一支隊伍優勝,哪一支隊伍落敗的情形
• 無法處理同一天同兩個隊伍比賽超過一場時,比賽場次的先後次序。
B. [習題2-8] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[習題3-2] [習題3-4]
[習題3-8] 請注意假設迷你世界裡僅記載現況資料,不包括歷史紀錄,因此,每一個 VideoCopy 僅能最多被一位會員租借。
[習題3-10]
[習題3-11]
[習題3-13] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題4-2 ] (1).
因為 Product 資料表裡沒有 編號為 'b00234' 的產品,因此違反『參考完整限制』。 (2).
因為欲新增的序列值 (‘b10234'
,‘Lin') 在 Author 資料表裡已經有相同序列值存在,違反『關聯鍵限制』,因此此資料無法新增。 (3). 新增序列值
(‘b10234' ,‘Chen') ,因無相同之序列值,參考關聯裡也有相對應的產品編號, 滿足所有的限制 ,所以可以順利新增。 [ 習題4-4 ] [ 習題4-6 ] [ 習題4-10 ] A. B. 1.
不會。 因為 主鍵不可為空值,並且不可有兩筆相同的序列值同時存在,因此只是刪除一筆序列值時並不會影響。 2.
會, 因為影片拷貝和影片種類都有外部鍵參考到影片。 [ 習題4-12 ] [ 習題4-13 ] [ 習題4-15 ] [ 習題4-17 ] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題5-2 ] Null可能有以下三種意義: 比如在算 COUNT,SUM或 AVERAGE時,到底是忽略其值(即假設該屬性值不存在),還是給它一個預設值(比如 0 ),並沒有明確定義。(不過各 DBMS 會有一預設作法,通常是忽略其值)
[ 習題5-4 ] [ 習題5-5 ]
[ 習題5-6 ] [ 習題5-7 ] [ 習題5-8 ]
[ 習題5-11 ] [ 習題5-13 ] [ 習題5-15 ] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題6-1 ] 1. CREATE TABLE Course CREATE TABLE Takes CREATE TABLE Item CREATE TABLE Evaluated CREATE TABLE Teacher CREATE TABLE TeacherDepartment CREATE TABLE Teaches [ 習題6-3 ] 1. 2. [ 習題6-4 ] 2. [ 習題6-6 ] SELECT S.sId, S.name [ 習題6-9 ] SELECT title, aName [ 習題6-11 ] SELECT Merchandise.name, Member.name,.bottomPrice, expired [ 習題6-13 ] SELECT constraint |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題7-1 ] 對於每一筆上網達成的交易,若其中定價超過 500 的商品種樣數超過 2 個的話,則列出其交易編號和所購買定價超過 500 的商品種樣數。這顯然與 Q20 不同。 [ 習題7-2 ] 1. 5.
[ 習題7-4 ] 1.
3. 6. 7. 11. [ 習題7-5 ] 2.
或是 3.
[ 習題7-6 ] 2.
[ 習題7-7 ] SELECT sId, COUNT(*) [ 習題7-12 ] 1. 2. [ 習題7-14 ] 1. 2. 3.
4. 5. 6.
[ 習題7-16 ] 1. 2. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題8-2 ] 1. 2. [ 習題8-4 ] [ 習題8-8 ] 1.
(1){B} ® {D} 2.{A,B},{F,B}
3.
[ 習題8-10 ]
[ 習題8-12 ] [ 習題8-14 ] 1. {callNumber, seqNum, author} 2.
3.
4.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題9-3 ] 1.
此B+-Tree至少是三層。 假設葉節點和中間節點都是半滿,所以每一層的節點數為:
此B+-Tree至多是四層。 2.
(2)
計算每個葉節點最多容納的紀錄指標數 p 假設葉節點和中間節點全滿,所以每一層的節點數為:
此B+-Tree至少是四層 假設葉節點和中間節點都是半滿,所以每一層的節點數為:
此B+-Tree至多是四層 [ 習題9-5 ] 1. 2. [ 習題9-7 ] 1. I1. I2. 2.
3.
4. 當索引屬性越多,該 B+-tree
所佔的空間就越大。而滿足多維範圍條件的紀錄在 B+-tree
的葉節點裡並不連續,因此,在執行這個搜尋時,就必須造訪更多的節點,因此成本有可能變大。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題10-2 ] [一. 初始查詢樹] [二. 將SELECT的動作往下移,盡量接近葉節點] [三. 將條件較嚴格的SELECT中間節點盡量往左邊移] [
四. 將相鄰的×中間節點 和 σ中間節點合併成一個中間節點 ] [五. 將PROJECT的動作往下移,盡量接近葉節點(或SELECT的中間節點)] [ 習題10-4 ] 1. SL(Select 循序搜尋): 將資料表的每一資料頁裡的每一筆記錄都拿出來做條件比對,如果成立就將該筆資料放置結果裡。 SSI(Select 單一索引結構搜尋):其中一個子條件的屬性有建立適當的索引結構,這種方式利用該索引結構找出所有滿足條件的記錄之記錄指標,從而取出記錄,(之後為CPU處理時間)最後再將這些記錄做其他條件比對,滿足條件的才放置在結果裡。 SCI(Select 複合索引結構搜尋):有一多屬性值索引是由多個子條件所組合而成,這種方式式利用該索引結構找出所有滿足條件之記錄指標,從而取出記錄,必要時(之後為CPU處理時間)再將這些記錄做整個條件比對,滿足條件的才放置在結果裡。 2. (a) SL方式的成本: bRecord → 40000 (b) SSI使用salePrice索引: xsalePrice+bRecord/2:3+40000/2=20003 (c) SCI計算的成本公式: 使用(amount, salePrice)索引成本:由於沒有其他資訊,所以假設合乎條件的佔1/2*1/2=1/4,因此選擇幅度 samount, salePrice =200000/4=50000 xamount, salePrice-1 +bI1amount, salePrice /2+samount, salePrice =3+5000/2+50000=52503 結論:使用SSI (salePrice)索引的成本最低,而使用SCI (amount, salePrice)索引,成本最高。 [ 習題10-5 ] sunitPrice,catalog 仍為500,但因滿足條件的記錄指標在葉節點裡並沒有連續儲存,所以葉節點需造訪bI1unitPrice,catalog/2次,因此成本為 x unitPrice,catalog-1+bI1unitPrice,catalog/2+s unitPrice,catalog =3+1000+500 =1503 [ 習題10-8 ] [習題10-10] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題11-1 ] [ 習題11-4 ] ANS: 1.(JNL)巢狀迴圈法(Nested loop): for R的每一個資料頁PR do begin 將PR載入主記憶體裡; for
PR裡的每一筆記錄 rR do rR.found = FALSE; for S的每一個資料頁PS do begin 將PS載入主記憶體裡; for PR裡的每一筆記錄rR do for
PS裡的每一筆記錄rS do if
rR.A= rS.B
then begin rR.found:=TRUE; 將 rR+rS寫入Result; if Result已滿 then 將Result寫入硬碟並清空Result; end end for
PR裡的每一筆記錄 rR do if rR.found=FALSE then begin 將
rR+NULL寫入Result; if
Result已滿 then 將Result寫入硬碟並清空Result; end end 2.(JI)索引迴圈法(Index loop): for R的每一個資料頁PR do begin 將PR載入主記憶體; for PR裡的每一筆記錄rR do begin 依rR.A搜尋S.B的B+-tree並載入含有相匹配的S記錄的資料頁; 令這些匹配的S記錄指標集合為M; if M=Æ then begin 將
rR+NULL寫入Result; if
Result已滿 then 將Result寫入硬碟並清空Result; break; end for
M裡的每一筆記錄rS do begin 將包含rS的資料頁載入主記憶體; 將 rR+rS寫入Result; if
Result已滿 then 將Result寫入硬碟並清空Result; end end end. 3. (JSM)排序合併法(Sort-Merge): 載入R的第一個資料頁PR至主記憶體; 載入S的第一個資料頁PS至主記憶體; rR¬PR的第一筆記錄; rS¬PS的第一筆記錄; do if (rR.A=
rS.B) then begin 連續搜尋PR的下一筆記錄直到A值不同,令這些A值相同的記錄所成的集合是RR; 連續搜尋PS的下一筆記錄直到B值不同,令這些B值相同的記錄所成的集合是SS; 將RR和SS任兩筆記錄結合並寫入Result; if
Result已滿 then 將Result寫入硬碟並清空Result; end else if (rR.A>
rS.B) then rS¬ PS的下一筆記錄 else
begin // rR.A< rS.B 將rR和NULL記錄結合並寫入Result; if
Result已滿 then 將Result寫入硬碟並清空Result; rR¬ PR的下一筆記錄 end if (rR
= NULL) 載入R的下一個資料頁PR至主記憶體; if (rS
= NULL) 載入S的下一個資料頁PS至主記憶體; until (PR
= NULL OR PS = NULL) /* 表示R或 S已全部載入完畢 */ if (PS
= NULL) /* 表示R可能還有剩下的紀錄 do 將rR和NULL記錄結合並寫入Result; if Result已滿 then 將Result寫入硬碟並清空Result; rR¬ PR的下一筆記錄 if (rR = NULL) 載入R的下一個資料頁PR至主記憶體; until (PR
= NULL) [ 習題11-7 ] [ 習題11-10 ]
[
習題11-12 ]
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題12-1 ] A.
系統追蹤檔緩衝區愈大,愈不會因為系統追蹤檔緩衝區已滿,而強迫將緩衝區裡的硬碟頁寫入硬碟。 簡而言之,將這些參數值變大,都有助於提高交易執行效率。 [ 習題12-3 ] 由於只有 T1 在當機前 Commit ,所以復原後 T2 和 T3 所執行過的運算全部被還原,因此: X=5,
Y=0, Z=15, A=0, B=0, C=0; [ 習題12-5 ] [ 習題12-7 ] [ 習題12-10 ] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題13-2 ] [習題13-3] 若我們以第一種方式對學生特殊化分類作轉換,並以第二種方式對計分項目作轉換,則得到以下的關聯綱目。
[ 習題13-6 ]
我們用第三種方式來轉換 Account 的分類,並用第二種方式來轉換
Transaction 分類。
[ 習題13-11 ] A0005
不存在於 Person 或 Company( 依據群類規定, AccountOwner 的每一個實體必須是 Company 或 person 的其中之一 ) 。 此外 , AccountOwner 中的 A0001 同時是 Person 和 Company ,雖說從群類的定義來說是允許的,不過如果用常識判斷,一輛車不該屬於兩個實體,也應該去除。 [ 習題13-13 ] (1).EERD圖如下所示: (2).轉成的關聯綱目: [ 習題13-14 ] [ 習題13-15 ] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[ 習題14-1 ] 在純文字中,並沒有所謂的標示語言 ( 用來描述文件的內容和格式 ) ,如果要找出所要的資訊,則需要將一段文字從頭到尾的搜尋過一遍,但由於人類語言的不精確性,電腦軟體很難確切擷取出正確的意義。 [習題14-3]
[ 習題14-6 ] <?xml
version =“ <element
name =“transactions”> 假設以上 XML Schema
檔案名稱為 transactions.xsd ,以下為有效的 XML 檔: <?xml
version =“ [ 習題14-9 ] DOM的方式是在記憶體裡建置一個樹狀結構,雖然方便,但可以想見其效率會較差,且對於巨大的XML檔案,DOM的方式也不可行。SAX並不試圖將整個XML檔案載入,而只提供一些API來抓取XML裡的資料。也因此,所以SAX並無法新增XML資料或整批寫出XML檔案。兩種方式都是用來造訪文件裡的元素和屬性,並無法做搜尋。XPath則提供了一種簡單的查詢方式,XQuery的目的類似XPath,不過搜尋功能更強大,語法也較為複雜,可以做較複雜的條件搜尋。 |