110 中華郵政招考營運職 資料庫管理 資料庫系統規劃、開發與實務 考古題詳解

110 年・中華郵政招考・營運職・資料庫管理
試題代碼 110年中華郵政營運職 資料庫管理(資料庫系統規劃、開發與實務)

第 第一題 題25 分

在資料表規劃過程中,常須施以「正規化」(normalization)以降低資料重複性以及避免資料更新異常現象。假設某資料表屬性欄位 A∼JA\sim J 間,存在的功能相依性(functional dependency, FD)如下列四項,請回答下列問題:

  1. C→{B}C\to\{B\}
  2. G→{H,J}G\to\{H,J\}
  3. A→{E,F,I}A\to\{E,F,I\}
  4. A+B→{C,D,E,F,G,H,I,J}A+B\to\{C,D,E,F,G,H,I,J\}

(一)請依上列 FD 執行正規化,使分解後各表可滿足「第二正規化格式」(2NF)。【8 分】

(二)承第(一)小題,執行正規化程序,使分解後各表可滿足「第三正規化格式」(3NF)。【8 分】

(三)承第(二)小題,執行正規化程序,使分解後各表皆滿足「BC 正規化格式」(BCNF)。【9 分】

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查功能相依性、候選鍵、屬性閉包,以及由 1NF 逐步分解至 2NF、3NF、BCNF。

  • 若 X→YX\to Y,表示只要 XX 相同,YY 必定相同。
  • 候選鍵是能決定整個關係的最小屬性集合。
  • 2NF:關係須先滿足 1NF,且每一個非主屬性都完全功能相依於每一個候選鍵,不得只相依於候選鍵的一部分。
  • 3NF:對每一個非平凡 FD X→YX\to Y,至少符合下列一項:
  1. XX 是超鍵;
  2. YY 是主屬性。
  • BCNF:對每一個非平凡 FD X→YX\to Y,XX 必須是超鍵。

其中,主屬性是出現在任一候選鍵中的屬性。


一、找出原始關係的候選鍵

令原始關係為:

R(A,B,C,D,E,F,G,H,I,J)R(A,B,C,D,E,F,G,H,I,J)

已知 FD:

C→BC\to B G→H,JG\to H,J A→E,F,IA\to E,F,I AB→C,D,E,F,G,H,I,JAB\to C,D,E,F,G,H,I,J

1. 判斷 ABAB 是否為候選鍵

由題目直接給出:

AB→C,D,E,F,G,H,I,JAB\to C,D,E,F,G,H,I,J

再加上 A,BA,B 本身,可得:

(AB)+={A,B,C,D,E,F,G,H,I,J}(AB)^+=\{A,B,C,D,E,F,G,H,I,J\}

因此 ABAB 是超鍵。

檢查最小性:

  • A+={A,E,F,I}A^+=\{A,E,F,I\},無法得到全部屬性;
  • B+={B}B^+=\{B\},無法得到全部屬性。

所以 ABAB 是候選鍵。

2. 判斷 ACAC 是否為候選鍵

由:

C→BC\to B

可先由 ACAC 得到 BB:

AC→ABAC\to AB

再由:

AB→C,D,E,F,G,H,I,JAB\to C,D,E,F,G,H,I,J

得到全部屬性,因此:

(AC)+={A,B,C,D,E,F,G,H,I,J}(AC)^+=\{A,B,C,D,E,F,G,H,I,J\}

且:

  • A+A^+ 不完整;
  • C+={C,B}C^+=\{C,B\},不完整。

所以 ACAC 也是候選鍵。

因此原始關係的候選鍵為:

AB, AC\boxed{AB,\ AC}

主屬性為:

A,B,C\boxed{A,B,C}

非主屬性為:

D,E,F,G,H,I,J\boxed{D,E,F,G,H,I,J}

(一)分解成 2NF

判斷部分相依

原始候選鍵為 ABAB 與 ACAC。

題目給出:

A→E,F,IA\to E,F,I

由於 AA 是候選鍵 ABAB 的真子集,也是候選鍵 ACAC 的真子集,而 E,F,IE,F,I 都是非主屬性,因此:

A→E,F,IA\to E,F,I

是部分功能相依,違反 2NF。

因此將 A→E,F,IA\to E,F,I 分離成一個關係:

R1(A,E,F,I)R_1(A,E,F,I)

其餘屬性保留於另一關係:

R2(A,B,C,D,G,H,J)R_2(A,B,C,D,G,H,J)

2NF 分解結果

R1(A,E,F,I)\boxed{R_1(A,E,F,I)} R2(A,B,C,D,G,H,J)\boxed{R_2(A,B,C,D,G,H,J)}

為何 R2R_2 已符合 2NF?

在 R2R_2 中,主要相關 FD 為:

C→BC\to B G→H,JG\to H,J AB→C,D,G,H,JAB\to C,D,G,H,J

R2R_2 的候選鍵仍可取為 ABAB 與 ACAC。

  • C→BC\to B 的右側 BB 是主屬性;
  • G→H,JG\to H,J 中,GG 並非候選鍵的一部分,因此不是「候選鍵部分屬性決定非主屬性」的情形;
  • 不再存在 A→A\to 非主屬性的部分相依。

所以 R1R_1 與 R2R_2 均符合 2NF。


(二)分解成 3NF

2NF 仍可能存在傳遞相依。於 R2R_2 中有:

G→H,JG\to H,J

而 GG 是非主屬性,H,JH,J 也是非主屬性。由於 GG 並非 R2R_2 的超鍵,形成非主屬性之間的傳遞相依,必須分解。

將其分離為:

R3(G,H,J)R_3(G,H,J)

原 R2R_2 剩餘屬性形成:

R4(A,B,C,D,G)R_4(A,B,C,D,G)

因此 3NF 分解為:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 第二題 題25 分

某創投基金公司內建關聯式資料庫,有「員工」(EMPLOYEE)、「薪級」(SALARY)等兩項關聯表(relations),此兩表之主鍵(primary key)欄位分別為 EMP_id、SAL_lel,其餘之欄位名稱與所載述的資料錄內容,詳如表二之一及表二之二所示。

EMPLOYEE:

EMP_idEMP_nameEMP_sinceSAL_lel
EMP-001David2010SAL-01
EMP-002Jenny2010SAL-03
EMP-004Emma2010SAL-05
EMP-008Evans2012SAL-08
EMP-016Jessie2015SAL-05
EMP-017Lucas2015SAL-12
EMP-032Wayne2015SAL-03
EMP-033Oliver2018SAL-08
EMP-064Mike2021SAL-08
EMP-066Eric2021SAL-12

【表二之一】

SALARY:

SAL_lelSAL_nameSAL_mth
SAL-01執行長125,000
SAL-03經理級85,000
SAL-05課長級68,000
SAL-08專員級45,000
SAL-12工讀生24,000

【表二之二】

設下列所示 SQL 查詢皆可為系統正常執行,請將 SQL-1、SQL-2 查詢後結果以表格方式呈現。

(一)SQL-1:【6 分】

SELECT * FROM EMPLOYEE WHERE SAL_lel NOT IN ('SAL-05', 'SAL-12');

(二)SQL-2:【7 分】

SELECT SAL_lel, SAL_name, SAL_mth FROM SALARY WHERE SAL_mth <= (SELECT AVG(SAL_mth) FROM SALARY) ORDER BY SAL_mth ASC;

(三)SQL-3:【12 分】

欲查詢屬於各不同薪級(SALARY)的「員工人數」,以及公司核發予各薪級員工每月之「月薪總額」,依照薪級順序排列(SAL_lel)如表二之三所示,請問該如何下達此 SQL 查詢句?

SAL_lel員工人數月薪總額
SAL-011125,000
SAL-032170,000
SAL-052136,000
SAL-084180,000
SAL-12248,000

【表二之三】

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題綜合考查:

  1. WHERE 條件篩選與 NOT IN 運算子。
  2. 聚合函數 AVG 與單值子查詢(scalar subquery)。
  3. ORDER BY 排序。
  4. JOIN 表格連結。
  5. GROUP BY 分組統計。
  6. COUNT 計算筆數與 SUM 計算薪資總額。

關聯式資料庫中的資料表本身沒有固定順序,因此未使用 ORDER BY 的查詢,結果排列順序在理論上不保證固定;以下依題目所列資料順序呈現。


(一)SQL-1

SELECT *
FROM EMPLOYEE
WHERE SAL_lel NOT IN ('SAL-05', 'SAL-12');

解題方法

NOT IN 表示欄位值不得等於括號內任一值:

SAL_lel≠′SAL−05′且SAL_lel≠′SAL−12′SAL\_lel \ne 'SAL-05' \quad \text{且} \quad SAL\_lel \ne 'SAL-12'

因此排除薪級為 SAL-05 與 SAL-12 的員工,保留其他薪級資料。

查詢結果

EMP_idEMP_nameEMP_sinceSAL_lel
EMP-001David2010SAL-01
EMP-002Jenny2010SAL-03
EMP-008Evans2012SAL-08
EMP-032Wayne2015SAL-03
EMP-033Oliver2018SAL-08
EMP-064Mike2021SAL-08

解題技巧與陷阱

  • NOT IN ('SAL-05', 'SAL-12') 是排除兩個薪級,不是只排除其中一個。
  • SELECT * 會選出 EMPLOYEE 的所有欄位。
  • 若欄位值為 NULL,使用 NOT IN 時不會被判定為 TRUE;本題資料沒有 NULL,因此不影響結果。

(二)SQL-2

SELECT SAL_lel, SAL_name, SAL_mth
FROM SALARY
WHERE SAL_mth <= (SELECT AVG(SAL_mth) FROM SALARY)
ORDER BY SAL_mth ASC;

解題方法

先計算所有薪級的平均月薪:

AVG(SAL_mth)=125000+85000+68000+45000+240005AVG(SAL\_mth) = \frac{125000+85000+68000+45000+24000}{5} =3470005=69400= \frac{347000}{5} = 69400

子查詢:

SELECT AVG(SAL_mth) FROM SALARY

所得到的結果為 69,40069,400,外層查詢只保留:

SAL_mth≤69,400SAL\_mth \le 69,400

符合的薪資為 68,00068,000、45,00045,000、24,00024,000,最後依 SAL_mth ASC 由低至高排序。

查詢結果

SAL_lelSAL_nameSAL_mth
SAL-12工讀生24,000
SAL-08專員級45,000
SAL-05課長級68,000

解題技巧與陷阱

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 第三題 題25 分

請回答下列問題:

(一)請說明何謂參照完整性(referential integrity)?如何在關聯模型(relational model)中表示參照完整性?【10 分】

(二)

(1) 請繪製實體關係(entity-relation, ER)圖,建模專題製作科目 CS 5001 中的專題分組。

注意:

  • 每個學生(Student)(由學生 SID 識別)必須參加且最多只能參加 1 個分組(Group)。
  • 每個分組(Group)係依分組名稱(Name)唯一識別。
  • 最多可以有 2 個分組製作同一專題(Project)。
  • 每個專題係依專題名稱(Name)唯一識別。

(2) 在 ER 圖中畫出所有實體及關係,並標示所有適當的多重性(multiplicity)及參照完整性等限制條件(constraint),並須繪出每個實體集(entity set)中的鍵值屬性(key attribute)。

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查兩項資料庫核心觀念:

  1. 參照完整性(referential integrity)與外來鍵(foreign key)。
  2. 由題目敘述判斷 ER 模型中的實體、關係、鍵值、參與限制與多重性(multiplicity)。

(一)參照完整性

1. 定義

參照完整性是指:關聯資料庫中的外來鍵值,必須能在被參照關係的候選鍵或主鍵中找到對應值。

假設有兩個關係:

R(A, B)R(A,\ B)

其中 BB 為外來鍵,參照關係:

S(B)S(B)

則 R.BR.B 中每一個非空值,都必須存在於 S.BS.B 中:

∀r∈R,r.B≠NULL⇒∃s∈S, r.B=s.B\forall r\in R,\quad r.B\neq NULL\Rightarrow \exists s\in S,\ r.B=s.B

換言之,子表中的外來鍵不能指向不存在的父表資料,避免產生「孤兒資料」。

2. 在關聯模型中的表示方法

在關聯模型中,參照完整性透過外來鍵與參照限制表示:

Student(SID, GroupName)
Group(GroupName, ProjectName)
Project(ProjectName)

其中:

  • Student.GroupName 是外來鍵,參照 Group.GroupName。
  • Group.ProjectName 是外來鍵,參照 Project.ProjectName。
  • 被參照的欄位必須是主鍵或候選鍵。
  • 若題目要求學生必須參加分組,則 Student.GroupName 必須設定為 NOT NULL。
  • 若每個分組必須製作一個專題,則 Group.ProjectName 必須設定為 NOT NULL。

基本限制可表示為:

Student.GroupName⊆Group.GroupNameStudent.GroupName\subseteq Group.GroupName Group.ProjectName⊆Project.ProjectNameGroup.ProjectName\subseteq Project.ProjectName

資料更新時,系統也必須處理父表資料被刪除或主鍵被修改的情況,例如拒絕刪除、連鎖刪除或將外來鍵設為空值。


(二)(1)ER 模型

1. 實體集與鍵值屬性

Student 實體集

Student(SID)
  • 鍵值屬性:SID
  • 每位學生由唯一的 SID 識別。

Group 實體集

Group(Name)
  • 鍵值屬性:Name
  • 每個分組由唯一的分組名稱識別。

Project 實體集

Project(Name)
  • 鍵值屬性:Name
  • 每個專題由唯一的專題名稱識別。

2. Student 與 Group 的關係

設關係為:

Student ── Participates ── Group

題目指出:

  • 每個學生必須參加分組。
  • 每個學生最多只能參加一個分組。

因此,Student 端的參與限制為:

(1,1)(1,1)

題目未限制每個分組最多容納幾位學生,因此 Group 端為:

(0,N)(0,N)

若依一般語意認定「分組」至少須有一位學生,也可標示為 (1,N)(1,N);但依題目明文資訊,應採用 (0,N)(0,N),因題目只明確規定學生端的必要參與。

ER 關係可表示為:

Student (1,1) ── Participates ── (0,N) Group

其中 Student 為完全參與(total participation),因為每位學生都必須參加分組。


3. Group 與 Project 的關係

設關係為:

Group ── Produces ── Project

題意表示:

  • 每個分組製作一個專題。
  • 同一個專題最多可由兩個分組製作。

因此:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 第四題 題25 分

請回答下列問題:

(一)請說明超級鍵(superkey)、最小超級鍵(minimal superkey)、候選鍵(candidate key)及主鍵(primary key)之差異。【5 分】

(二)考量下列關係(relation):

Paper(ID, title, journal, issue, year, startpage, endpage, TR-ID)

記錄關於在期刊上發表的論文之資訊。每篇論文都有唯一的 ID、標題(title)及發表處的資訊,包含:期刊名稱(journal)、期別(issue)、出版年度(year)、起始頁碼(startpage)及結束頁碼(endpage)。此外,若論文過去曾出現於技術報告(TR)中,則指出該技術報告的 ID(TR-ID)。

注意:

  • 各期別之期刊出版都在單一年度。
  • 論文的 endpage 永遠不會小於 startpage。
  • 一頁面中只會出現一篇論文之內容。

表四為 Paper 關係之實例(instance):

IDtitlejournalissueyearstartpageendpageTR-ID
142Double HashingTAlg15120142133187
133Secret SharingTAlg1412011169185162
133Secret SharingTAlg1412011169185156
139Information HidingTCOMP13120111133147
157NP ResolutionsTACM15120181113199
177Elliptic CrypTCOMP15120181115198
178Elliptic CrypAIEE22220182222198

【表四】

(1) 列出下列哪些功能依賴性(functional dependency, FD)成立?哪些不成立?【10 分】

(a) ID→titleID\to title

(b) startpage→endpagestartpage\to endpage

(c) journal issue→yearjournal\ issue\to year

(d) title→IDtitle\to ID

(e) ID→startpage endpage journal issueID\to startpage\ endpage\ journal\ issue

(2) 列出下列各組屬性是否為 Paper 的最小超級鍵(minimal superkey)?【10 分】

這一題的完整詳解

核心觀念

本題考查:

  1. 超級鍵、最小超級鍵、候選鍵與主鍵的定義。
  2. 函數依賴性 X→YX\to Y 的判斷。
  3. 根據題目規則與表四資料,判斷屬性集合是否能唯一識別關係中的每一筆 tuple。

函數依賴 X→YX\to Y 表示:任意兩筆資料若在 XX 上的值相同,則在 YY 上的值也必須相同。

須注意:題目中的 IDID 可唯一識別「論文」,但同一篇論文可能曾出現於多個技術報告,因此同一個 IDID 可能對應多個 TR-IDTR\text{-}ID。所以 IDID 不一定能唯一識別 Paper 關係中的完整 tuple。


(一)四種鍵的差異

1. 超級鍵(superkey)

若屬性集合 KK 能唯一識別關係中的每一筆 tuple,則 KK 稱為超級鍵。

形式上:

K→RK\to R

其中 RR 是關係的全部屬性。

超級鍵可以包含多餘屬性。例如在本題中,若 {ID,TR-ID}\{ID,TR\text{-}ID\} 能唯一識別 tuple,則 {ID,TR-ID,title}\{ID,TR\text{-}ID,title\} 也一定是超級鍵,但其中的 titletitle 可能是多餘的。

2. 最小超級鍵(minimal superkey)

最小超級鍵是「不含多餘屬性的超級鍵」,也就是刪除其中任一屬性後,就不再是超級鍵。

這裡的「最小」是指集合包含關係上的最小,不是指屬性數量最少。

3. 候選鍵(candidate key)

候選鍵就是最小超級鍵。若一個關係存在多個最小超級鍵,則每一個都稱為候選鍵。

因此:

候選鍵=最小超級鍵\text{候選鍵}=\text{最小超級鍵}

4. 主鍵(primary key)

主鍵是由資料庫設計者從候選鍵中選定的一組鍵,作為識別 tuple 的主要鍵。

一個關係通常只能選定一組主鍵,但可以擁有多組候選鍵。主鍵中的屬性不得為 NULLNULL,且主鍵值不可重複。


(二)函數依賴性判斷

解題方法

判斷 X→YX\to Y 時,找出表四中 XX 值相同的資料列:

  • 若 YY 值不同,則 FD 不成立。
  • 若 YY 值皆相同,且題目規則支持此關係,則 FD 成立。

(1)(a) ID→titleID\to title

成立。

表四中 ID=133ID=133 出現兩次,但兩筆資料的 titletitle 都是 Secret Sharing。

而題目說每篇論文具有唯一的 IDID,因此同一個 IDID 對應同一篇論文,也就對應同一個標題。

ID→titleID\to title

成立。


(1)(b) startpage→endpagestartpage\to endpage

不成立。

表四中 startpage=11startpage=11 的資料有:

startpageendpagejournalissue
1133TCOMP131
1113TACM151
1115TCOMP151

同一個 startpage=11startpage=11 對應到不同的 endpageendpage,因此:

startpage↛endpagestartpage\nrightarrow endpage

不成立。

題目僅說一頁面中只會出現一篇論文內容,但不同期刊或不同期別可以各自有第 11 頁,所以單獨使用 startpagestartpage 不足以決定 endpageendpage。


(1)(c) journal issue→yearjournal\ issue\to year

成立。

題目明確指出:

各期別之期刊出版都在單一年度。

因此,給定期刊名稱與期別,即可決定其出版年度:

journal, issue→yearjournal,\ issue\to year

成立。

例如:

  • (TAlg,151)→2014(TAlg,151)\to 2014
  • (TCOMP,151)→2018(TCOMP,151)\to 2018
  • (TACM,151)→2018(TACM,151)\to 2018

雖然不同期刊可以有相同的期別,但加入 journaljournal 後即可區分。


(1)(d) title→IDtitle\to ID

不成立。

表四中 Elliptic Cryp 對應到兩個不同的 IDID:

titleID
Elliptic Cryp177
Elliptic Cryp178

因此同一個 titletitle 可對應不同的 IDID:

title↛IDtitle\nrightarrow ID

不成立。

題目只保證 IDID 唯一,沒有保證論文標題唯一。


(1)(e) ID→startpage endpage journal issueID\to startpage\ endpage\ journal\ issue

成立。

同一個 IDID 代表同一篇論文,因此其發表資訊應相同。表四中 ID=133ID=133 雖然出現兩次,但兩筆資料的下列欄位完全相同:

  • startpage=169startpage=169
  • endpage=185endpage=185
  • journal=TAlgjournal=TAlg
  • issue=141issue=141

所以:

ID→startpage, endpage, journal, issueID\to startpage,\ endpage,\ journal,\ issue

成立。

須注意,IDID 不決定 TR-IDTR\text{-}ID,因為同一篇論文可對應多個技術報告;但本選項沒有要求 ID→TR-IDID\to TR\text{-}ID。


(二)最小超級鍵判斷

解題方法

要成為超級鍵,屬性集合必須能唯一識別 Paper 關係中的完整 tuple,包括 TR-IDTR\text{-}ID。

判斷最小超級鍵分兩步:

  1. 先判斷該屬性集合是否能唯一識別每筆 tuple。
  2. 再檢查刪除任一屬性後是否仍能唯一識別 tuple。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題

110 年資料庫管理的其他科目