檔案與數據組織
基礎檔案由記錄組成,記錄由欄組成,鍵欄用來唯一識別每條記錄。順序檔按鍵值依次存放,適合整批處理;隨機檔按鍵值直接定址,適合即時回應。比較兩種檔案的搜尋效率,是選擇數據組織方式的關鍵。
- 檔案由記錄組成,記錄由欄組成,鍵欄唯一識別每條記錄
- 順序檔按鍵值依次存放,線性檢索平均比較記錄數一半,適合整批處理
- 隨機檔由鍵值直接定址,一次存取命中,適合即時回應系統
文體小知識:科技知識說明文——講解檔案由記錄和欄組成的結構,順序檔與隨機檔的差異,以及線性檢索與直接存取的效率比較。
§課文原文 Passage
1檔案是相關數據的集合,內部由記錄組成,每條記錄描述一個對象,再由欄組成。例如圖書館的書目檔案中,每本書是一條記錄,記錄內有書名、作者、索書號等欄。各欄之中必須有一個鍵欄,其值在檔案內不會重複,用來唯一識別每條記錄,例如索書號;鍵值重複會令系統無法確定要讀寫哪條記錄。
2順序檔把記錄按鍵值大小依次存放,插入新記錄時要保持次序。讀取時由檔案開頭逐條掃描,直到找到目標為止,這種方法稱為線性檢索。檔案越大,搜尋越慢:一千條記錄平均要比較五百次,十萬條便要五萬次。順序檔結構簡單、儲存成本低,適合定期整批處理的場合,例如每月出糧的薪酬檔案。
3隨機檔的記錄存放位置由鍵值經公式直接算出,系統可以按地址一步到位讀寫,這種方式稱為直接存取。無論檔案有一千條還是十萬條記錄,搜尋通常只需一至數次存取,效率遠勝順序檔。隨機檔適合需要即時回應的系統,例如銀行櫃員機查詢戶口結餘、戲院即時售票,代價是地址計算和空間管理較複雜。
4兩種檔案各有適用場景。資料每次都要全體處理、毋須即時回應時,順序檔省事省成本;資料要隨時按鍵查詢或修改個別記錄時,隨機檔才夠快。實務上系統常兩者並用:日常交易先累積在交易檔,定期把交易檔與儲存長期數據的主檔合併更新,既保住即時回應,又兼顧整批處理的成本效益。
1重點摘要 Summary
檔案由記錄組成,記錄由欄組成,鍵欄用來唯一識別每條記錄。順序檔按鍵值依次存放,適合整批處理;隨機檔按鍵值直接定址,適合即時回應。比較兩種檔案的搜尋效率,是選擇數據組織方式的關鍵。
2生字卡 Vocabulary
以一的名字稱儲存的相關記錄集合。
由一組相關欄組成、描述一個對象的數據,例如書目檔案中的一本書。
記錄中的單一數據項目,例如書名或電話號碼。
取值在檔案內不重複、用來唯一識別每條記錄的欄。
唯一識別每條記錄的鍵值,例如學號或索書號。
記錄按鍵值依次存放、讀取須由檔案開頭逐條掃描的檔案。
記錄位置由鍵值經公式算出、可以直接存取的檔案。
由檔案開頭逐條比較直至找到目標的搜尋方法,平均比較記錄數一半。
由鍵值直接算出儲存地址、無須掃描其他記錄即可讀寫的方式。
儲存較長期數據的主檔案,定期以交易檔的記錄合併更新。
3逐步講解 Steps
- 第一步:檔案、記錄與欄檔案由記錄組成,記錄由欄組成,層層結構必須分清。舉個例子:學校的學生檔案內,每名學生是一條記錄,記錄分學號、姓名、班別、出生日期等欄;全檔數千條記錄格式一致。答題時準確使用檔案、記錄、欄三個層次的術語,是描述數據組織的基本功,資料題往往要求舉例說明這三層關係;萬一混淆層次,答案便會失準,動筆前宜先列好結構。
- 第二步:鍵欄的作用每個檔案必須有鍵欄,其值不會重複,用來唯一識別記錄。舉個例子:同校可以有兩個陳大文,但學號各不相同;圖書館以索書號作鍵,電力公司以客戶編號作鍵。若鍵值重複,系統便無法確定要讀寫哪條記錄,資料會互相覆蓋,所以設計檔案的第一步就是選定合適而唯一的鍵欄;選鍵的原則是唯一而穩定,例如學號不會因改名而改變。
- 第三步:順序檔的原理順序檔把記錄按鍵值由小至大依次存放,讀取要由檔案開頭逐條掃描,即線性檢索。舉個例子:在按學號排序的一千條記錄中找某生,運氣好第一條就中,運氣差要比較一千次,平均五百次。插入新記錄還要把後面的記錄依次移動;順序檔勝在結構簡單、成本低,敗在個別搜尋慢;答題計算平均比較次數時,緊記寫出除以二的算式。
- 第四步:隨機檔的原理隨機檔以公式把鍵值換算成儲存地址,系統直接到該地址讀寫,稱為直接存取。舉個例子:戲院售票系統以場次編號加座位號計算地址,無論全院有一百還是一千個座位,一次存取就能命中;銀行系統按戶口號碼定位,客戶查詢結餘毋須等待。隨機檔的代價是地址計算和空間管理較複雜;設計得宜的系統能兼得速度與空間利用率,這是結構設計的功夫。
- 第五步:搜尋效率比較比較搜尋效率要看比較次數與檔案大小的關係。線性檢索的比較次數與記錄數成正比,十萬條記錄平均要五萬次;隨機檔直接存取通常一至數次,幾乎不受檔案大小影響。舉個例子:每月處理一次的薪酬檔案用順序檔已足夠;以秒回應的提款機必須用隨機檔,否則客戶要排長龍等候;答題時宜先列式計算,再以場景說明數字背後的意義。
- 第六步:整批處理與主檔更新順序檔最適合整批處理:日常交易先累積在交易檔,到月底一次過按鍵排序,與主檔合併更新,生成新主檔和報表。舉個例子:電力公司整月累積各戶用電記錄,月結時與客戶主檔合併計算電費,一次處理數百萬條記錄,效率反而最高;這種主檔加交易檔的組合正是順序檔的強項,月結報表同時生成,方便管理層查核。
- 第七步:選擇組織方式的準則選擇時先問三條問題:資料是否需要即時回應?每次處理多少記錄?儲存和維護成本如何?舉個例子:圖書館借還書要即時定位每條書目記錄,用隨機檔;每月統計全港圖書借閱排行屬整批作業,用順序檔即可。答題時先講應用場景的需求,再配對檔案類型,並以效率和成本說明理由;實務上兩者並用,隨機檔負責日常查詢,順序檔負責定期報表。
5例題示範 Example
學校圖書館的書目檔案共有四萬條記錄,按索書號排序,現以順序檔儲存。館方考慮改為隨機檔。試比較兩種方案的搜尋效率,並提出建議。
- 順序檔效率:線性檢索平均要比較記錄數一半,即 40000 ÷ 2 = 20000 次;最壞情況 40000 次。借書高峰期人人查詢,櫃台勢必大排長龍。
- 隨機檔效率:以索書號直接計算儲存地址,一次存取即得記錄,比較次數幾乎不受四萬條記錄影響,回應以毫秒計。
- 成本考慮:順序檔結構簡單、維護容易;改用隨機檔須重新組織四萬條記錄並處理地址分配,前期成本較高。
- 建議:借還書屬即時查詢,效率優先,應改用隨機檔;每月的借閱統計報告屬整批作業,可保留順序處理程序。
- 答案:順序檔以線性檢索搜尋四萬條記錄,平均 40000 ÷ 2 = 20000 次比較、最壞 40000 次,高峰期難以即時回應;隨機檔由索書號直接定址,一次存取完成查詢,效率遠高。雖然改組檔案有前期成本,但借還書需要即時回應,建議改用隨機檔;月度統計屬整批處理,保留順序方式即可。選擇的準則是回應要求、處理模式和成本三者的平衡。
6常見錯誤 Mistakes
75 題快測 Quick check
Q1檔案、記錄、欄三者的關係是什麼?
Q2順序檔為什麼適合整批處理?
Q3在 5000 條記錄的順序檔中作線性檢索,平均要比較多少次?
Q4隨機檔如何直接找到記錄?
Q5提款機查詢結餘應採用哪種檔案?為什麼?
8重點回顧 Recap
- 檔案由記錄組成,記錄由欄組成,鍵欄唯一識別每條記錄
- 順序檔按鍵值依次存放,線性檢索平均比較記錄數一半,適合整批處理
- 隨機檔由鍵值直接定址,一次存取命中,適合即時回應系統
- 主檔儲存長期數據,定期與交易檔合併更新
- 選擇組織方式看回應要求、處理模式和成本三者的平衡