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% 正確,
- 輸出都會是錯或無用。
數據控制是一系列措施,用來提升資料品質:
- 輸入階段:用合適 UI 控制項、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 可能不存在)。
- 位置:通常在輸入時立即檢查,減少後續修正成本。
完整性檢查=必填欄位不可留空。
- 例:姓名、學號、聯絡電話通常必填。
- 常見做法:前端提示「必填 *」、後端再 double-check。
固定值檢查=輸入只可以是指定選項之一。
- 例:性別只接受
M/F;班別只接受 1A–6D。 - 最好配合:下拉式選單 / 單選按鈕,直接減少打字錯。
類型檢查=確保輸入屬於指定數據類型。
- 例:年齡必須是整數;成績可以是 0–100 的數字。
範圍檢查=數值必須在合理範圍內(例如 13–120)。
- 要寫清楚「包含不包含邊界」(例如 ≤ / <)。
- 範圍要符合現實:例如溫度、身高、分數等。
長度檢查=字元數目要合規。
- 例:香港電話 8 位數;學生編號固定 6 位。
格式檢查=要符合某種模式(pattern)。
- 例:電郵要包含
@同網域;日期要YYYY-MM-DD;HKID 要A123456(3)。 - 可以用正規表達式(regex)或內置控制項(date picker)幫手。
一致性檢查=兩個或以上欄位之間要合乎邏輯。
- 例:結束日期必須晚過開始日期。
- 例:出生年份 + 年齡要吻合;「是否學生」= 否 時,就不應該填「班別」。
唯一性檢查=某欄位值不可重覆。
- 例:學生編號、身份證、用戶名(username)。
- 做法:同數據庫 現有記錄比對;DBMS 可以設 UNIQUE constraint。
考試常以此出題給一個欄位情境,你要選擇 1 個或以上 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:給你一整串(含 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 | 姓名 |
|---|