112 高普考高考三級 資訊處理 資料庫應用 考古題詳解
第 一 題25 分
國立 ABC 大學的校務行政電腦化,其中有關教務資料擬採用資料庫系統。經系統分析後,得到如下需求:
-
ABC 大學由許多學系(DEPARTMENT)組成。每一學系有系代碼(DeptId)與系名稱(DeptName),系代碼可區別不同學系。
-
各學系會開許多課程(COURSE)。每一課程有課程代碼(CrsId)、課程名稱(CrsName)、課程說明(CrsDescrip)與課程學分數(CrsCredit),課程代碼可區別不同課程。
-
每一學系有許多學生(STUDENT)。每個學生有學生代碼(StudId)、學生姓名(StudName)與學生電子信箱(StudEmail);有學生會有多個電子信箱,學生代碼可區別不同學生。
-
每一學系由許多教授(PROFESSOR)組成。每一教授有教職員工代碼(ProfId)、姓名(ProfName)與職稱(ProfRank),教職員工代碼可區別不同教授。
-
每個學系會開授許多課程,每一課程僅由一學系開授。
-
每個學系會有許多學生,每一學生僅隸屬於一學系。
-
每個學系會有許多教授,每一教授僅隸屬於一學系。
-
每一教授可以開授許多門課程,每一門課程僅由一個教授開授。
-
每一學生可以修習許多課程,每一課程也可由許多學生來修習,每一學生修習的課程有一成績(Grade)。
請設計此教務關聯式資料庫綱要(Relational Database Schema),並標示出此資料庫關聯(Relations)的主鍵(Primary Key)與外來鍵(Foreign Key)。
登入後即可作答並保存紀錄。
核心觀念
本題評量**實體關聯模型(E-R Model)轉換為關聯式資料庫綱要(Relational Database Schema)**的核心能力,涉及以下正規化與關聯設計原則:
- 實體轉換為關聯(Entity to Relation):將實體及其單值屬性直接對應為關聯表,實體之識別屬性即為關聯之主鍵(Primary Key, PK)。
- 多值屬性(Multivalued Attribute)之處理:依據第一正規化(1NF)消除重複群與非不可分割值(Non-atomic values)之要求,多值屬性必須獨立拆成新關聯,新關聯之主鍵由「原實體主鍵」與「多值屬性本身」組成複合主鍵,同時原實體主鍵作為外來鍵(Foreign Key, FK)。
- 一對多(1:N)關聯之轉換:將「1」端實體的主鍵,置入「N」端實體所對應的關聯中,作為「N」端關聯的外來鍵。
- 多對多(M:N)關聯之轉換:必須建立獨立的關聯表(聯結表/關聯實體),以兩端實體之主鍵組成複合主鍵,兩主鍵各自為外來鍵;若關聯本身帶有屬性(Descriptive Attribute),亦納入此關聯表中。
解題方法
根據題幹 9 項需求逐一分析並推導關聯綱要:
步驟一:分析實體與單值/多值屬性
- 學系實體(DEPARTMENT)(需求 1):
- 屬性包含
DeptId、DeptName。DeptId可唯一識別學系,定為主鍵。 - 教授實體(PROFESSOR)(需求 4):
- 屬性包含
ProfId、ProfName、ProfRank。ProfId為主鍵。 - 學生實體(STUDENT)與電子信箱(需求 3):
- 基本單值屬性包含
StudId、StudName。StudId為主鍵。 StudEmail為多值屬性(題幹明載「有學生會有多個電子信箱」),為符合第一正規化(1NF),不可存於單一欄位中,須獨立建立STUDENT_EMAIL關聯。- 課程實體(COURSE)(需求 2):
- 屬性包含
CrsId、CrsName、CrsDescrip、CrsCredit。CrsId為主鍵。
步驟二:處理一對多(1:N)關係與外來鍵配置
- 學系與學生(1:N)(需求 6):
- 一個學系有多名學生,每名學生僅隸屬於一個學系。
- 將 1 端主鍵
DeptId放至 N 端STUDENT關聯中作為外來鍵。 - 學系與教授(1:N)(需求 7):
- 一個學系有多位教授,每位教授僅隸屬於一個學系。
- 將 1 端主鍵
DeptId放至 N 端PROFESSOR關聯中作為外來鍵。 - 學系與課程(1:N)(需求 5):
- 一個學系開授多門課程,每門課程僅由一個學系開授。
- 將 1 端主鍵
DeptId放至 N 端COURSE關聯中作為外來鍵。 - 教授與課程(1:N)(需求 8):
- 一位教授開授多門課程,每門課程僅由一位教授開授。
- 將 1 端主鍵
ProfId放至 N 端COURSE關聯中作為外來鍵。
步驟三:處理多對多(M:N)關係與關聯屬性
- 學生與課程(M:N)(需求 9):
- 學生可修習多門課程,課程可由多名學生修習,具修課成績
Grade。 - 建立選課關聯
STUDENT_COURSE(或稱修課紀錄ENROLL),屬性包含StudId、CrsId與Grade。 - 複合主鍵為
(StudId, CrsId);其中StudId參照STUDENT(StudId),CrsId參照COURSE(CrsId)。
解題技巧
- 多值屬性陷阱(極易失分點):
需求 3 特別強調「有學生會有多個電子信箱」,在設計關聯式綱要時,若直接在
STUDENT關聯中放置StudEmail,會違反第一正規化(1NF)的原子性要求。必須敏銳察覺並拆出STUDENT_EMAIL關聯。 - 多個 1:N 匯聚於同一關聯:
第 二 題25 分
給予一關聯綱要 EMP-DEPT(EmpId, EmpName, EmpBdate, EmpAddr, DeptNum, DeptName, DmgrId),主鍵(Primary Key)為 。
此關聯綱要記錄員工參與部門的相關資料。員工有員工編號(EmpId)、員工姓名(EmpName)、員工生日(EmpBdate)與員工地址(EmpAddr);部門有部門編號(DeptNum)、部門名稱(DeptName)與部門經理編號(DmgrId)。
另給予一組功能相依性(Functional Dependencies):
關聯綱要 EMP-DEPT 是否為 2NF?如不是,請將 EMP-DEPT 正規化至 2NF,然後正規化至 3NF,並論述分割(Decompose)的理論基礎。
登入後即可作答並保存紀錄。
核心觀念
本題的核心在於關聯式資料庫的「正規化理論(Normalization Theory)」與「綱要分割(Schema Decomposition)準則」:
- 第二正規化(2NF)的定義與性質:
- 定義:關聯綱要處於第一正規化(1NF),且每一個「非主屬性(Non-prime Attribute)」皆「完全功能相依(Fully Functionally Dependent)」於任何候選鍵(Candidate Key),即不存在部分功能相依(Partial Functional Dependency)。
- 定理:若關聯綱要的所有候選鍵(含主鍵)皆由**單一屬性(Single Attribute)**構成,則該關聯綱要必然符合 2NF。因為單一屬性不存在非空的真子集(Proper Subset),不可能產生部分相依。
- 第三正規化(3NF)的定義:
- 定義:關聯綱要處於 2NF,且每一個非主屬性皆不「傳遞相依(Transitively Dependent)」於候選鍵。
- 形式化條件:對於關聯綱要中成立的任何非平庸功能相依 , 必須為超鍵(Superkey),或者 中的每一個屬性皆為候選鍵的組成屬性(即主屬性)。
- 綱要分割(Decomposition)的兩大理論基礎:
- 無失真連接分割(Lossless-Join Decomposition):分割後的子關聯經由自然連接(Natural Join, )運算後,能夠精確還原為原關聯的資料內容,不會產生額外的虛假資料組(Spurious Tuples)。
- 保持功能相依性(Dependency Preservation):原關聯綱要具備的所有功能相依性,在分割後的各子關聯綱要之相依性閉包聯集下依然成立,使系統在進行新增或修改時,無須執行耗損效能的跨表連接即可驗證資料完整性。
解題方法
步驟一:屬性分類與功能相依集分析
- 全體屬性集合:
- 主鍵(Primary Key): 由於主鍵可唯一識別 EMP-DEPT 中的每一筆員工參與部門紀錄,故唯一的候選鍵(Candidate Key)為 。
- 主屬性(Prime Attribute):。
- 非主屬性(Non-prime Attribute):。
- 功能相依集合(Functional Dependencies, ):
- 依題意員工參與部門且 為主鍵,故有隱含相依:
步驟二:檢驗是否符合 2NF
- 檢驗是否存在「部分功能相依」:
- 部分相依的定義為:存在非主屬性相依於候選鍵的真子集(Proper Subset)。
- 關聯綱要 EMP-DEPT 的候選鍵為單一屬性 ,其非空真子集不存在(僅有空集合 )。
- 因此,所有非主屬性皆完全功能相依於主鍵 ,不存在任何部分相依。
- 結論:關聯綱要 EMP-DEPT 已經符合 2NF(無須亦無法再進行 2NF 的分割)。
步驟三:檢驗是否符合 3NF 並進行分割
- 檢驗是否存在「傳遞功能相依」:
- 觀察功能相依鏈:
- 在功能相依 中:
- 左邊決定者 不是超鍵(無法唯一決定全體屬性)。
- 右邊被決定者 皆為非主屬性。
- 這構成了非主屬性對主鍵 的傳遞相依,因此 EMP-DEPT 不符合 3NF。
- 進行 3NF 正規化分割:
- 將造成傳遞相依的決定屬性與其決定的屬性抽出建立獨立綱要,消除傳遞相依:
- 部門關聯:,主鍵為 。
- 員工關聯:,主鍵為 ,其中 為參照 的外鍵(Foreign Key)。
步驟四:論述分割(Decompose)的理論基礎
將關聯綱要 EMP-DEPT 分割為 與 的理論基礎包含以下兩大定理與準則:
- 無失真連接分割(Lossless-Join Decomposition):
第 三 題25 分
給予下列兩個行程(Schedules)A 與 B,請用一圖形演算法,利用行程中的讀(Read)與寫(Write)動作(Operations)構成圖形,並在圖形邊(Edge)上標示讀寫的資料項目(Data Items),以此演算法論述 A 與 B 兩行程是否具序列性(Serializability)。如具序列性,請寫出對等序列行程(Equivalent Serial Schedule)。
Schedule A:
依時間順序,三個交易(Transactions)、、 的操作如下:
- :read(Z)
- :read(Y)
- :read(Y)
- :read(X)
- :write(Y)
- :read(Z)
- :write(X)
- :write(Y)
- :read(X)
- :write(Z)
- :read(Y)
- :write(X)
- :write(Y)
Schedule B:
依時間順序,三個交易(Transactions)、、 的操作如下:
- :read(Y)
- :read(Z)
- :read(X)
- :write(Y)
- :write(X)
- :write(Z)
- :read(Z)
- :read(Y)
- :read(Y)
- :write(Y)
- :write(Y)
- :read(X)
- :write(X)
登入後即可作答並保存紀錄。
核心觀念
本題評量資料庫並行控制(Concurrency Control)中的**衝突序列性(Conflict Serializability)**及其驗證圖形演算法——優先圖演算法(Precedence Graph Algorithm,又稱衝突圖 / Serialization Graph)。
- 衝突操作(Conflicting Operations): 在同一個行程(Schedule)中,若兩個操作 與 同時滿足以下三個條件,即構成衝突:
- 屬於不同的交易(Transactions):。
- 存取相同的資料項目(Same Data Item)。
- 兩個操作中**至少有一個為寫入(Write)**動作。
即包含三種類型:
Read-Write、Write-Read、Write-Write。
- 優先圖(Precedence Graph)定義: 優先圖 是一個有向圖:
- 節點集合 :行程中參與的所有交易 。
- 有向邊集合 :若 的操作 早於 的操作 執行,且 與 為衝突操作,則在圖中建立一條有向邊 ,邊上標示其衝突之資料項目(如 )。
- 衝突序列性定理(Conflict Serializability Theorem): 一個行程具衝突序列性,若且唯若其優先圖為「有向無環圖」(Directed Acyclic Graph, DAG)。
- 有迴圈(Cycle):不具序列性(Non-serializable)。
- 無迴圈(Acyclic):具序列性(Serializable)。
- 對等序列行程(Equivalent Serial Schedule)求法: 若優先圖為無環圖,對該圖進行拓撲排序(Topological Sort),所得之全序即為與原行程衝突對等的序列行程。
解題方法
一、行程 A(Schedule A)分析
按時間順序檢視各操作,找出所有跨交易的衝突操作(依資料項目分組分析):
- 資料項目 的衝突分析:
- 步驟 4: read(X)
- 步驟 7: write(X)
- 步驟 9: read(X)
- 步驟 12: write(X)
- 衝突邊:
- 步驟 4 的 read(X) 先於 步驟 12 的 write(X)
- 步驟 7 的 write(X) 先於 步驟 9 的 read(X)
- 步驟 7 的 write(X) 先於 步驟 12 的 write(X)
- 產生有向邊:
- 資料項目 的衝突分析:
- 步驟 2: read(Y)
- 步驟 3: read(Y)
- 步驟 5: write(Y)
- 步驟 8: write(Y)
- 步驟 11: read(Y)
- 步驟 13: write(Y)
- 衝突邊:
- 步驟 2 的 read(Y) 先於 步驟 8 的 write(Y)
- 步驟 3 的 read(Y) 先於 步驟 5 的 write(Y)
- 步驟 5 的 write(Y) 先於 步驟 8 的 write(Y)
- 步驟 2/5 的 操作先於 步驟 11/13 的 操作
- 步驟 3/8 的 操作先於 步驟 11/13 的 操作
- 產生有向邊:、、、
- 資料項目 的衝突分析:
- 步驟 1: read(Z)
- 步驟 6: read(Z)
- 步驟 10: write(Z)
- 衝突邊:
- 步驟 1 的 read(Z) 先於 步驟 10 的 write(Z)
- 產生有向邊:
Schedule A 優先圖彙整:
- 節點:
- 標記邊:
論述與結論: 優先圖中存在雙向環(Cycle):
- 與 ,構成迴圈 。
- 同時存在迴圈 。
第 四 題25 分
分散式資料庫為一個分散在電腦網路的許多在邏輯上相關資料庫的集合,請畫出分散式資料庫系統三層主從伺服器架構(Three-tier Client-server Architecture),並論述其運作原理。
分散資料的管理具有不同層次(Levels)的透明度(Transparency),請論述三種透明度及相關技術。
登入後即可作答並保存紀錄。
核心觀念
本題考查**分散式資料庫系統(Distributed Database System, DDBS)**的系統架構與資料透明度特性:
- 三層主從架構(Three-tier Client-server Architecture):將系統切分為「表現層(Presentation Tier)」、「應用邏輯層(Application / Business Logic Tier)」與「資料庫層(Database Tier)」,著重於職責分離、集中商業邏輯、降低網路負載與提升分散式環境下的擴充彈性。
- 分散透明度(Distribution Transparency):分散式資料庫的核心目標是向使用者隱藏資料在實體網路上的分散細節,使使用者操作分散式資料庫如同操作單一集中式資料庫。依抽象層次主要包含分割透明度(Fragmentation Transparency)、位置透明度(Location Transparency)與複本透明度(Replication Transparency)。
解題方法
- 第一部分(架構圖與運作原理):
- 繪製清晰的階層圖,包含三層實體(客戶端、應用伺服器、分散式資料庫伺服器)與彼此間的溝通界面。
- 依「層次職責」、「資料與請求流程」以及「在分散式資料庫中的效益」三個面向論述其運作原理。
- 第二部分(三種透明度及相關技術):
- 挑選最關鍵的三大資料透明度(分割、位置、複本),採層次化結構(由高抽象至低抽象)說明。
- 針對每一種透明度,明確給出「定義(使用者視角)」與「實現技術(DDBMS 內部機制)」。
解題技巧
- 排版版面技巧:國家考試作答時間有限,第一小題應先畫出整齊的方塊圖,圖中標記資料傳遞箭號(如 HTTP/RPC、SQL/Distributed Query),隨後條列說明各層角色,切忌純文字堆疊。
- 透明度層次記憶法:透明度的層級由高至低為: 回答時點出此層次關係,能展現出兼具宏觀理論與實務架構的深厚底子。
- 技術具體化:論述「相關技術」時務必寫出具體名詞(如全域資料目錄 DDC、查詢重組技術、兩階段提交 2PC、ROWA 協定等),避免流於泛泛空談。
【答案】
一、分散式資料庫系統三層主從架構圖與運作原理
(一) 三層主從架構圖
┌─────────────────────────────────────────────────────────────┐
│ 客戶端層(Client / Presentation Tier) │
│ - 使用者介面(Web Browser, GUI App, Mobile App) │
└──────────────────────────────┬──────────────────────────────┘
│ 請求 (HTTP / RESTful API / RPC)
│ 回應 (JSON / HTML)
┌──────────────────────────────▼──────────────────────────────┐
│ 應用伺服器層(Application / Business Logic Tier) │
│ - 商業邏輯運算、權限控管、交易協調 │
│ - 全域交易管理員(Global Transaction Manager, GTM) │
└──────────────────────┬──────────────────────┬───────────────┘
│ │
分散式查詢 / SQL│ │分散式查詢 / SQL
│ │
┌──────────────────────▼───────┐ ┌───────▼──────────────┐
│ 資料庫站台 A(Database Site A)│ │ 資料庫站台 B(Database Site B)│
│ - 局部 DBMS(LDBMS) │ │ - 局部 DBMS(LDBMS) │
│ - 實體資料儲存(Site A Data)│ │ - 實體資料儲存(Site B Data)│
└──────────────────────────────┘ └──────────────────────────────┘
(二) 運作原理論述
- 各層職責劃分:
- 第一層:客戶端層(Presentation Tier): 負責與使用者進行互動,呈現資料與接收輸入。客戶端通常為「輕量型客戶端(Thin Client)」,內部不包含商業邏輯或直接存取資料庫的驅動程式,僅負責格式驗證與顯示輸出。
- 第二層:應用伺服器層(Application / Business Logic Tier): 系統的核心中樞,負責執行所有的業務邏輯與規則處理。