114 高普考高考二級 資訊處理 高等資料庫設計 考古題詳解

114 年・高普考・高考二級・資訊處理
試題代碼 高等資料庫設計

第 一 題25 分

假設我們要為某政府機關設計一個資料庫系統,以管理該機關發包的各項工程與相關資訊,經分析後得到下列需求:

  1. 每項工程案需要記錄其工程編號、工程名稱、發包日期與施作地點,而且工程編號不可重複,以用來辨識不同的工程案。

  2. 每個廠商皆須登記其統一編號、公司名稱、聯絡人姓名與電話。

  3. 一個工程案只能由一位廠商承包,但一位廠商可以承包多個工程案。

  4. 每個工程案只會由機關內的一位員工負責,但一位員工可以負責多件工程案。每位員工需記錄其員工編號、員工姓名、職稱與部門名稱,且每位員工的編號皆不同。

  5. 有些工程在執行過程中可能會進行多次查核,每次查核需記錄查核日期與查核結果,且查核紀錄的唯一識別方式是「工程編號」和「查核日期」的組合。

請根據上述所有需求畫出一個實體關係圖(Entity-Relationship Diagram, ER Diagram),注意圖中必須標明實體集合(Entity Set)、關係集合(Relationship Set)、屬性(Attribute)、主鍵(Primary Key)和對應數量限制(Mapping Cardinality)等。

另外,請特別使用弱實體集合(Weak Entity Set)來表示查核資料,並詳述弱實體和一般實體的不同之處為何,以及你的表示法傳遞了什麼特別的資料限制或意義。

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

這一題的完整詳解

核心觀念

本題考查 ER 模型中的實體集合、關係集合、屬性、主鍵、對應數量限制,以及弱實體集合的辨識與表示。

  • 實體集合(Entity Set):具有共同屬性的一類物件,例如工程案、廠商、員工。
  • 關係集合(Relationship Set):描述實體集合之間的關聯,例如工程案由廠商承包、由員工負責。
  • 主鍵(Primary Key):能唯一辨識實體的屬性。
  • 對應數量限制(Mapping Cardinality):描述關係兩端的數量,例如一對多(1:N1:N)。
  • 弱實體集合(Weak Entity Set):本身沒有足以唯一辨識個體的完整主鍵,須依附於擁有者實體集合,並搭配部分鍵才能唯一辨識。

本題沒有涉及法條。

解題方法

先依需求找出可獨立辨識的實體,再整理各自屬性與主鍵;接著根據「只能由一位」或「可以多件」判斷關係的對應數量限制。最後將查核資料判斷為弱實體,因其識別方式必須依賴工程編號。

1. 實體集合與屬性

實體集合屬性主鍵
工程案 工程案工程編號、工程名稱、發包日期、施作地點工程編號
廠商 廠商統一編號、公司名稱、聯絡人姓名、電話統一編號
員工 員工員工編號、員工姓名、職稱、部門名稱員工編號

工程編號、統一編號及員工編號均可唯一辨識各自實體,因此分別作為主鍵。

2. 關係集合與對應數量限制

  • 承包(廠商—工程案):一位廠商可以承包多項工程案,每項工程案只能由一位廠商承包,因此為廠商對工程案的 1:N1:N 關係。
  • 負責(員工—工程案):一位員工可以負責多項工程案,每項工程案只由一位員工負責,因此為員工對工程案的 1:N1:N 關係。
  • 查核(工程案—查核紀錄):一項工程案可有多筆查核紀錄,每筆查核紀錄只屬於一項工程案,因此為工程案對查核紀錄的 1:N1:N 關係。查核紀錄是弱實體集合。

3. ER 圖

圖例:方框表示實體集合;雙框表示弱實體集合;菱形表示關係集合;雙菱形表示識別關係;底線表示主鍵;虛線底線表示部分鍵。1 與 N 標示關係兩端的對應數量。

🔒

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

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

免費註冊

第 二 題25 分

假設在某關聯式資料庫中定義了一個 BOOK 表格,其中包含三個字串型態的屬性,分別為 ISBN、Title、Author。若資料庫管理者為該表格的 Author 屬性建立了一個索引(Index),且該索引是依照 B+-tree 的結構所建立。

首先請列舉數筆範例資料,然後描繪出對應的索引結構。接著,請說明此索引有助於提升下述哪個查詢句的查詢效率,並詳述你的理由:

查詢句一: select Author from BOOK where Title = ‘相對論’;

查詢句二: select Title from BOOK where Author = ‘Einstein’;

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

這一題的完整詳解

核心觀念

本題考查 B+-tree 索引與查詢條件、輸出欄位的關係。索引依哪個屬性建立,主要就能依該屬性的值快速搜尋;若查詢條件使用索引欄位,便能先定位符合的索引項目,再取得所需資料。

本題索引建立於 Author,因此索引鍵是作者值。B+-tree 的內部節點用來導引搜尋,葉節點依索引鍵排序,並保存索引鍵及對應資料列的位置(或主鍵)。

解題方法與索引示意

以下假設資料表包含這幾筆範例資料:

ISBNTitleAuthor
978-1相對論Einstein
978-2時間簡史Hawking
978-3廣義相對論Einstein
978-4宇宙簡史Hawking
978-5物理學的未來Feynman

索引依 Author 排序。同一作者可以對應多筆資料,因此索引葉節點須保留各筆資料的位置。以下以簡化的 B+-tree 示意;實際節點容量與分裂方式取決於索引參數及資料量。

 [Hawking]
 / \
 / \
 [Einstein → 978-1, 978-3] → [Feynman → 978-5, Hawking → 978-2, 978-4]

葉節點依作者值排序,並以箭頭連結,方便依序掃描。實際索引常以資料列位址或主鍵作為指標;上圖以 ISBN 簡化表示。

判斷查詢是否受益,重點是看 WHERE 條件是否以 Author 限定資料列。SELECT 指定輸出哪些欄位,與索引能否加速搜尋是不同的考量。

查詢句分析

查詢句一

select Author from BOOK where Title = ‘相對論’;

不會因本題的 Author 索引而有效加速搜尋。

🔒

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

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

免費註冊

第 三 題25 分

假設資料庫系統中定義了下列兩個表格,其中屬性 Bid 代表書籍編號,屬性 Uid 代表使用者編號,且表格中的所有屬性皆為字串(varchar)型態:

BOOK(Bid, Title, Author)

BORROWER(Uid, Bid, Date)

另外觀察到本系統的使用者經常需要執行下述 SQL 查詢句:

select Uid, Title from BOOK, BORROWER where BOOK.Bid = BORROWER.Bid;

假設系統中原本並沒有定義任何索引,而我們希望利用樹狀結構的索引(如 B+-tree 或 B-tree)來提升上述 SQL 的查詢處理效率。

首先,請以 SQL 標準語法為上述的一個或兩個表格的特定屬性定義索引,並詳述你選擇為哪些屬性定義索引的理由。

其次,請自行設計合適的資料範例,針對你所定義的一個或數個索引具體畫出對應的樹狀結構,並以該實例說明你所設計的索引結構如何提升上述 SQL 句的查詢效率。

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

這一題的完整詳解

核心觀念

本題考查索引鍵選擇與索引協助連接(join)。查詢以 BOOK.Bid = BORROWER.Bid 連接兩表,並輸出 BORROWER.Uid 與 BOOK.Title。因此,索引應優先設在連接欄位 Bid 上,讓資料庫能快速找到另一表中 Bid 相同的資料。

樹狀索引(如 B+-tree)依鍵值排序,能有效支援鍵值搜尋。若索引採用覆蓋查詢所需欄位,資料庫還能直接從索引取得部分輸出欄位,減少讀取資料表的次數。

解題方法

本解答在兩表的 Bid 欄位建立 B+-tree 索引:

CREATE INDEX idx_book_bid
ON BOOK (Bid);

CREATE INDEX idx_borrower_bid
ON BORROWER (Bid);

BOOK.Bid 與 BORROWER.Bid 都是連接條件中的欄位,兩者皆建立索引,可供查詢最佳化器選擇較有效率的連接策略。若只有一側有索引,另一側仍可能需要大量掃描;兩側都有索引,則可依資料筆數、索引高度與資料分布選擇從較小的一側開始查找。

題目未指定欄位唯一性,因此索引不宣告 UNIQUE。同一本書可被多位使用者借閱,BORROWER.Bid 也可重複;而題目未明確保證 BOOK.Bid 唯一,故不額外假設其唯一性。

索引範例與查詢效率

假設資料如下:

BOOK

BidTitleAuthor
B01資料庫系統王一
B02演算法李二
B03作業系統陳三
B04網路概論林四

BORROWER

UidBidDate
U01B02114-01-03
U02B01114-01-05
U03B02114-01-08
U04B04114-01-10
U05B03114-01-11

以下以階度為 3 的簡化 B+-tree 示意索引。實際節點容量會依系統頁面大小與鍵值長度而定。

idx_book_bid

 [ B03 ]
 / \
 [ B01 | B02 ] [ B03 | B04 ]

idx_borrower_bid

 [ B02 ]
 / \
 [ B01 | B02 ] [ B02 | B03 | B04 ]
🔒

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

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

免費註冊

第 四 題25 分

關聯式資料庫雖然被廣為使用,但是不同類型的資料庫也日漸受到重視,其中包含文件資料庫(Document Database)和圖形資料庫(Graph Database)。

請針對此兩種類型,分別提供一個代表性的系統軟體,並詳述該軟體處理的資料型態為何,以及舉例說明合適的應用場景。

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

這一題的完整詳解

核心觀念

本題考查文件資料庫與圖形資料庫的資料模型、代表性系統,以及各自適合處理的資料與應用情境。作答時,須指出系統名稱,說明它如何組織資料,再以符合該資料模型的場景舉例。

  • 文件資料庫(Document Database):以文件為基本儲存單位,常見格式為 JSON、BSON 或類似的鍵值結構。文件可包含巢狀物件與陣列,適合欄位結構多變、需要整份讀取或更新的資料。
  • 圖形資料庫(Graph Database):以節點(Node)表示實體,以邊(Edge)表示實體間的關係,並可在節點與邊上附加屬性。它著重關係的表示與遍歷,適合關係複雜、需要查詢多層關聯的資料。

解題方法

依序回答三項:代表系統、處理的資料型態、合適的應用場景。場景要能凸顯該資料模型的優點:文件資料庫強調文件結構彈性;圖形資料庫強調關係及路徑查詢。

作答要點

一、文件資料庫:MongoDB

MongoDB 是代表性的文件資料庫。它以 BSON 文件儲存資料,BSON 是可表示多種資料型態的二進位文件格式,支援巢狀文件、陣列及不同欄位組合。

例如,商品資料可直接以一份文件記錄名稱、價格、規格與評論;不同商品也能各自擁有不同規格欄位。適合用於商品型錄、內容管理、使用者設定檔或事件資料等欄位可能增減、結構不完全一致的場景。

🔒

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

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

免費註冊

其他考古題