110 地方特考三等 資訊處理 資料庫應用 考古題詳解

110 年・地方特考・三等・資訊處理
試題代碼 資料庫應用

第 一 題20 分

給定一個資料表 PersonIncome,其欄位與資料紀錄如下表,ID 是主鍵,name 是員工姓名,paydate 是員工收到工作費的日期,income 是工作費收入金額。此表總共有 1212 筆資料紀錄。請回答下列相關問題:

IDnamepaydateincome
C1001王大陸2008/02/2825000
C1002李大喬2008/03/1221000
C1003趙麗生2008/04/1327000
C1004黃球聲2008/05/1528000
C1005王大陸2009/06/2827000
C1006李曉喬2009/07/1223000
C1007趙麗生2009/08/1317000
C1008黃球聲2010/09/1525000
C1009王大陸2010/10/2829000
C1010李大喬2010/11/1228000
C1011趙麗生2010/12/1328000
C1012黃球聲2011/01/1527000

(一) 請寫出可查出收入金額大於 2200022000 或小於 2600026000 的資料紀錄之 SQL 查詢指令。(3 分) (二) 請寫出可查出收入金額為 77 之倍數的資料紀錄之 SQL 查詢指令。(3 分) (三) 請寫出可查出名字中包含「大」的資料紀錄之 SQL 查詢指令。(2 分) (四) 請寫出可得到每個人個別的平均收入之 SQL 查詢指令。(3 分) (五) 要得到從 2008-05-01 到 2010-12-31 之間每個人個別的收入總額,請寫出對應之 SQL 查詢指令。(4 分) (六) 要查出收入總額大於 7000070000 的有那些人,請寫出對應之 SQL 查詢指令。(5 分)

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

這一題的完整詳解

核心觀念

本題綜合考查 SQL 的下列語法:

  • WHERE:先篩選符合條件的資料列。
  • 邏輯運算子 AND、OR。
  • 餘數函數 MOD:判斷數值是否為某數的倍數。
  • LIKE:進行字串樣式比對。
  • 聚合函數 AVG、SUM。
  • GROUP BY:依姓名分組計算。
  • HAVING:對分組後的聚合結果進行篩選。
  • BETWEEN:判斷日期是否落在包含起、迄日的範圍內。

(一)收入大於 22000 或小於 26000

解題方法

條件為:

income>22000或income<26000income > 22000 \quad \text{或} \quad income < 26000

SQL 中使用 OR 連接兩個條件。

答案

SELECT *
FROM PersonIncome
WHERE income > 22000
 OR income < 26000;

解題技巧

本題條件的涵蓋範圍很大:

  • 大於 2200022000 的資料符合。
  • 小於 2600026000 的資料也符合。
  • 只有收入恰為 2600026000 時不符合。

題目資料中沒有收入 2600026000 的紀錄,因此查詢結果為全部 1212 筆資料。


(二)收入金額為 7 的倍數

核心觀念

若一個數為 77 的倍數,除以 77 的餘數必須為 00:

income mod 7=0income \bmod 7 = 0

標準 SQL 可使用 MOD(income, 7)。

答案

SELECT *
FROM PersonIncome
WHERE MOD(income, 7) = 0;

符合的收入金額包括:

  • 21000=7×300021000 = 7 \times 3000
  • 28000=7×400028000 = 7 \times 4000

因此查出的資料為 C1002、C1004、C1010、C1011。

解題技巧

判斷倍數時不要使用除法後的商值,應直接判斷餘數是否為 00。部分資料庫可使用 % 表示餘數運算,例如:

WHERE income % 7 = 0

(三)名字中包含「大」

核心觀念

LIKE 用於字串樣式比對:

  • % 代表前後可有任意長度的字串。
  • '%大%' 代表字串中任意位置包含「大」。

答案

SELECT *
FROM PersonIncome
WHERE name LIKE '%大%';

符合的姓名為:

  • 王大陸
  • 李大喬

解題技巧

若要求「開頭為大」,使用 '大%';若要求「結尾為大」,使用 '%大';本題是「包含」,因此使用 '%大%'。


(四)每個人的平均收入

核心觀念

使用 AVG 計算平均值,並以 GROUP BY name 依姓名分組:

平均收入=該員工收入總和該員工收入筆數\text{平均收入}=\frac{\text{該員工收入總和}}{\text{該員工收入筆數}}

答案

SELECT name, AVG(income) AS average_income
FROM PersonIncome
GROUP BY name;

各人的平均收入為:

name平均收入
王大陸27000
李大喬24500
趙麗生24000
黃球聲26666.67
李曉喬23000

解題技巧

姓名必須出現在 GROUP BY 中,因為查詢同時選取了非聚合欄位 name 與聚合結果 AVG(income)。

「李大喬」與「李曉喬」是不同姓名,不可合併計算。


🔒

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

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

免費註冊

第 二 題20 分

關於物件導向資料庫,請回答下列問題: (一) 請闡述何謂物件導向資料庫?(3 分) (二) 有些資料類型適合儲存在物件導向資料庫,請舉出三種適合以物件導向資料庫儲存的資料類型。(3 分) (三) 關聯式資料模型有許多構成元素,其中表格(Table)、值組(Row/Tuple)、主鍵(Primary Key)、屬性(Attribute)、預儲程序(Stored Procedure),這些元素可以分別對應到物件導向資料庫的那些元素?(4 分) (四) 物件導向資料庫會運用到類別繼承的設計,請闡述繼承的規則。(5 分) (五) 物件導向資料模型也運用到屬性的概念,分成下列四種:基本屬性(Primitive Attribute)、複合屬性(Complex Attribute)、集合屬性(Set Attribute)、複合集合屬性(Complex Set Attribute)。請闡述這四種屬性的意涵。(5 分)

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

這一題的完整詳解

核心觀念

本題考查物件導向資料庫(Object-Oriented Database, OODB)的基本定義、適用資料類型、與關聯式資料模型的對應關係、類別繼承規則,以及物件導向資料模型中的屬性分類。

物件導向資料庫的核心精神,是將資料與操作資料的方法封裝在物件中,並以類別、物件識別、封裝、繼承、多型及複合物件等機制,表示現實世界中結構複雜的資料。


(一)物件導向資料庫的意義

物件導向資料庫是以物件導向資料模型為基礎,用來儲存物件及其間關係的資料庫系統。資料庫中的資料不是單純以表格與欄位表示,而是以「物件(Object)」為主要儲存單位。

一個物件通常包含:

  1. 狀態(State):由物件的屬性或資料成員表示。
  2. 行為(Behavior):由方法(Method)或操作(Operation)表示。
  3. 物件識別(Object Identity, OID):每一個物件具有獨立且唯一的識別,不完全依賴物件內容。
  4. 類別(Class):定義物件所具有的屬性與方法。
  5. 封裝(Encapsulation):將資料與操作資料的方法整合,並限制外部直接任意修改內部資料。
  6. 繼承與多型:子類別可以重用父類別的屬性與方法,並依需求重新定義方法。

因此,物件導向資料庫特別適合儲存具有複雜結構、階層關係、繼承關係及大量行為邏輯的資料。


(二)適合以物件導向資料庫儲存的資料類型

適合儲存在物件導向資料庫中的資料,通常具有資料結構複雜、彼此關聯密切、需要直接對應現實世界物件等特性。以下列舉三種:

1. 多媒體資料

例如:

  • 影像
  • 音訊
  • 影片
  • 動畫
  • 虛擬實境資料

這些資料通常具有大型二進位內容、不同格式及複雜描述資訊,以物件表示較容易保存其內容、格式及播放方法。

2. 電腦輔助設計資料

例如工程圖、建築模型、機械零件模型及三維模型。

一個設計物件可能包含幾何形狀、尺寸、材質、組成零件及設計操作,並具有零件組合及繼承關係,適合使用物件導向資料庫表示。

3. 地理資訊系統資料

例如:

  • 道路
  • 河流
  • 行政區域
  • 建築物
  • 地形
  • 地圖圖層

地理資料常同時包含空間形狀、位置、屬性及彼此拓撲關係,具有複合結構,適合以物件及物件間關係儲存。

其他合理例子包括科學研究資料、工程模擬資料、醫學影像、電信網路模型及文件資料等。


(三)關聯式資料模型與物件導向資料庫的對應

解題方法

可依照「資料結構、資料識別、資料內容及資料操作」四個角度進行對應:

  • 關聯式模型的表格是資料的結構單位。
  • 值組是表格中的一筆資料。
  • 主鍵用來辨識一筆資料。
  • 屬性是資料的個別欄位。
  • 預儲程序則是對資料執行操作的程序。

對應如下:

關聯式資料模型元素物件導向資料庫元素說明
表格(Table)類別(Class)表格定義資料結構;類別定義物件的屬性與方法
值組(Row/Tuple)物件(Object)一個值組代表一筆資料;一個物件代表一個具體實體
主鍵(Primary Key)物件識別(Object Identifier, OID)主鍵辨識值組;OID 辨識物件,且通常具有獨立性與唯一性
屬性(Attribute)物件屬性、資料成員(Property/Data Member)描述物件的狀態或特徵
預儲程序(Stored Procedure)方法、成員函式(Method/Member Function)定義物件可執行的行為與操作

重要差異

主鍵通常是由一個或多個屬性值組成,若資料內容改變,主鍵也可能受到影響;物件識別則是系統配置給物件的獨立識別,通常不因物件屬性變更而改變。

因此,不能只將 OID 簡化視為一般主鍵。較完整的說法是:主鍵在概念上可對應物件識別,但 OID 具有更強的物件獨立性。


(四)類別繼承的規則

核心觀念

繼承(Inheritance)是指子類別(Subclass)自動取得父類別(Superclass)所定義的屬性與方法,使類別之間形成階層關係。

其主要規則如下:

1. 子類別繼承父類別的屬性

子類別會取得父類別所定義的資料屬性,並可在此基礎上增加自己的屬性。

例如:

  • Employee 類別具有姓名、員工編號及薪資。
  • Manager 為 Employee 的子類別。
  • Manager 自動具有姓名、員工編號及薪資,並可增加部門及管理人數等屬性。

2. 子類別繼承父類別的方法

子類別可以使用父類別所定義的方法,不必重新撰寫相同程式碼,藉此達成程式碼重用。

3. 子類別可以增加新的屬性與方法

繼承並非限制子類別只能使用父類別內容。子類別可以定義父類別沒有的特有功能,以表達更具體的行為。

4. 子類別可以重新定義繼承而來的方法

若父類別的方法不完全符合子類別需求,子類別可以覆寫(Override)該方法,提供自己的實作方式。此規則是多型的重要基礎。

5. 繼承具有傳遞性

若 CC 繼承 BB,而 BB 又繼承 AA,則 CC 可取得 BB 從 AA 繼承的屬性與方法。形式上可表示為:

🔒

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

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

免費註冊

第 三 題20 分

資料庫正規化(Normalization)是很重要的資料塑模(Data Modeling)方法,請回答下列相關問題: (一) 請敘述正規化的目的。(3 分) (二) 請敘述第一正規化形式(1NF)的規則,並舉一個不符合 1NF 的資料表示例。(4 分) (三) 請敘述第二正規化形式(2NF)的規則,並舉一個不符合 2NF 的資料表示例。(5 分) (四) 請敘述第三正規化形式(3NF)的規則,並舉一個不符合 3NF 的資料表示例。(4 分) (五) 請敘述 BCNF(Boyce-Codd Normal Form)正規化形式的規則。(4 分)

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

這一題的完整詳解

核心觀念

本題考查資料庫正規化的階段性規則,以及功能相依(Functional Dependency, FD)與候選鍵(Candidate Key)的判斷。

正規化主要依序處理:

  1. 1NF:消除重複群組,使欄位值具原子性。
  2. 2NF:消除非主屬性對複合鍵的部分相依。
  3. 3NF:消除非主屬性之間的傳遞相依。
  4. BCNF:要求所有決定因素(Determinant)都必須是超鍵。

相關符號如下:

  • X→YX \rightarrow Y:XX 功能決定 YY。
  • 超鍵(Superkey):可唯一識別資料列的屬性集合。
  • 候選鍵:最小的超鍵。
  • 主屬性(Prime Attribute):至少出現在一個候選鍵中的屬性。
  • 非主屬性(Non-prime Attribute):不屬於任何候選鍵的屬性。

解題方法

判斷各正規化形式時,依下列順序切入:

  1. 先確認欄位是否為單一、不可再分的值,判斷是否符合 1NF。
  2. 再觀察候選鍵是否為複合鍵,檢查非主屬性是否只依賴複合鍵的一部分,判斷是否符合 2NF。
  3. 接著檢查是否存在「鍵決定非主屬性,該非主屬性再決定另一個非主屬性」的傳遞相依,判斷是否符合 3NF。
  4. 最後針對每一個非平凡功能相依,檢查左側決定因素是否為超鍵,判斷是否符合 BCNF。

(一)正規化的目的

正規化的目的,是透過合理分解資料表與建立適當的功能相依關係,使資料結構更一致、更容易維護,主要包括:

  1. 減少資料重複與儲存浪費 相同資料不必在多筆資料中重複儲存。

  2. 避免資料異常(Anomalies) 包括:

  • 插入異常(Insertion Anomaly):無法單獨新增某項資料,必須附帶不相關資料。
  • 更新異常(Update Anomaly):同一資料儲存多份,修改時容易發生不一致。
  • 刪除異常(Deletion Anomaly):刪除某筆資料時,連帶刪除原本仍需保留的資訊。
  1. 維護資料完整性與一致性 將具有不同意義的資料分開管理,降低資料矛盾的機會。

  2. 提高資料模型的清晰度與可維護性 使每個資料表集中描述單一主題,方便後續管理與擴充。

正規化並不保證完全消除所有資料重複,也不代表資料表越多越好;實務上仍須配合查詢效能,在必要時進行反正規化(Denormalization)。


(二)第一正規化形式 1NF

1NF 規則

資料表符合 1NF,通常須具備以下條件:

  1. 每個欄位只能存放一個值。
  2. 欄位值必須是不可再分的原子值(Atomic Value)。
  3. 不得在同一欄位中存放多個值、列表或重複群組。
  4. 每一筆資料列應可被唯一識別,通常會指定主鍵。

重點在於:一個資料格只能對應一個值。

不符合 1NF 的例子

學生資料表:

學號姓名電話
S001王小明0912-111111、0922-222222

「電話」欄位同時存放兩個電話號碼,不是單一原子值,因此不符合 1NF。

可改為:

學號姓名電話
S001王小明0912-111111
S001王小明0922-222222

若以學生與電話的組合識別資料,則可使用 (學號,電話)(學號, 電話) 作為候選鍵;也可將電話獨立拆成另一個資料表。

判斷技巧

看到下列形式,通常代表不符合 1NF:

  • 「國文、英文、數學」放在同一欄。
  • 「0912-111111、0922-222222」放在同一欄。
  • 欄位名稱出現「電話1、電話2、電話3」等重複群組。
  • 儲存以逗號分隔的清單。

(三)第二正規化形式 2NF

2NF 規則

資料表符合 2NF,必須同時符合:

  1. 已符合 1NF。
  2. 每一個非主屬性都必須完全功能相依於每一個候選鍵。

所謂完全功能相依,是指非主屬性依賴整個複合鍵,而不是只依賴複合鍵的一部分。

若候選鍵為 (A,B)(A,B),且存在:

A→CA \rightarrow C

其中 CC 為非主屬性,則 CC 只依賴複合鍵的一部分 AA,稱為部分功能相依(Partial Functional Dependency),因此不符合 2NF。

若候選鍵是單一屬性,則不會發生部分相依問題;只要符合 1NF,通常即可符合 2NF。

不符合 2NF 的例子

選課資料表:

學號課號學生姓名課程名稱成績
S001C101王小明資料庫85
S001C102王小明作業系統90

假設一名學生可以修習多門課,一門課也可以由多名學生修習,因此候選鍵為:

(學號,課號)(學號, 課號)

功能相依關係為:

學號→學生姓名學號 \rightarrow 學生姓名 課號→課程名稱課號 \rightarrow 課程名稱 (學號,課號)→成績(學號, 課號) \rightarrow 成績

其中:

  • 「學生姓名」只依賴「學號」。
  • 「課程名稱」只依賴「課號」。
  • 「成績」才依賴完整的 (學號,課號)(學號, 課號)。

因此,「學生姓名」與「課程名稱」對複合鍵產生部分相依,資料表不符合 2NF。

分解方式

可分解為三個資料表:

學生表:

學號學生姓名
S001王小明

課程表:

課號課程名稱
C101資料庫
C102作業系統

選課表:

🔒

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

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

免費註冊

第 四 題20 分

在多使用者多工的資料庫管理系統(Database Management System),多個交易(Transactions)在同步執行(Concurrently Performed)時,有可能發生資料讀取之難題(issue)。請回答下列相關問題: (一) 請敘述何謂交易?(4 分) (二) 請敘述何謂更新遺失(Lost Updates)的難題?(4 分) (三) 請敘述何謂讀到髒資料(Dirty Read)的難題?(4 分) (四) 請敘述何謂無法重複讀取(Non-Repeatable Read)難題?(4 分) (五) 同步控制方法(Concurrency Control Method)可用來解決前述的難題。其中有一種以鎖為基礎之協定(Lock-Based Protocol),請敘述其運作機制。(4 分)

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

這一題的完整詳解

核心觀念

本題考查資料庫交易的基本概念,以及多交易同步執行時的三種典型資料異常:

  1. 更新遺失(Lost Update)
  2. 讀到髒資料(Dirty Read)
  3. 無法重複讀取(Non-Repeatable Read)

解決方法以同步控制(Concurrency Control)為核心,常見作法包括鎖定協定(Lock-Based Protocol)。其目的在於維持交易的隔離性(Isolation),使同步執行的結果等價於某種交易循序執行的結果,亦即具備可串行化(Serializability)。

解題方法

本題各小題可依下列方式作答:

  • 先定義交易及其基本特性。
  • 再以兩個交易交錯執行的時間順序,說明各種資料異常如何發生。
  • 最後說明共享鎖、排他鎖與兩階段鎖定協定如何避免衝突。

(一)何謂交易?(4 分)

交易(Transaction)是資料庫中一組具有完整邏輯意義的操作單位,通常包含一個或多個讀取、寫入、更新或刪除資料的動作。

交易必須具備「全有或全無」的特性:

  • 交易成功完成時,所有操作均生效,並以 COMMIT 確認。
  • 交易執行失敗或發生錯誤時,所有已完成的操作均應取消,並以 ROLLBACK 回復至交易開始前的狀態。

交易通常以 ACID 四項特性描述:

  • 原子性(Atomicity):交易內的操作不可分割,全部成功或全部失敗。
  • 一致性(Consistency):交易執行前後,資料庫均須符合完整性限制。
  • 隔離性(Isolation):多個交易同步執行時,彼此不應產生不當干擾。
  • 持久性(Durability):交易一旦提交,結果即使發生系統故障仍應保留。

因此,交易可視為資料庫中一個完整且可復原的工作單位。


(二)更新遺失(Lost Updates)難題(4 分)

更新遺失是指兩個交易同時讀取同一筆資料,之後各自進行更新,後執行的更新覆蓋先前的更新,導致先前交易的結果遺失。

例如資料項目 AA 原值為 100100:

執行順序交易 T1T_1交易 T2T_2
1讀取 A=100A=100
2讀取 A=100A=100
3將 AA 更新為 110110
4將 AA 更新為 120120

最後資料庫中的 A=120A=120,交易 T1T_1 所做的更新 110110 被交易 T2T_2 覆蓋,因此 T1T_1 的更新遺失。

若兩個交易實際上分別增加 1010 與 2020,合理結果應為:

A=100+10+20=130A=100+10+20=130

但因兩交易均根據舊值 100100 計算,最後只留下 120120,這就是更新遺失。

判斷重點

只要出現下列情形,即屬於更新遺失:

  • 多個交易讀取同一筆資料。
  • 多個交易均進行寫入或更新。
  • 後寫入的交易覆蓋先前交易的結果。

(三)讀到髒資料(Dirty Read)難題(4 分)

讀到髒資料是指某交易讀取了另一交易尚未提交的資料,而該筆資料後來因另一交易回復或失敗而被取消,造成前一交易使用了實際上不存在的資料。

例如資料項目 AA 原值為 100100:

執行順序交易 T1T_1交易 T2T_2
1將 AA 更新為 150150
2讀取 A=150A=150
3發生錯誤,執行 ROLLBACK
4AA 回復為 100100

交易 T1T_1 讀到的 150150 是交易 T2T_2 尚未提交的暫時結果。由於 T2T_2 最後回復,150150 並未正式存在於資料庫中,因此 T1T_1 讀到的是髒資料。

可能造成的問題

  • 後續計算使用錯誤資料。
  • 產生報表或決策結果不正確。
  • 交易之間形成不一致的依賴關係。

判斷重點

「髒」的關鍵在於資料來源交易尚未 COMMIT。只要讀取未提交資料,即有 Dirty Read 問題。


(四)無法重複讀取(Non-Repeatable Read)難題(4 分)

無法重複讀取是指同一交易在不同時間對同一筆資料進行兩次讀取,兩次讀得的結果不同,原因是另一交易在兩次讀取之間已更新並提交該筆資料。

例如資料項目 AA 原值為 100100:

🔒

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

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

免費註冊

第 五 題20 分

資料庫領域有許多專門術語,請敘述下列術語之意涵: (一) 參與限制(Participation Constraint)(4 分) (二) 基數限制(Cardinality Constraint)(4 分) (三) View(4 分) (四) 外來鍵(Foreign Key)(4 分) (五) 叢集索引(Clustered Index)(4 分)

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

這一題的完整詳解

核心觀念

本題考查資料庫設計與實作中的五個基本術語:

  • ER 模型中的參與限制與基數限制
  • 關聯式資料庫中的 View 與外來鍵
  • 資料庫索引中的叢集索引

作答時應先寫出正式定義,再補充其功能、限制及簡單例子,才能完整取得各小題分數。

解題方法

(一) 參與限制(Participation Constraint)

參與限制用來表示:某一實體集合中的實體,是否「必須」參與某一關係集合。

可分為兩類:

  1. 全部參與(Total Participation)

實體集合中的每一個實體,都必須至少參與一次該關係。

例如:

  • 每一位員工都必須隸屬於某一個部門。
  • 員工實體集合對「隸屬」關係具有全部參與限制。

在 ER 圖中,通常以實體集合與關係集合之間的雙線表示。

  1. 部分參與(Partial Participation)

實體集合中的實體不一定要參與該關係,只有部分實體參與即可。

例如:

  • 部分員工可能尚未參加任何專案。
  • 員工實體集合對「參與專案」關係即可能是部分參與。

在 ER 圖中,通常以單線表示。

參與限制主要描述參與的「最低數量」:

  • 全部參與:最低參與數為 11
  • 部分參與:最低參與數為 00

因此,參與限制可用最小基數表示為:

最小基數∈{0,1}\text{最小基數} \in \{0,1\}

(二) 基數限制(Cardinality Constraint)

基數限制用來表示:一個實體透過某一關係,最多可以與另一個實體集合中的多少個實體發生關聯。

常見類型如下:

  1. 一對一(1:1)

一個部門最多由一位主管管理,一位主管最多管理一個部門。

  1. 一對多(1:N)

一個部門可以有許多員工,但一位員工只隸屬於一個部門。

  1. 多對一(N:1)

許多員工隸屬於同一個部門。

  1. 多對多(M:N)

一位學生可以修習多門課程,一門課程也可以由多位學生修習。

基數限制主要描述參與的「最大數量」:

  • 11:最多只能對應一個實體
  • NN 或 MM:最多可對應多個實體

若以最小、最大基數表示,常見形式包括:

  • (0,1)(0,1):可不參與,最多對應一個
  • (1,1)(1,1):必須參與,且只能對應一個
  • (0,N)(0,N):可不參與,最多對應多個
  • (1,N)(1,N):至少對應一個,且可對應多個

參與限制與基數限制的差異是:

項目主要回答的問題
參與限制實體是否必須參與關係?
基數限制實體最多可與多少個其他實體建立關係?

因此,參與限制偏重「最低參與要求」,基數限制偏重「最高對應數量」。

(三) View

View 是由一個查詢結果所定義的虛擬關聯表,通常稱為「檢視表」或「視觀表」。

View 本身通常不直接儲存完整資料,而是儲存其定義;使用者查詢 View 時,資料庫管理系統會依照定義,從基礎表格產生查詢結果。

例如:

View_Employee=SELECT EmployeeID,Name,DepartmentID FROM Employee\text{View\_Employee} = \text{SELECT } EmployeeID, Name, DepartmentID \text{ FROM Employee}

View 的主要功能如下:

  1. 簡化複雜查詢

將多表連結、篩選及彙總查詢包裝成一個虛擬表格,使用者不必每次重寫複雜 SQL。

  1. 提高資料安全性

只公開特定欄位或特定資料列,例如只顯示員工編號與姓名,不公開薪資欄位。

  1. 提供邏輯資料獨立性

基礎表格的結構變更時,只要 View 的介面維持不變,應用程式可減少修改。

  1. 提供不同使用者的資料觀點

不同部門可依權限使用不同 View,取得適合自身業務的資料內容。

View 的限制包括:

  • View 通常沒有獨立的實體資料儲存空間。
  • 具有聚合函數、GROUP BY、DISTINCT、複雜連結或計算欄位的 View,可能無法直接更新。
  • View 的資料內容會隨基礎表格資料變動而改變。

(四) 外來鍵(Foreign Key)

外來鍵是關聯式資料表中的一個欄位或一組欄位,其值用來參照另一個資料表的主鍵,或具有唯一性的候選鍵。

例如:

🔒

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

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

免費註冊

其他考古題