108 高普考高考三級 資訊處理 資料庫應用 考古題詳解

108 年・高普考・高考三級・資訊處理
試題代碼 資料庫應用

第 一 題20 分

資料模式(Data Model)很多,就其特性大致可以歸類為三類:高階(High-Level,或觀念(Conceptual))資料模式、低階(Low-Level,或實體(Physical))資料模式、表示(Representational,或實作(Implementation))資料模式。

請分別說明這三類資料模式為何?並為每一類資料模式各舉至少 2 個資料模式的例子。

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

這一題的完整詳解

核心觀念

本題考查資料庫資料模式依抽象程度與呈現方式的分類。三類模式的關鍵差異在於:描述的是使用者關心的資料與關係、資料如何在資料庫中實作,或資料如何實際儲存於電腦中。

解題方法

依照模式的抽象層次,由高至低整理:

  1. 高階(觀念)資料模式:描述資料的意義、資料間的關係及限制,著重使用者與應用領域的觀點。
  2. 表示(實作)資料模式:描述資料庫管理系統支援的資料結構與操作方式,能表達資料及其關係,但不處理最底層的儲存細節。
  3. 低階(實體)資料模式:描述資料在電腦中的實際儲存方式,包括檔案組織、索引與存取路徑。

三類資料模式與例子

一、高階(High-Level/Conceptual)資料模式

以貼近使用者理解的方式描述資料,包含實體、屬性、關係及限制條件;通常不涉及資料如何配置到磁碟或記憶體。

例子:

  • 實體-關係模式(Entity-Relationship Model, ER Model):以實體、屬性及關係描述資料需求。
  • 物件導向資料模式(Object-Oriented Data Model):以物件、類別、屬性、方法及繼承等概念描述資料。

二、表示(Representational/Implementation)資料模式

介於觀念描述與實體儲存之間,以資料庫管理系統可支援的結構表示資料,讓資料能被組織、查詢及更新;通常不描述每筆資料在磁碟上的實際位置或位元組排列。

例子:

🔒

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

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

免費註冊

第 二 題40 分

某出版社要用關聯式資料模式建立可記錄其出版書籍的資料庫,設計了包括可記錄書籍的資料表(Table)BOOK 及記錄作者的資料表 AUTHOR。

BOOK 中包含 BookId(書籍編號)、Title(書名)、PubDate(出版日期)、Category(分類)等屬性(Attribute)欄位,且 BookId 是其主鍵(Primary Key,PK);AUTHOR 中包含 AuthId(作者編號)、Name(姓名)、Birthday(出生年月日)、Tel(電話)等屬性欄位,且 AuthId 是其主鍵。

即資料庫中包含下列兩個資料表:

BOOK(BookId,Title,PubDate,Category)BOOK(BookId, Title, PubDate, Category)

AUTHOR(AuthId,Name,Birthday,Tel)AUTHOR(AuthId, Name, Birthday, Tel)

請依序回答下列問題:

(一)如果每本書可以有好幾位作者,每一位作者也可以出版好幾本書,請對前項資料庫設計進行增修,使得出版社的資料庫可記錄每本書的作者,也可記錄每個作者所出版的書。作答時可仿效題目的描述方式說明您的設計,注意必須以英文命名明確表達資料表名稱及屬性欄位名稱,並明確指出主鍵及外來鍵(Foreign Key,FK),外來鍵並須指出與其對應的主鍵。(10 分)

(二)承續並運用前一子題之資料庫增修,請寫出可查得屬於「資料庫」分類(Category)的所有書籍之 SQL 命令,此命令必須列出書籍的 BookId、Title 及作者人數,並依 BookId 由小而大依序列出。(15 分)

(三)請運用子題(一)之資料庫增修寫出可查得曾經與名字叫「張山峰」的作者共同著作過的作者之 SQL 命令,列出其姓名及電話。(15 分)

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

這一題的完整詳解

核心觀念

本題考查多對多關係的關聯式資料庫設計,以及以 SQL 進行分組統計與自我連接查詢。

BOOK 與 AUTHOR 之間是多對多關係:一本書可以有多位作者,一位作者也可以出版多本書。關聯式資料庫通常新增一張中介資料表,將每組「書籍—作者」對應記錄為一筆資料。中介表以兩端資料表的主鍵作為外來鍵,並以兩欄的組合作為主鍵,避免同一位作者與同一本書的配對重複。

解題方法

(一)增修資料庫設計

保留原有 BOOK 與 AUTHOR,新增中介資料表 BOOK_AUTHOR:

  • BOOK(BookId, Title, PubDate, Category) PK:BookId

  • AUTHOR(AuthId, Name, Birthday, Tel) PK:AuthId

  • BOOK_AUTHOR(BookId, AuthId) PK:(BookId, AuthId) FK:BookId 對應 BOOK(BookId) FK:AuthId 對應 AUTHOR(AuthId)

BOOK_AUTHOR 的每一筆資料表示一位作者參與一本書。複合主鍵可防止同一作者與同一本書的配對被重複登錄;兩個外來鍵則確保配對所指向的書籍與作者均存在。

(二)查詢「資料庫」分類書籍及作者人數

以 BOOK 為查詢主體,連接 BOOK_AUTHOR,逐書分組,再以 COUNT 計算該書對應的作者筆數。為保留尚未登錄作者的書籍,使用 LEFT JOIN;此時應計算非空的 AuthId,避免將沒有作者的書籍誤算為一位作者。

SELECT B.BookId,
 B.Title,
 COUNT(BA.AuthId) AS AuthorCount
FROM BOOK AS B
LEFT JOIN BOOK_AUTHOR AS BA
 ON B.BookId = BA.BookId
WHERE B.Category = '資料庫'
GROUP BY B.BookId, B.Title
ORDER BY B.BookId ASC;

WHERE 先篩選分類為「資料庫」的書籍;GROUP BY 將同一本書的連接結果歸為一組;COUNT(BA.AuthId) 計算各組的作者數;最後依 BookId 遞增排列。

🔒

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

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

免費註冊

第 三 題20 分

某企業要建立自己的電子商務平台銷售自家商品,分析統整所有商品後,將商品分為若干大分類,每一大分類又分為若干次分類,每一次分類又分為若干細分類。

假設此分類系統非常理想,每一個細分類號都是唯一的,且不會有同一個細分類同屬於不同次分類的情形;每一個次分類號也都唯一,且不會有同一個次分類同屬於不同大分類的情形;一個商品也只會歸類為單一細分類,不會同時歸類到不同細分類。

依據這樣的分類系統,該公司的資料庫設計師設計出關聯式資料庫的資料表 PRODUCT 來儲存所有商品的資料,其中包含 MajorCate(大分類號)、SubCate(次分類號)、FineCate(細分類號)、SeqNo(商品編號)、ProdName(商品名稱)、Price(單價)。

任何一個商品的 MajorCate、SubCate、FineCate 所代表的該商品的各級分類號都是明確的。SeqNo 是商品所屬細分類之流水號,在同一細分類中不會重複,但在不同細分類間會有相同的 SeqNo。並以 (MajorCate,SubCate,FineCate,SeqNo)(MajorCate, SubCate, FineCate, SeqNo) 為主鍵。

也就是資料表 PRODUCT 為:

PRODUCT(MajorCate,SubCate,FineCate,SeqNo,ProdName,Price)PRODUCT(MajorCate, SubCate, FineCate, SeqNo, ProdName, Price)

請檢視此一設計,指出其設計錯誤或不良之處,並在不更動屬性設計的前提下修正之。(20 分)

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

這一題的完整詳解

核心觀念

本題考查函數相依、候選鍵、正規化與更新異常。若關係 RR 中的屬性集合 XX 能唯一決定屬性 YY,記為 X→YX \to Y。

依題意:

  • 每個細分類號只屬於一個次分類,且細分類號唯一:FineCate→SubCateFineCate \to SubCate。
  • 每個次分類號只屬於一個大分類,且次分類號唯一:SubCate→MajorCateSubCate \to MajorCate。
  • 每個商品只屬於一個細分類;商品編號在同一細分類內不重複:(FineCate,SeqNo)(FineCate, SeqNo) 可唯一識別商品。
  • 商品名稱與單價由商品識別資料決定:(FineCate,SeqNo)→ProdName,Price(FineCate, SeqNo) \to ProdName, Price。

由遞移性可得 FineCate→MajorCateFineCate \to MajorCate。因此,商品所屬的大分類與次分類可由細分類號推得,不必在每筆商品資料中重複儲存。

解題方法

以題目給定的主鍵 (MajorCate,SubCate,FineCate,SeqNo)(MajorCate, SubCate, FineCate, SeqNo) 檢查函數相依:

  1. (FineCate,SeqNo)(FineCate, SeqNo) 已能唯一識別商品,並決定 ProdNameProdName 與 PricePrice。
  2. FineCateFineCate 又決定 SubCateSubCate 與 MajorCateMajorCate。
  3. 所以商品表中存在非主鍵屬性由主鍵的真子集決定的情形: FineCate→SubCate,MajorCateFineCate \to SubCate, MajorCate
  4. 而且有遞移相依: FineCate→SubCate→MajorCateFineCate \to SubCate \to MajorCate

這使分類資料在多筆商品中重複出現;若同一細分類有多項商品,每筆都要重複存放其大分類號與次分類號。新增、修改或刪除商品時,可能造成分類資料不一致或遺失,屬於不良設計。

修正設計

在不更動屬性的前提下,將原表拆成下列三個關聯:

🔒

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

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

免費註冊

第 四 題20 分

兩階段鎖定(Two-Phase Locking)技術可以用來做並行控制(Concurrency Control),請詳細說明符合兩階段鎖定協定的交易應遵循的規範為何?

時程(Schedule)是指多個交易(Transaction)並行(Concurrency)執行時,各交易內的操作(Operation)間的執行順序。請以此觀點說明:若所有交易都遵循兩階段鎖定協定撰寫,則這些交易並行執行時,時程必定是什麼時程?並說明為何遵循這種時程執行可以達到並行控制的目的。(20 分)

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

這一題的完整詳解

核心觀念

本題考查兩階段鎖定(Two-Phase Locking,2PL)協定的規範,以及它如何保證並行時程具有衝突可序列化性。

交易對資料項目執行讀取前,須取得共享鎖(Shared Lock,SS);執行寫入前,須取得排他鎖(Exclusive Lock,XX)。共享鎖可與其他共享鎖並存;排他鎖與任何其他鎖皆不相容。

解題方法:說明 2PL 規範

符合 2PL 的交易,其鎖定操作分成兩個階段:

  1. 成長階段(Growing Phase):交易可以取得新鎖,也可以將共享鎖升級為排他鎖;不得釋放任何鎖。
  2. 縮減階段(Shrinking Phase):交易可以釋放鎖,也可以將排他鎖降級為共享鎖;不得再取得新鎖,也不得升級鎖。

兩階段的分界點稱為鎖點(lock point),即交易取得最後一把鎖的時刻。交易在鎖點前處於成長階段,鎖點後進入縮減階段。關鍵限制是:一旦釋放鎖,就不能再取得新的鎖。

時程性質與理由

若所有交易都遵循 2PL,並行執行所形成的時程必定是衝突可序列化時程(conflict-serializable schedule)。也就是說,該時程與某個依序執行各交易的序列時程衝突等價。

理由如下:

  • 建立時程的優先圖(precedence graph):每個交易是一個節點;
🔒

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

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

免費註冊

其他考古題