高普考題庫
94 年 094年公務人員高等考試三級考試暨普通考試第二試

資料庫應用

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1某公司準備將其員工與計畫等資料用關聯式資料庫來儲存管理。每個員工資料包括身份證號碼、唯一(unique)的員工編號、其參與的計畫編號、工作職稱,以及該員工參與該計畫的時間比例與薪水等級。員工在每個計畫的工作職稱與薪水等級可能不一樣,正職員工在不同計畫的時間比例總和為100%,如低於100%則為「部分時間」(part time)員工。為了控管,該公司有以下之限制:㈠任一計畫可能有多個子計畫,每一計畫有一位員工為計畫負責人,以及另一員工為秘書。一個員工最多只能參與三個計畫。㈡一位員工可能為多個計畫之秘書或負責人,但一位計畫負責人跟一位秘書只能合作一個計畫。㈢一位員工如為某位員工的計畫負責人,則該某位員工不能在其它計畫為這位員工之計畫負責人。(即,員工不互為隸屬。)㈣每個計畫之經費必須高於或等於該計畫與其子計畫每個月支付薪水之總和。以下為一位員工資料的例子,則該員工月薪為20000*40%+30000*60%=26000.。Name NID CID Project Position Time% Salary level名字 身份證字號 員工編號 計畫名稱職稱 時間比例薪水等級Joe B1234567 234 A 程式師 40% 20000B 負責人 60% 30000以下為該公司計畫之部分資料Project Sub-projects Manager Budget Secretary計畫名稱 子計畫名稱 負責人 經費 秘書A B,C Mary 300000 JackB D,E,F Joe 200000 Jack請回答以下問題,並需提出必要之中間過程及解釋。㈠請設計一個實體關係圖(E-R diagram)來表示以上之公司需求。各欄位的domain可以合理自訂。(15 分)㈡請設計一個符合BCNF(Boyce-Codd Normal Form)之關聯式資料庫,並標列出所有表格(table)的主鍵(primary key)與他鍵(foreign key),以及其它實體關係圖包含之限制。(15 分)㈢請根據第二子題的關聯式資料庫,設計一個關聯代數(relational algebra)式子來找出每個計畫剩餘之預算。(10 分)㈣請根據第二子題的關聯式資料庫,設計一個SQL 程式來依序列出每個計畫總薪水最高之三位正職員工(註:必須考慮子計畫)。(10 分)科 別: 資訊科 目: 資料庫應用
申論 2假設有兩個表格,EMP = (EID:int, NAME:char(60), PROJECT:int, POSITION:char(10), SALARY:float)與 PROJ = (PID:int, MANAGER:int, BUDGET:float, DUE_DATE:char(6)),int 與float 長度為8 bytes,char 為1 byte。EID 與PID 分別為EMP 的主鍵(primary key)。EMP 有10000 個tuples,而PROJ 有500 個tuples。㈠EMP 與PROJ 在每個資料頁(data pages,大小為4K bytes)各能存放多少tuples?各須多少資料頁?(8 分)㈡當EMP表格以PROJECT當作是搜索鍵(search key)時來建立B+-tree,請問這個B+-tree有多少層?每層各有多少索引頁(index page)?假設每個索引頁為4Kbytes,建立時只使用75%,每個索引與RID(record/reference ID)的大小為8bytes。並假設PROJECT的可能值為500 個,且為平均分佈。(12 分)㈢當執行以下SQL 程式SELECT e.NAMEFROM EMP e, PROJ pWHERE e.PROJECT=p.PID and p.BUDGET < 10*e.SALARY假設EMP資料頁是以EID從小到大依序儲存,並建有如㈡所述之B+-tree,而PROJ的資料頁是按照PID從小到大依序儲存,並建有以BUDGET為鍵之雜湊函數到資料頁,平均每個BUDGET的雜湊函數需要1.1 個磁碟讀取才能得到相關資料頁的RID。假設每個資料頁或索引頁的讀取需要一個磁碟讀取動作,而且系統沒有暫存(buffering)的功能。請找出一個以上SQL程式運算方式,只需最少的磁碟讀取。(15分)
申論 3以下為三個程式U1,U2,U3 執行讀R( )跟寫W( )以及完成(Commit)的動作。U1 R(b) R(a)CommitU2 R(c) W(a) CommitU3 R(b) W(b)W(c)Commit0 TIME㈠請劃出以上三個程式的依賴情形(precedence/dependency graph),並說明該執行排程(schedule)是否可直線化(serializable)?如可,請提出同等直線化(equivalent serial)排程?如不可,請解釋原因?(7 分)㈡請在以上三個程式中加入分享鎖(share lock, S(x))與排它鎖(exclusive lock,X(x))的鎖定與釋放(U(x))等程式碼,使其符合雙相鎖定(2 phase locking)的規定,並使程式能最經濟地執行。(8 分)