2.1 數據分級(Data Hierarchy)
學習重點
- 數據由細到大:欄位 Field → 記錄 Record → 數據表 Table → 數據庫 Database。
- 欄位 = 一項數據屬性(例如:姓名、班別),並須設定數據類型及「可接受範圍」。
- 記錄 = 一個對象(例如:一位學生)的完整數據。
- 表 = 同一類對象的多筆記錄;通常用主關鍵碼(Primary Key)分辨每一筆記錄。
- 數據庫 = 多張相關的表集中管理(方便查詢、更新、避免重複)。
「數據分級(Data Hierarchy)」是一個由細到大的組織方法,目的是:
- 使數據結構清晰(可辨識每個值所屬的欄位、記錄及數據表)。
- 方便設計數據表、進行查詢(SQL/篩選)及統計。
- 減少混亂:避免大量文字在沒有規則的情況下混雜在一起。
欄(Field)/屬性(Attribute)用來儲存「某一種屬性」:
- 例如:
NAME、CLASS、SEX、MARK。 - 每個欄位均須定義數據類型:文字 / 數字 / 日期 / 布爾(是/否)…
- 通常還會加入「限制(constraints)」:例如電話必須 8 位、年齡 0–120。
記錄(Record / Row)是同一個對象(例如:一位學生)的所有欄位集合。
- 在表格中通常是一行(row)。
- 一筆記錄 = 多個欄位值組合,例如:
(015044, Peter Chan, M, 1A, 11)。 - 為了分辨每筆記錄,通常會用主關鍵碼 Primary Key(例如學號)。
數據表(Table)用來儲存「同一類對象」的多筆記錄:
- 例如:學生表、班別表、課室表。
- 表的欄(columns)定義固定,但可持續新增行(rows),即增加記錄。
- 表的設計重點:欄位名稱、類型、主關鍵碼、外鍵碼(關連其他表)。
數據庫(Database)是多張有關連的表集合,配合 DBMS 管理。
- 例如一間學校:學生表、班別表、教師表、課室表……
- 優點:集中管理、權限控制、備份、多人同時使用。
- 透過關連(relationships)可以進行更複雜的查詢,例如「找出某班所有男生」。
以「學生數據」為例:
- 欄位:姓名、班別、學號、電話…(每個都是一個欄位)
- 記錄:「陳大文」這位學生的所有欄位值(同一行)
- 表:全校所有學生的記錄(學生表)
- 數據庫:學生表 + 班別表 + 教師表 + 課室表 + …(互相關連)
- 「Name、Class、Mark」是哪一級?→ 欄位 Field
- 「某個學生的完整數據」是哪一級?→ 記錄 Record
- 「全班學生數據」是哪一級?→ 數據表 Table
- 「一間學校的所有數據(學生+班別+課室)」是哪一級?→ 數據庫 Database
以學生數據為例,把數據由小至大劃分為幾個層級:欄位 → 記錄 → 數據表 → 數據庫。
欄位 field
儲存某一種屬性,例如:學生姓名、性別、班別、成績。
每個欄位都有指定數據類型(數字 / 文字)。
記錄 / 列 record
同一個學生的所有欄位組合成一行,稱為一筆記錄。
例如:某位學生的完整數據數據表 table
儲存同一類事物的多筆記錄,如「學生數據表」、「課室數據表」。
常見於 DBMS 界面中數據庫 database
由多張關連數據表組成,例如同一所學校的學生、班級、課室等數據,方便集中管理。
整個系統的「數據儲存庫」可嘗試繪畫自己學校的「數據分級」:由一名學生開始,逐級延伸至整個學校的數據庫。
2.2 數據控制(Data Control)與 GIGO
學習重點
- GIGO:輸入垃圾 → 輸出垃圾;即使電腦計算準確,輸出結果仍可能無用。
- 數據控制的目標:確保輸入、傳輸及儲存的數據準確、完整且一致。
- 三類常見錯誤:數據來源錯誤、轉錄錯誤、換位(轉置)錯誤。
- 預防方法通常是「限制輸入(控制項)+ Validation + Verification」。
- 考試通常要求分類錯誤類型或解釋減少錯誤的方法。
GIGO(Garbage In, Garbage Out)意思是:
- 如果輸入數據本身有問題(錯誤、遺漏或格式混亂),
- 即使電腦運算100% 正確,
- 輸出仍會錯誤或無用。
數據控制是一系列措施,用來提升數據品質:
- 輸入階段:使用合適的用戶界面控制項、Validation、Verification 減少錯誤。
- 傳輸或儲存階段:使用奇偶檢測、檢查數位、權限控制及備份等措施。
- 處理階段:避免因數據格式混亂而導致統計或排序出錯。
數據來源錯誤 = 最初收集的數據已經有誤:
- 例:病人誤填電郵、用戶隨意填寫電話號碼或問卷答案。
- 即使輸入過程非常準確,也只是準確地輸入了錯誤內容。
常見減少方法:
- 表格指示清晰、例子清楚(例如顯示格式)。
- 使用 Validation 阻止明顯不合理的輸入(例如電話不足 8 位)。
- 高風險數據(如銀行交易數據)可加入 Verification(例如雙重輸入)。
轉錄錯誤 = 把數據由一種媒介轉移至另一種媒介時出錯:
- 例:由紙本輸入電腦時出錯;OCR 將
O認成0。 - 特點:原始資料可能是正確,但輸入過程出錯。
減少方法:
- Verification:雙重輸入、校對(proofreading)。
- 使用選項式輸入(下拉式選單或單選按鈕)代替手動輸入,減少自由輸入。
- 使用 check digit(例如 HKID)偵測部分錯誤。
換位錯誤 = 數字次序顛倒:
- 例:把
51誤輸入為15;把81234567誤輸入為81234576。 - 肉眼通常不易立即發現,但對電腦而言是完全不同的值。
- 題目描述「原始數據本身有誤」→ 數據來源錯誤。
- 題目描述「抄寫/輸入/辨認」→ 轉錄錯誤。
- 題目描述「數字位置對調」→ 換位(轉置)錯誤。
- Validation:檢查輸入「是否合理」(格式/範圍/類型…),阻止明顯錯誤。
- Verification:檢查輸入「與原始資料是否一致」(例如雙重輸入)。
- 兩者都是 Data control 的一部分,用來減少 GIGO。
如果輸入的數據本身有問題,即使電腦計算再準確,輸出結果仍然不可靠。
這種情況為 無用輸入、無用輸出(GIGO:Garbage in, Garbage out)。
無用輸入的三種常見錯誤
- 數據來源錯誤:最初收集的數據已經有誤,例如病人誤填電郵、用戶隨意填寫電話號碼。
- 轉錄錯誤:由紙本抄寫入電腦時出現輸入錯誤,或者 OCR 把「O」辨認成「0」。
- 換位錯誤(轉置錯誤):把數字位置對調,例如將 51 誤輸入為 15。
2.2 數據有效性檢驗(Validation)
學習重點
- Validation 是檢查輸入值「可能合理」,但不保證一定真。
- 常見 6 種:完整性、固定值、類型、範圍、長度、格式。
- 再加兩個重要:一致性檢查(跨欄位)、唯一性檢查(不可重複)。
- 可同時使用多種檢查:例如電話 = 類型 + 長度(+ 格式)。
- 考試要求能辨別不同情境應使用哪些檢查。
Validation 用來檢查輸入數據是否「符合規則 / 合理範圍」。
- 目的:阻止明顯不合理的輸入(例如年齡 999)。
- 限制:即使通過 validation,亦不代表內容真實或正確(例如電話 12345678 可能不存在)。
- 位置:通常在輸入時立即檢查,減少後續修正成本。
完整性檢查=必填欄位不可留空。
- 例:姓名、學號、聯絡電話通常必填。
- 常見做法:前端提示「必填 *」、後端再次檢查。
固定值檢查=輸入只可為指定選項之一。
- 例:性別只接受
M/F;班別只接受 1A–6D。 - 最好配合:下拉式選單 / 單選按鈕,直接減少輸入錯誤。
類型檢查=確保輸入屬於指定數據類型。
- 例:年齡必須是整數;成績可以是 0–100 的數字。
範圍檢查=數值必須在合理範圍內(例如 13–120)。
- 須說明「是否包含邊界」(例如 ≤ / <)。
- 範圍須符合實際情況:例如溫度、身高、分數等。
長度檢查=字元數目要合規。
- 例:香港電話 8 位數;學生編號固定 6 位。
格式檢查=須符合某種模式(pattern)。
- 例:電郵須包含
@及網域名稱;日期要YYYY-MM-DD;HKID 要A123456(3)。 - 可以用正規表達式(regex)或內置控制項(date picker)提供協助。
一致性檢查=兩個或以上欄位之間要合乎邏輯。
- 例:結束日期必須晚於開始日期。
- 例:出生年份與年齡須一致;「是否學生」= 否 時,便不應填寫「班別」。
唯一性檢查=某欄位值不可重複。
- 例:學生編號、身份證、用戶名(username)。
- 做法:與數據庫現有記錄比對;DBMS 可以設 UNIQUE constraint。
考試常提供一個欄位情境,要求選擇一種或以上的 validation 方法:
- 香港電話:Type(數字)+ Length(8 位)(+ Format)
- 電郵:Completeness + Format
- 性別:Fixed value(M/F)
- 年齡:Type + Range
- 活動日期:Format(date picker)+ Consistency(開始 < 結束)
- 帳戶名稱:Completeness + Unique(不可重複)
- Validation:檢查「可能合理」(規則/格式/範圍)
- Verification:檢查「與原始資料一致」(雙重輸入/校對)
數據有效性檢驗是數據控制的一部分,用來檢查輸入值是否「合理」。雖然不能保證一定正確,但可以阻止明顯不合理的輸入。
6 種常見檢查(可互動)
一致性檢查(兩個欄位之間要合乎邏輯)
例子:活動的結束日期必須晚於開始日期。
唯一性檢查(Unique Check)
某些欄位不可以重複,例如學生編號、登入帳戶名稱。
假設現有帳戶:ada01、cs_girl、itprefect。
2.4 用戶界面控制項示範
學習重點
- 用戶界面(UI)控制項可以限制輸入,從源頭減少錯誤。
- Textbox 最具彈性,但最容易出現格式不一致;選項式輸入(radio/select/date)更容易進行有效性檢驗及統計。
- Radio = 單選;Checkbox / Listbox = 多選;Select = 從清單選擇。
- Date/Time/Range/Number 等控制項本身已提供部分格式或範圍限制。
- 考試要求能解釋「為何某個控制項比 textbox 更合適」。
選擇合適的輸入控制項(UI controls)可以:
- 直接限制用戶可以輸入的值(例如只可選 M/F)。
- 減少鍵盤輸入 → 減少轉錄錯誤。
- 使數據更一致,方便排序、統計、查詢。
- 用戶體驗更佳(較少出現「輸入錯誤」提示)。
Textbox(文字框)的優點是彈性大,但缺點亦最明顯:
- 相同意思可以有多種寫法:
Mon/星期一/週一。 - 格式不一致會使電腦難以進行有效性檢驗、統計及排序(例如時間
15:30vs3:30pm)。 - 更依賴後續 validation。
- Radio(單選):只可選擇一個(例如:興趣班類型)。
- Checkbox(複選):可以選擇多個(例如:可出席日子)。
作答時可寫:
- Radio 可以避免用戶同時選兩個互相矛盾的選項。
- Checkbox 適合「可以同時成立」的選項。
- Date picker:直接選擇日曆,輸出格式一致(例如 YYYY-MM-DD)。
- Time picker:直接選擇時間,避免
15:30 pm這種混亂寫法。 - 同時可以配合一致性檢查(開始日期 < 結束日期)。
- Range slider:適合評分(1–5)、程度(低/中/高)。
- Number stepper:適合人數、數量,並可設定最小/最大值。
- Select(下拉):固定選項,節省畫面空間。
- Listbox(列表,可多選):同時顯示多個選項,適合多選。
- Datalist:提供建議清單,但仍容許自訂輸入(彈性較大)。
Switch(開關)適合「是 / 否」:
- 例:是否與同學一同報名?是否同意條款?
- 優點:輸入值清晰(true/false),可避免輸入「可能」等含糊內容。
- Color picker:顏色值一致(#RRGGBB)。
- File upload:提交文件(同意書或作品),並須注意檔案大小及格式限制。
- URL input:可初步檢查網址格式(https://...)。
- Textarea:自由描述(不易進行有效性檢驗,但可用 length check 限制內容過長)。
- 例子 2 用 radio/checkbox/select/date/time,令輸入值一致。
- 減少自由文字輸入 → 減少轉錄錯誤及格式錯誤。
- 後續更容易進行統計(例如計算有多少人選擇籃球)。
例子 1 和例子 2 都是「興趣班報名」表格,用來收集同一組數據:興趣、可出席日子、日期、時間、興趣程度、交通安排。
例子 1 全部使用文字框(textbox),例子 2 則使用多種圖像化控制項;例子 3 再展示其他常見輸入元件。
例子 1:全部使用文字框輸入興趣班報名數據
所有數據均須以鍵盤輸入:
優點是彈性較大,但學生可能採用不同寫法,例如「Mon」、「星期一」、「15:30 pm」,
之後要自動進行有效性檢驗(validation)或統計時會相當困難。
例子 2:使用圖像化控制項輸入同一組興趣班報名數據
同一組數據,改用多種輸入元件限制輸入方式:
興趣(單選按鈕 Radio):只可選擇一項活動
可出席日子(複選框 Checkbox):可以多選
首選日期(Date picker):
首選時間(Time picker):
興趣程度(Range slider):
交通安排(Select 下拉式選單):
是否與同學一同報名(Switch 開關):
這種設計可以直接限制輸入值(例如只可選「週一 / 週三 / 週五」),有利於進行有效性檢驗、統計及排序。
例子 3:更多輸入元件(延伸示例)
以下例子主要展示其他 HTML 控制項,用作與文字框作比較:
Number spinner(Stepper):預計人數
Color picker:為小組選擇代表顏色
Listbox(多選):想報讀的項目
Chips / Tags:以標籤方式選擇語言
Textarea:補充說明
File upload:上載家長同意書(範例)
URL:個人作品集網址
Datalist:就讀校舍(可輸入或選擇)
簡單驗證碼(我不是機械人)
2.2 檢查數位:香港身份證號碼
學習重點
- 檢查數位(check digit)是額外加入的一個數位,用來偵測輸入錯誤(特別是換位或誤輸)。
- 香港身份證格式:1 或 2 個字母 + 6 位數字 + (檢查數位);檢查數位可能是
0-9或A。 - 計算重點:字母轉數值(A=10…Z=35;單字母前方須補一個「空格位」=36),再乘權重 9→2,最後加入檢查數位,使總和可被 11 整除。
- 考試最容易出錯:單字母前方須補空格位、權重次序、10→A、11→0。
- Check digit 主要是偵測(detect)錯誤,未必能糾正(correct)。
檢查數位(Check digit)是附加於編號末端的數位,用來:
- 偵測輸入錯誤(例如某一位數字有誤)
- 偵測換位(轉置)錯誤(例如 51 ↔ 15)
- 提升數據可靠性(輸入時可立即發現可能有誤)
- 格式:1 或 2 個英文字母 + 6 位數字 + (檢查數位)
- 檢查數位可以是:
0–9或A
- A–Z → 10–35(A=10,B=11,…,Z=35)
- 如果只有 1 個字母,最前方須補一個空格位,數值 = 36
由左到右乘權重:
- 首 8 個字元(空格/字母/6 位數字)乘:9, 8, 7, 6, 5, 4, 3, 2
- 最後檢查數位乘:1
步驟:
- 將字母轉數值(單字母加空格 36)。
- 把每一位乘以相應權重,將乘積相加得到 S。
- 計 S mod 11。
- 檢查數位 = 11 − (S mod 11)
- 如果結果 = 10 → 用 A;結果 = 11 → 用 0
因為只有 1 個字母,所以當作:[空格, A, 1, 2, 3, 4, 5, 6]
可以偵測:
- 單一數位輸入錯誤(例如把 4 誤輸入為 9)
- 部分換位錯誤(例如相鄰位對調)
限制:
- 不是所有換位都一定偵測到(視乎算法)。
- 通常只是「detect」,未必可以 100%「correct」。
- 如果原始數據本身有誤(數據來源錯誤),check digit 亦無法偵測。
- 單字母:前方必須補上數值為 36 的空格位(即變成 2 個「字母位」計算)。
- 權重:由 9 到 2,檢查數位的權重為 1。
- 10 → A;11 → 0(容易把兩者寫反)。
檢查數位(check digit)是一種特別設計的「額外數位」,用來檢查前面的數字是否輸入錯誤。以香港身份證號碼為例。
- 如果只有一個英文字母,前面會當作有一個「空格」,計算時以數值 36 代替。
- 英文字母 A–Z 會轉換為數字 10–35。
- 由最左邊開始乘以權重 9, 8, 7, ..., 2,最後檢查數位乘 1。
- 把所有乘積相加,若總和能被 11 整除(餘數為 0),代表號碼有效。
- 檢查數位 = 11 − (總和 mod 11),若結果為 10 用字母 A,結果為 11 則用 0。
2.2 奇偶檢測(Parity Check)
學習重點
- Parity check 使用1 個 parity bit進行簡單錯誤偵測。
- 偶數檢測:整組 bits(包括 parity bit)中
1的數目要是偶數;奇數檢測亦同。 - 計算 parity bit:先數 data bits 中有多少個 1,再選擇 0 或 1,使總數成為偶數或奇數。
- 可以偵測單一位出錯(或任何「奇數個」bit 出錯),但偵測不到偶數個 bit 同時出錯。
- 考試題:計算 parity bit/判斷一組 bits 有效或無效。
電腦以二進制傳送/儲存數據時,可以加一個奇偶檢驗位(parity bit):
- 目的:偵測傳送途中是否有 bits 被改變(error detection)。
- 特色:簡單、成本低,但偵測能力有限。
- 偶數檢測(Even parity):整組 bits(data + parity)中
1的總數要是偶數。 - 奇數檢測(Odd parity):整組 bits(data + parity)中
1的總數要是奇數。
- 先數出 data bits 中有多少個
1。 - 根據模式(even/odd)決定 parity bit 是 0 或 1。
data bits:1011001
1的數量 = 4(偶數)- Even parity:已經是偶數 → parity bit = 0
- Odd parity:須使總數成為奇數 → parity bit = 1
偵測得到:
- 任何奇數個 bit 翻轉(例如 1 個 bit 由 0→1)會令奇偶性改變。
偵測不到:
- 偶數個 bit 同時出錯(例如 2 個 bit 一起翻轉),奇偶性可能保持不變。
- Parity 只能指出「有錯誤」,不能指出哪一位出錯。
- 題型 A:提供 data bits 與 even/odd 模式,問 parity bit 是多少。
- 題型 B:提供一整串 bits(含 parity),問「有效/無效」。
- 題型 C:解釋 parity 可以偵測甚麼錯誤、限制是甚麼。
電腦內部以二進制儲存數據,可以在最後加上一個「奇偶檢驗位 parity bit」以檢查傳送途中是否出錯。
- 奇數檢測:整組二進制中「1」的總數要是奇數。
- 偶數檢測:整組二進制中「1」的總數要是偶數。
步驟:先選擇「奇數檢測 / 偶數檢測」,再點擊每一個 bit(0/1)改變量值,看看目前這一組數據是否有效。
小測:為輸入場景選擇合適的有效性檢驗(可多選)
根據題目描述,選出適合的有效性檢驗方法,可以同時選擇多於一種, 然後按「檢查答案」。
2.2 數據校驗(Verification)
學習重點
- Verification 用來檢查輸入數據是否與原始資料一致(準確性),不同於 Validation(合理性)。
- 三大方法:輸入兩次、雙重輸入(double entry)、校對(proofreading)。
- Verification 主要用來偵測轉錄/抄寫錯誤;如果原始資料本身有誤,verification 亦無法修正。
- 情境風險越高(例如銀行或醫療),越需要 verification,但所需成本及時間亦更高。
- 考試要求能按情境選擇合適方法,並解釋原因。
Verification(數據校驗)用來檢查「輸入數據」是否與「原始資料」一致:
- Validation:是否合理(格式/範圍/類型)
- Verification:是否與原始資料一致
做法:由同一人輸入兩次,再比對是否相同。
- 例:設定密碼、輸入電郵地址(再次輸入)。
- 優點:簡單、即時、成本低。
- 限制:如果用戶兩次均輸入相同的錯誤內容(例如兩次均輸入錯誤電郵),仍可能通過。
做法:同一份原始資料由不同人(或不同時間)輸入兩次,再由系統比較。
- 適用:高準確要求(銀行交易、考試成績、醫療數據)。
- 優點:可大幅減少轉錄錯誤。
- 缺點:成本較高,所需時間或人力約增加一倍。
做法:把「原始資料」與「輸入結果」對照,找出差異。
- 可以一人讀原始資料,另一人對照電腦畫面。
- 亦可直接在螢幕上顯示兩份內容作比對。
- 優點:不需要重複輸入,成本中等。
- 缺點:仍然依賴人眼,容易疲勞或遺漏差異。
主要偵測到:
- 抄寫/輸入過程出錯(轉錄錯誤)
- 部分換位錯誤(如有 check digit 亦可提供協助)
未必偵測到:
- 原始資料本身有誤(數據來源錯誤)
- 兩次輸入同樣錯(方法 1 常見)
- 設定密碼:輸入兩次
- 銀行轉帳或醫療紀錄:雙重輸入(double entry)
- 把紙本資料輸入電腦:校對(proofreading)或 double entry
Validation 用來檢查輸入是否「可能合理」,Verification 則用來檢查輸入是否與原始資料一致。三種常用方法:
1️⃣ 輸入數據兩次(例如設定密碼)
2️⃣ 雙重數據輸入(Double Entry)
系統先有一組原始數據,再由不同人或同一人重新輸入一次,然後比較是否出錯。
模擬例子:系統的原始數據為 A17-9F。
3️⃣ 校對數據(Proofreading)
一個人讀出或顯示原始資料,另一個人對照輸入電腦的數據,檢查是否有錯誤。
下方有一行「原始資料」與「輸入結果」,請選出有誤的欄位:
| 姓名 | 班別 | 電話 | |
|---|---|---|---|
| 原始資料 | CHAN TAI MAN | 2B | 91234567 |
| 輸入結果 | CHAN TAI MAN | 2B | 92134567 |
2.3 數據庫管理系統的功能(DBMS)
學習重點
- DBMS(Database Management System)用來管理數據庫:建立、儲存、提取、排序、索引。
- 設計數據表(組織)須定義:欄位、數據類型、主關鍵碼/外鍵碼、限制(constraints)。
- 查詢(retrieve)可以用 SQL(SELECT…WHERE…),排序用 ORDER BY。
- 索引(Index)可以加快搜尋,但會佔用較多儲存空間,更新時亦更慢。
- 考試:能說明功能並舉例(以學生表為例較容易說明)。
DBMS(Database Management System)是用來建立及管理數據庫的軟件/系統。
- 提供圖形界面或 SQL 讓用戶新增、修改或查詢數據。
- 協助用戶管理多張表之間的關係、權限、備份等。
DBMS 協助設計數據結構:
- 定義欄位(Field)及數據類型(Text / Number / Date…)。
- 設定主關鍵碼(Primary Key)以唯一識別記錄。
- 需要時設定外鍵碼(Foreign Key)建立表與表之間關連。
- 加入 constraints(例如 unique、not null)提升數據品質。
- 新增記錄:INSERT(或用表格界面新增一行)。
- 更新記錄:UPDATE(例如更改班別)。
- 刪除記錄:DELETE(例如移除重複數據)。
用 SQL 或圖形界面篩選數據:
- WHERE:加條件(例如只顯示女生)。
- 可以配合排序、分組、計算統計(進階)。
排序是將查詢結果按欄位排列:
- ASC = 由小到大(A→Z / 0→9);DESC = 由大到小。
- 常見:按姓名、學號、成績排序。
索引(Index)是為某些常用欄位建立「快速查找結構」。
- 優點:搜尋更快(尤其數據量較大時)。
- 代價:佔用較多儲存空間;新增或更新數據時要同步更新 index。
- Organise:設計欄位 STD/NAME/SEX/CLASS/CNO
- Store:新增一筆學生記錄
- Retrieve:只顯示男生/女生
- Sort:按 NAME 排序
- Index:為 NAME 建 index 加快搜尋某學生
- 解釋 DBMS 功能(organise/store/retrieve/sort/index)。
- 提供情境,詢問哪項功能最合適。
- 寫簡單 SQL(SELECT…WHERE…ORDER BY…)。
以學生數據表為例,說明 DBMS 如何協助「組織、儲存、提取、排序及建立索引」。
DBMS 的主要功能
- 組織:根據欄位類型設計表格,例如 STD(學號)、NAME、SEX、CLASS、CNO。
- 儲存:用 SQL INSERT 或圖形界面新增記錄。
- 提取:用 SQL SELECT 或圖形界面篩選;可以按條件,例如只顯示男生。
- 排序:ORDER BY 姓名或學號。
- 索引:為常用欄位(如姓名)建立索引,加快搜尋速度。
迷你查詢示例
以下是一個簡化的「學生數據表」,可嘗試按性別篩選:
| STD | NAME | SEX | CLASS | CNO |
|---|---|---|---|---|
| 015044 | Peter Chan | M | 1A | 11 |
| 015047 | Roberta Barrera | F | 1A | 8 |
| 015048 | Kalvin Kearney | M | 1A | 6 |
| 015049 | Liliana Sykes | F | 1A | 10 |
SELECT * FROM STUDENT WHERE SEX = 'F';2.4 檔案存取方式:順序存取 vs 直接存取
學習重點
- 兩種存取方式:順序存取(Sequential Access)與直接存取(Direct/Random Access)。
- 順序存取類似磁帶:如要尋找位置較後的記錄,必須依次讀取。
- 直接存取類似硬碟或 USB 裝置:有地址(address)便可直接存取某筆記錄。
- 考試重點:能按情境選擇方法(批處理 vs 即時查詢)。
- 關鍵字:Sequential = must read previous records;Direct = access by address.
檔案存取方式(File access method)描述電腦如何由儲存媒體讀取記錄:
- 尋找一筆記錄時,能否直接存取其位置?
- 還是需要由檔案開首依次讀取?
順序存取特點:
- 記錄按固定次序排列,只可以由前到後(或有限度向後)逐步讀取。
- 尋找第 100 筆,通常要先讀過前 99 筆。
- 適合:成批處理(batch processing)、完整掃描、備份。
直接存取特點:
- 每筆記錄有「位址/地址(address)」。
- 可直接存取指定位置,無須逐筆掃描。
- 適合:數據庫查詢、即時系統(interactive systems)。
- 尋找特定記錄:順序存取較慢(須依次讀取);直接存取較快(可直接存取指定地址)。
- 掃描全檔:順序存取較為直接;直接存取亦可完成,但其優勢主要在於定位個別記錄。
- 成本/實作:順序結構簡單;直接需要地址/索引支援。
- 「每日夜間成批處理全校學生名單」→ 順序存取
- 「即時按學號查詢某個學生的記錄」→ 直接存取
- 「磁帶備份數據」→ 通常 順序存取
- 「硬碟數據庫 」→ 通常 直接存取
直接存取通常會配合索引:
- 索引類似「目錄」,先找到地址,再直接讀取記錄。
- 數據庫使用 index 可以加快查詢。
兩種存取方式:順序存取(如磁帶)及直接存取(如硬碟、USB、光碟)。
1️⃣ 順序存取(Sequential Access)小遊戲
如要在「磁帶」內找出學號 = 7 的記錄,只能用「向前」、「向後」逐步尋找:
留意:存取位置較後的記錄時,順序存取所需時間通常較長。
2️⃣ 直接存取(Direct Access)示例
直接存取媒體(硬碟等)可以直接使用「位址」存取一筆記錄,無須逐筆掃描。
在下表中直接點擊任何一行記錄,即可顯示其內容:
| 位置(位址) | 學生 STD | 姓名 |
|---|
總結 課文腦圖總結
重點:
- 腦圖把全課重組為五個問題:如何組織數據、維持數據品質、控制輸入、偵測錯誤,以及管理與存取數據。
- 可使用右上角「樹狀圖導覽」快速前往節點,或開啟「聚焦模式」以動畫移動及放大所選概念。
- 學生可新增、編輯、刪除或拖動節點,並把個人版本匯出為
.ictmap檔案。
先由置中的根課題開始,再沿連線由上向下閱讀主題、概念、比較、例子及常見錯誤。可在樹狀圖導覽點擊任一項,畫布會以動畫前往並聚焦相應節點。
可新增、編輯、刪除或拖動節點以改變父子關係。修改會暫存在目前瀏覽器;完成後應匯出 .ictmap 作備份,日後可重新匯入。
先由欄、記錄、數據表及數據庫建立結構,再按錯誤來源和發生階段選擇控制;其後比較輸入控制、錯誤偵測、DBMS 及存取策略如何互相補足。
以下腦圖不是按原網頁章節排列,而是沿數據由建立結構、輸入、檢查、儲存到提取的生命週期重新分類。閱讀時可先辨認風險,再比較預防、偵測及管理方法。
節點說明保留全部課文概念,並以跨概念連線顯示欄位限制與有效性檢驗、輸入錯誤與數據校驗、傳輸錯誤與奇偶檢測,以及索引與直接存取之間的關係。