111 地方特考三等 資訊處理 資料庫應用 考古題詳解
第 一 題20 分
假設有關博物館的部分實體關係圖(Entity-Relationship Diagram)如下,其中每一實體(矩形)或弱實體(雙矩形)鄰近某關係(菱形)間均有一對 的限制,代表該實體參與該關係之 (至少)、(至多)次數限制, 代表沒有限制。屬性劃實底線者(如 MID、LID、C_Number)為 Primary Key(主鍵)、劃虛底線者(如 BID)為 Partial Key。
🖼️【此處有附圖,請對照原卷】
圖中包含以下實體、屬性與關係:
- 弱實體「分館」:屬性 BID、Address。
- 實體「博物館」:屬性 LID。
- 實體「館藏物」:屬性 C_Number。
- 實體「會員」:屬性 MID、Address。
- 「分館」與「博物館」透過「下含」關係連接,分館的基數為 ,博物館的基數為 。
- 「分館」與「館藏物」透過「保存」關係連接,分館的基數為 ,館藏物的基數為 。
- 「博物館」與「會員」透過「申請」關係連接,兩者的基數均為 。
(一)請將此圖轉化為對應的關聯(Relation)式資料庫綱要,以「關聯(屬性 1,屬性 2,……)」方式寫出應有的所有關聯表格;同時,必須標示出每個關聯的主鍵。(15 分)
(二)進一步,若對實體關係圖中「館藏物」應有的關聯表格,以 SQL 語法的 CREATE 命令去創建它,其中應有的參考完整性限制(Referential Integrity Constraints)語句應為何?(5 分)
登入後即可作答並保存紀錄。
核心觀念
這題考 ER 圖轉關聯綱要,重點是辨認弱實體、識別關係,以及依照關係基數決定外鍵放在哪張表。
- **弱實體「分館」**以「博物館」識別。圖中的 BID 是部分鍵,LID 是博物館的主鍵,因此分館的完整主鍵為 。
- 一對多關係「保存」中,分館最多對應多個館藏物,每件館藏物恰屬於一個分館。因此將分館主鍵放進「館藏物」表作為外鍵。
- 多對多關係「申請」中,博物館與會員兩端的最大基數都是 ,因此另建關係表,以兩端主鍵組合作為複合主鍵。
解題方法
先建立各實體的關係表,再依關係種類處理:
- 強實體直接以自身主鍵建立關係表。
- 弱實體將識別它的強實體主鍵併入,與部分鍵組成複合主鍵。
- 一對多關係將「一」端主鍵放入「多」端表作為外鍵。
- 多對多關係另建關係表,放入兩端主鍵,並以兩者組合作為主鍵。
依此可得:
-
博物館:
博物館(LID)主鍵:LID -
分館:
分館(LID, BID, Address)主鍵:(LID, BID);LID為參照博物館的外鍵。 -
館藏物:
館藏物(C_Number, LID, BID)主鍵:C_Number;(LID, BID)為參照分館的外鍵。 -
會員:
會員(MID, Address)主鍵:MID -
申請:
申請(LID, MID)主鍵:(LID, MID);LID、MID分別參照博物館與會員。
第 二 題30 分
假設有個資料庫的 Employee 表格,其屬性包含:編號 SID、姓名 Name、性別 Sex、居住街道地址 Street、居住城市 City、薪水 Salary、所屬部門編號 Dnumber。目前的資料存於電腦中如下表,假設你是程式設計師,你還不知道電腦中有多少筆,及其詳細內容,但知道其綱要、欄位型態,並見到編號 SID 為 3001、4001 兩筆資料例子。
Employee:
| SID | Name | Sex | Street | City | Salary | Dnumber |
|---|---|---|---|---|---|---|
| 1001 | Alisa | F | 中山一路 30 號 | Palmer | 8000 | 50 |
| 2001 | Beatrice | F | 信義南路 7 號 | Lecanto | 12000 | 30 |
| 3001 | Abraham | M | 中山二路 60 號 | Warrendale | 7000 | 30 |
| 4001 | Dana | F | 北中山一路 96 號 | Enumclaw | 6000 | 40 |
| 4044 | Ferdinand | M | 忠孝北路 66 號 | Alameda | 9000 | 40 |
| 5055 | Grace | F | 忠孝北路 99 號 | Lecanto | 25000 | 30 |
| 6004 | John | M | 南中山一路 30 號 | Waterloo | 36000 | 40 |
| 6006 | Philemen | M | 中山路 67 號 | Smithville | 16000 | 60 |
| 6008 | Vince | M | 仁愛西路 80 號 | Wautoma | 15000 | 50 |
(一)請寫出 SQL 查詢,來列出:不管住那個城市,居住街道有「中山」二字者之員工編號、姓名。(10 分)
(二)若你寫下列 SQL 查詢,請說明電腦會給你什麼結果(假設查詢時,資料庫目前只有上述 9 筆資料)。(10 分)
SELECT Dnumber, COUNT() AS High_Sal_Count FROM Employee WHERE Salary > 10000 GROUP BY Dnumber HAVING COUNT() >= 2;
(三)若你寫下列 SQL 查詢,請說明電腦又會給你什麼結果(假設查詢時,資料庫目前只有上述 9 筆資料)。(10 分)
SELECT Dnumber, COUNT() AS High_Sal_Count FROM Employee WHERE Salary > 10000 AND Dnumber IN (SELECT Dnumber FROM Employee GROUP BY Dnumber HAVING COUNT() >= 2) GROUP BY Dnumber;
登入後即可作答並保存紀錄。
核心觀念
本題考查 SQL 的字串比對、WHERE 篩選、GROUP BY 分組,以及 HAVING 對分組結果的篩選。
LIKE '%中山%':%代表任意長度的字元,因此可比對欄位中任意位置含有「中山」的資料。WHERE:先篩選個別資料列,再進行分組與彙總。GROUP BY:依指定欄位分組。COUNT(*):計算每組的資料列數。HAVING:分組後,依彙總結果篩選群組。
解題方法
(一)列出街道含「中山」的員工編號與姓名
以 LIKE 搜尋 Street 欄位中任何位置出現「中山」的資料:
SELECT SID, Name
FROM Employee
WHERE Street LIKE '%中山%';
符合條件的街道及員工如下:
| SID | Name | Street |
|---|---|---|
| 1001 | Alisa | 中山一路 30 號 |
| 3001 | Abraham | 中山二路 60 號 |
| 4001 | Dana | 北中山一路 96 號 |
| 6004 | John | 南中山一路 30 號 |
| 6006 | Philemen | 中山路 67 號 |
城市欄位沒有納入條件,因此不論員工居住在哪個城市都會列入。查詢沒有指定 ORDER BY,結果列的排列順序不保證固定。
(二)計算高薪員工人數,並保留人數至少為 2 的部門
先依 WHERE Salary > 10000 篩選員工,再按 Dnumber 分組並計算人數:
| Dnumber | 符合 Salary > 10000 的員工 | 人數 |
|---|---|---|
| 30 | Beatrice、Grace | 2 |
| 40 | John | 1 |
| 50 | Vince | 1 |
| 60 | Philemen | 1 |
第 三 題20 分
關聯式資料庫的設計中,需要關注資料間的功能相依(Functional Dependency)。
(一)資料間為何有功能相依?如何找到企業中的資料間之功能相依?(5 分)
(二)假設有下列表格 ,已知有五筆資料 ,由目前已觀察到的資料值,請檢視各個功能相依,來一一回答「已可確認不存在」或「還有可能存在」?為什麼?(15 分)
(1)
(2)
(3)
(4)
(5)
表格 :
| A1 | A2 | A3 | A4 | A5 |
|---|---|---|---|---|
| 1 | 2 | 3 | 40 | 60 |
| 2 | 2 | 4 | 50 | 78 |
| 1 | 3 | 3 | 40 | 60 |
| 1 | 11 | 3 | 66 | 70 |
| 8 | 11 | 33 | 77 | 70 |
登入後即可作答並保存紀錄。
核心觀念
功能相依 表示:在關聯 的所有合法資料列中,只要兩列的 屬性值相同,兩列的 屬性值也必須相同。 稱為決定項, 稱為被決定項。
企業中的功能相依來自業務規則與資料定義,例如「每個員工編號只對應一位員工」。找出功能相依時,應訪談業務人員、檢視作業規則與資料字典,再以現有資料檢查是否有違反情形。資料樣本可以找出反例、否定一項功能相依;但即使樣本中沒有反例,也不能單憑樣本證明該相依對所有合法資料都成立。
解題方法
逐項比較決定項 相同的資料列:
- 若找到兩列的 值相同、 值不同,便有反例,該功能相依「已可確認不存在」。
- 若目前資料中找不到反例,只能判定「還有可能存在」,不能據此確認它必然成立。
各項功能相依判斷
-
:已可確認不存在。 第 1、3、4 列的 都是 ,但對應的 分別是 。相同的決定項對應到不同的 ,已構成反例。
-
:還有可能存在。 時,對應的 均為 ;其餘 值各自只出現一次。目前資料沒有相同 卻有不同 的反例。
-
:還有可能存在。 決定項 相同的資料列只有 重複出現,而這兩列的 都是 。
第 四 題30 分
假設某關聯式資料庫,五個屬性值均是 atomic、不可再分割。設計師發現有下列 2 條功能相依,設計出一個資料表 :
FD1:
FD2:
(一)請問此表格 之候選鍵(Candidate Key)有哪些?為什麼?(3 分)
(二)上述設計違反了正規化(Normalization)理論,為什麼?(3 分)
(三)若資料表改為下列 2 個表格 、(12 分)
(a) 請你先判定新表格 的候選鍵。
(b) 這樣的切割,是否滿足 Lossless Join?
(c) 這樣的切割,是否會喪失任何功能相依?
(d) 這樣設計最高是滿足第幾正規化,為什麼?
(四)若你不同意上述(三)設計,你建議應如何修改原設計師所提出資料表 ?你必須同樣地依上述 (a)、(b)、(c)、(d) 四方面來說明你建議的設計。(12 分)
登入後即可作答並保存紀錄。
核心觀念
本題為關聯式資料庫綱目設計與正規化理論的經典題型,評量重點涵蓋以下核心理論與定理:
- 屬性閉包(Attribute Closure, )與候選鍵(Candidate Key):
- 候選鍵為具備「唯一性(Uniqueness)」與「最小性(Minimality)」的超鍵(Superkey)。
- 屬性分類判定法:若屬性僅出現在功能相依(FD)的左側,或從未出現在任何 FD 中,該屬性必然屬於所有候選鍵的一部分(核心屬性)。
- 正規化階層定義(Normal Forms):
- 第一正規化(1NF):所有屬性值皆為單一值且不可再分割(Atomic)。
- 第二正規化(2NF):符合 1NF,且「非主屬性(Non-prime Attribute)」完全功能相依於候選鍵(即不存在部分功能相依 Partial Functional Dependency)。
- 第三正規化(3NF):符合 2NF,且非主屬性不遞移相依於候選鍵。
- BCNF(Boyce-Codd Normal Form):關聯中所有非顯然(Non-trivial)功能相依 , 皆為超鍵(Superkey)。
- 關聯綱目分解性質(Properties of Decomposition):
- 無損連接(Lossless-Join Decomposition):若關聯 分解為 與 ,其充要條件為 或 成立(Heath 定理)。
- 保持相依性(Dependency Preservation):分解後各子關聯的功能相依聯集之閉包,須等於原關聯功能相依集合之閉包,即 。
解題方法與詳細推導
(一)表格 之候選鍵判定
- 屬性分類分析:
- 關聯屬性集合:。
- 功能相依集合:。
- 僅出現在左側(L):。
- 僅出現在右側(R):。
- 雙邊皆未出現(N):。
- 雙邊皆有出現(B):無;而 僅出現在左側(L)。
- 候選鍵必要屬性判定:
- 屬性 僅作為決定項存在,無法由其他屬性推導導出。
- 屬性 未參與任何功能相依,無法由任何屬性決定。
- 因此,任何候選鍵必須包含核心屬性集合 。
- 屬性閉包推導: 依據 ,加入 : 依據 ,加入 :
- 最小性驗證:
- (缺少 )
- 任何真子集均無法決定全體屬性,故 滿足最小性。
表格 的候選鍵只有一組:。
(二)違反正規化之原因分析
- 主屬性與非主屬性劃分:
- 候選鍵為 。
- 主屬性(Prime Attributes):。
- 非主屬性(Non-prime Attributes):。
- 正規化條件檢視:
- 題目給定所有屬性值均為 atomic,滿足 1NF。
- 檢視 2NF(消除非主屬性對候選鍵的部分相依):
- 功能相依 :( 為候選鍵的真子集),非主屬性 僅相依於部分鍵 。
- 功能相依 :,非主屬性 僅相依於部分鍵 。
- 結論: 表格 存在部分功能相依(Partial Functional Dependency),嚴重違反第二正規化(2NF)規定,最高僅符合 1NF。此設計會衍生資料重複儲存(Data Redundancy),以及新增、刪除、修改異常(Anomalies)。
(三)評估資料表切割為 與
(a) 判定新表格 與 的候選鍵
-
之投影功能相依: 計算 屬性子集於 下之閉包,並投影至 :
-
-
-
-
-
-
中不存在任何非顯然(Non-trivial)功能相依,。 因此, 的候選鍵為全體屬性集合 。
-
之投影功能相依: 計算 屬性子集於 下之閉包,並投影至 : 原 FD 中的決定項均含有 ,而 不包含屬性 。 任一真子集的閉包皆僅能推導出其本身,不存在非顯然功能相依,。 因此, 的候選鍵為全體屬性集合 。
(b) 是否滿足 Lossless Join
- 兩子表格的交集屬性為:
- 計算交集屬性之閉包:
- 檢驗是否構成超鍵:
- (無法決定 )
- (無法決定 )
- 依據二元分解無損連接判定準則,交集屬性並非任一關聯的超鍵,因此不滿足 Lossless Join(屬於有損分解 Lossy Decomposition)。
(c) 是否會喪失任何功能相依
- 檢驗 : 屬性 僅在 , 僅在 ,兩者被切割分散於不同資料表,無法局部驗證。