112 一般警察特考三等 警察資訊管理人員 資料庫應用 考古題詳解
第 一 題50 分
考慮以下實體關聯圖:
🖼️【此處有附圖,請對照原卷】
(一) 試以最適當且最少個關聯資料表(relations),來描述上述實體關聯圖。需寫出這些關聯資料表的名稱、所含之屬性及主要鍵(primary key)。(15 分)
(二) 除了 primary key 外,還有那些屬性於撰寫程式定義關聯資料表時,須被設定為 Non-NULL,為什麼?(10 分)
(三) 對於上述之關聯資料表(relations),於撰寫程式建立關聯資料庫時,那些屬性之間應設定為參考完整性限制(Referential integrity constraint),為什麼?(10 分)
(四) 依前述之關聯資料表(relations),試寫一 SQL 程式片段,顯示每一門課程之課程名稱、成績 分以上之學生人數、該課程之授課教師姓名。(15 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查:
- ER Model 轉換為關聯資料表。
- 實體、屬性、關係及多元關係的表示方式。
- Primary Key、Foreign Key、
NOT NULL與參考完整性限制。 - 使用
JOIN、條件聚合及GROUP BY撰寫查詢。
圖中包含四個實體:
- 教師:教師編號、教師姓名
- 課程:課程編號、課程名稱
- 研究室:研究室編號、地點
- 學生:學號、學生姓名
以及兩個關係:
- 教授:教師、課程、研究室之間的關係
- 修課:課程、學生之間的關係,且具有成績屬性
解題方法
實體轉為獨立資料表;具有屬性的關係也轉為資料表。 「教授」同時連接教師、課程及研究室,因此須以三個外鍵描述該三元關係。「修課」連接課程與學生,並帶有成績屬性,因此也須建立關係資料表。
(一)關聯資料表設計
1. 教師資料表 TEACHER
| 屬性 | 說明 |
|---|---|
TeacherNo | 教師編號 |
TeacherName | 教師姓名 |
主要鍵:
2. 課程資料表 COURSE
| 屬性 | 說明 |
|---|---|
CourseNo | 課程編號 |
CourseName | 課程名稱 |
主要鍵:
3. 研究室資料表 LAB
| 屬性 | 說明 |
|---|---|
LabNo | 研究室編號 |
Location | 地點 |
主要鍵:
4. 學生資料表 STUDENT
| 屬性 | 說明 |
|---|---|
StudentNo | 學號 |
StudentName | 學生姓名 |
主要鍵:
5. 教授關係資料表 TEACH
「教授」是教師、課程及研究室之間的三元關係。
| 屬性 | 說明 |
|---|---|
TeacherNo | 教師編號 |
CourseNo | 課程編號 |
LabNo | 研究室編號 |
主要鍵可設為三者的組合:
因此關係表示為:
6. 修課關係資料表 TAKE
「修課」關係具有成績屬性。
| 屬性 | 說明 |
|---|---|
CourseNo | 課程編號 |
StudentNo | 學號 |
Grade | 成績 |
主要鍵為課程與學生的組合:
因此關係表示為:
(二)應設定為 NOT NULL 的屬性及理由
除了各資料表的 Primary Key 必須是 NOT NULL 外,以下外鍵也應設定為 NOT NULL:
TEACH 資料表
TeacherNoCourseNoLabNo
理由是每一筆「教授」關係必須同時對應到一位教師、一門課程及一間研究室,不能出現缺少任一參與實體的教授紀錄。
TAKE 資料表
CourseNoStudentNo
理由是每一筆「修課」紀錄必須同時指出哪一門課程及哪一位學生,否則無法表示實際的修課關係。
TAKE.Grade
成績若代表該修課紀錄的正式成績,亦應設定為 NOT NULL,因為缺少成績便無法判斷學生是否達到 60 分。不過若系統允許「已選課但尚未評分」,則 Grade 可暫時允許 NULL。
第 二 題30 分
為一個含有 、、、、、、、 八個屬性,且符合 1NF(first normal form)要求之關聯表格。該表格有五個功能相依(Functional Dependency):、、、、。
(一) 試決定最適合被用來當作 的 primary key。(10 分)
(二) 繼上題,試將 分割成符合 2NF(second normal form)及 3NF(third normal form)要求的關聯表格,並標出各關聯表格之 primary key。(20 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查功能相依、候選鍵判定,以及第二正規化(2NF)與第三正規化(3NF)的分解。
- 屬性閉包:屬性集合 的閉包 ,是由 出發,反覆套用功能相依後可推得的全部屬性。
- 候選鍵:能決定關係中全部屬性的最小屬性集合。候選鍵若有多個,選定其中一個作為 primary key。
- 部分功能相依:非主屬性只依賴複合候選鍵的一部分,違反 2NF。
- 遞移功能相依:非主屬性經由另一個非主屬性依賴候選鍵,違反 3NF。
- 主屬性:至少屬於一個候選鍵的屬性;不屬於任何候選鍵的屬性為非主屬性。
解題方法與推導
(一)決定 primary key
已知功能相依:
先觀察右側屬性集合為 。 都沒有出現在任何功能相依的右側,因此它們無法由其他屬性推得,必須包含在任何候選鍵中。
計算 的閉包:
- 由 ,得 。
- 由 ,得 。
- 由 ,得 。
- 由 ,得 。
- 由 ,得 。
因此:
能決定全部屬性;且 都必須出現在鍵中,故 是最小超鍵,也就是唯一候選鍵。因此,最適合的 primary key 為 。
(二)分解為 2NF 與 3NF
候選鍵是複合鍵 。先判斷非主屬性:只有 屬於候選鍵,其餘 均為非主屬性。
先分解至 2NF
檢查非主屬性是否只依賴候選鍵的一部分:
- : 只依賴鍵的一部分 。
- : 只依賴鍵的一部分 。
- : 只依賴鍵的一部分 。
- : 依賴 的真子集 。
- : 依賴 的真子集 。
第 三 題20 分
資料庫中,採用雜湊法索引及採用循序檔之資料結構,以儲存資料檔案時,對兩者:
(1) 在最壞的資料搜尋時間上;
(2) 在儲存空間的利用率上;
(3) 資料是否需事先經過排序;
(4) 是否適合建構在 linked list 資料結構下作業等方面,進行比較。(20 分)
登入後即可作答並保存紀錄。
核心觀念
本題比較兩種檔案組織方式:
- 雜湊檔(hash file):以雜湊函數將資料鍵值轉換成儲存位址,直接定位資料。
- 循序檔(sequential file):依搜尋鍵值排序後,將資料依序儲存;常見作法是按鍵值遞增排列。
比較時要注意,「循序檔」是依鍵值維持次序的檔案組織,不等同於雜湊法中可能採用的溢位區或鏈結串列。
解題方法
逐項從資料如何定位、如何排列及如何配置儲存空間比較:
| 比較項目 | 雜湊法索引 | 循序檔 |
|---|---|---|
| (1) 最壞搜尋時間 | 平均情況下,雜湊函數可將鍵值直接映射到位址,搜尋通常接近 。但發生碰撞時須檢查其他資料或溢位區;若大量鍵值碰撞,最壞可退化為 。 | 資料依鍵值排序後儲存。若逐筆循序搜尋,最壞須檢查 筆,為 ;若可利用排序採二分搜尋,則可達 ,但外部儲存裝置上的實際效率還受區塊讀取影響。 |
| (2) 空間利用率 | 需保留空桶或空位以降低碰撞,並可能需要溢位區等額外空間;空間利用率通常較低,且受負載因子影響。 | 若資料筆數固定且檔案緊密排列,空間利用率通常較高;但為便於插入而預留空間,或使用溢位區時,利用率會下降。 |
| (3) 是否需事先排序 | 不需要。雜湊函數依鍵值計算位址,資料無須依鍵值排序。 | 需要依搜尋鍵值排序,才能維持循序檔的有序特性。 |