數據組織與數據控制:掌握井然有序且可靠數據的秘訣
各位同學,歡迎來到「數據組織與數據控制」的筆記!別擔心,這個課題聽起來比實際複雜得多。我們會一起將其分解!
想想你手機裡、學校記錄中,或是購物網站上的所有資料。它們是如何保持井然有序和準確無誤的呢?這就是我們這一章要探討的重點!我們將會學習數據是如何建構的,就像在圖書館整理書籍一樣;以及如何確保數據是正確和可靠的。這在我們的數碼世界中是個超級重要的技能!
1. 數據層次結構:資訊的基石
要了解電腦如何管理龐大的資訊,我們需要知道它們是如何組織資訊的。想像一下你用樂高積木來搭建。你從最小的積木開始,一步步建成一座巨型城堡。數據的組織方式也類似,從最小的單元到最大的集合。這種結構稱為數據的層次結構。
讓我們以學校的學生資訊系統為例:
想像你的學校有一個數碼檔案櫃,用來儲存每個學生的資料。
最小的單元:數據與字段
• 數據:這些是原始的、獨立的事實和數字。例如:「陳大文」、「17」、「6A班」。單獨看「17」並沒有太大意義。
• 字段:字段是關於某人或某事的一個類別或單一資訊。它就像一個貼有標籤的盒子,用來存放一種特定類型的數據。字段賦予數據意義和上下文。
例如:「學生姓名」字段存放「陳大文」這個數據。「年齡」字段存放「17」這個數據。
組合各個單元:記錄
• 記錄:記錄是關於一個特定的人物、項目或事件的一組完整的字段。它就像一張學生的單獨索引卡,包含他們的所有詳細資料。
例如:陳大文的記錄會包含他的姓名、年齡、班別、學生編號、地址等。
陳大文的記錄:[字段:學生姓名,數據:陳大文],[字段:年齡,數據:17],[字段:班別,數據:6A]
數據的歸檔:檔案
• 檔案:檔案是相關記錄的集合。你可以把它想像成檔案櫃裡的一個抽屜,裡面裝有學校所有學生的索引卡。
例如:「Students.dat」檔案會包含陳大文、王小明、李美玲以及其他所有學生的記錄。
全貌:數據庫
• 數據庫:數據庫是相關檔案的有組織集合。它就像是整個檔案櫃!它可能有一個學生檔案、一個教師檔案、一個課程檔案,還有一個考試成績檔案,它們全部都互相連結。
例如:學校數據庫會包含「學生」檔案、「教師」檔案和「課程」檔案。
層次結構圖:
數據庫 (整個學校系統)
└── 檔案 (例如:「學生」檔案)
└── 記錄 (例如:陳大文的所有資料)
└── 字段 (例如:他的「年齡」)
└── 數據 (例如:「17」)
數據層次結構的重點
記住這個從大到小的順序:數據庫 -> 檔案 -> 記錄 -> 字段。
記憶小秘訣:「數字檔案記得字!」—— 一句有點傻氣的句子,幫助你記住順序!
2. 檔案存取方法:尋找你的數據
好的,我們已經將數據整齊地組織在檔案中。但電腦究竟是如何讀取這些資訊的呢?主要有兩種方法,稱為檔案存取方法。
循序存取:卡式錄音帶方法
採用循序存取時,記錄會按特定順序(循序地)一個接一個地儲存和讀取。要存取中間的記錄,你必須先經過它之前的所有記錄。
類比:想像一下音樂卡式錄音帶。要聽第5首歌,你必須快轉跳過前四首歌。你無法直接跳到那首歌。
• 優點:
- 實施和理解起來都很簡單。
- 如果你需要處理檔案中的所有記錄(例如:計算每個客戶的每月電費單),效率會非常高。
- 可以使用簡單、廉價的儲存媒體,例如磁帶。
• 缺點:
- 如果你只需要檔案中間或結尾的某個特定記錄,速度會非常慢。
- 更新或刪除中間的記錄很困難;你通常需要重寫整個檔案。
• 應用:
- 薪金系統:逐一處理每位員工的薪金。
- 計費系統:為所有客戶生成公用事業費用賬單。
- 備份系統:數據只是按順序寫出。
直接存取(或隨機存取):MP3播放器方法
採用直接存取時,電腦可以跳過之前的記錄,直接跳到檔案中的任何記錄。每條記錄都有一個唯一的地址(就像門牌號碼一樣),系統可以利用它即時找到記錄。
類比:想像一下MP3播放器或Spotify。你可以即時選擇並播放任何你想聽的歌曲,無論它在播放列表的哪個位置。你不需要先聽之前的歌曲。
• 優點:
- 檢索單個記錄的速度非常快。
- 輕鬆更新、新增或刪除單個記錄,而不影響檔案的其餘部分。
• 缺點:
- 設定起來更複雜。
- 如果你需要處理所有記錄,效率可能會較低,因為系統可能需要在儲存設備上四處跳轉。
- 需要更複雜的儲存設備,例如硬碟或固態硬碟(SSD)。
• 應用:
- 自動櫃員機(ATM)系統:即時查找你的銀行賬戶資料。
- 航班訂票系統:快速查詢航班供應情況或特定預訂。
- 線上數據庫:在購物網站上查找特定產品。
檔案存取方法的重點
循序存取 = 按順序,一個接一個。(單個慢,所有快)。
直接存取 = 直接跳到那裡。(單個快,所有可能不快)。
3. 數據控制的必要性:為何如此重要?
如果數據是錯的,它就毫無用處!想像一下自動櫃員機給錯錢,或者學校錯誤地記錄你的考試分數。那將會是一場災難。數據控制是指為確保數據滿足以下條件而實施的流程和程序:
• 準確性:數據是正確且沒有錯誤的。
• 實時性:數據是最新的。(例如:你的住址是新的,而不是舊的)。
• 安全性:數據受到保護,防止未經授權的存取或更改。
• 一致性:同一數據在所有儲存位置都保持相同。
如果沒有數據控制,基於數據所作的決策將不可靠,導致錯誤、經濟損失和混亂。這就是我們需要檢查和保護數據的原因。
常見的數據輸入錯誤類型
人工輸入數據時經常會出錯。在香港中學文憑考試(HKDSE)資訊及通訊科技科中,這些錯誤通常分為以下兩類:
• 抄錄錯誤(Transcription Errors):直接從來源文件複製或鍵入數據時發生的錯誤。(例如:把「Smith」誤鍵為「Smyth」,或把「B」誤輸入為「8」)。
• 換位錯誤(Transposition Errors):兩個相鄰的字符或數字意外對調時發生的錯誤。(例如:把「5839」誤鍵為「5389」,或把「KH」誤輸入為「HK」)。
4. 錯誤偵測與預防:數據的守護者
那麼,我們到底如何控制數據並保持其準確性呢?我們會使用幾種巧妙的技術來發現(偵測)和阻止(預防)錯誤。
方法一:驗證(你確定嗎?)
驗證是一種通過檢查輸入系統的數據是否與原始來源相符來預防錯誤的過程。它通常是以人為主導的檢查,用於捕捉輸入過程中的抄錄和換位錯誤。
• 雙重輸入:用戶獨立輸入數據兩次。系統會比對兩次輸入的內容,如果兩者不符便會拒絕接受。(例如:註冊時輸入兩次新密碼以作確認)。
• 目視檢查(校對):由人工仔細將螢幕上的文字與原始紙本文件進行比對。(例如:辦公室文員將輸入系統的資料與申請表格進行核對)。
方法二:確認(這合理嗎?)
確認是一種自動電腦檢查,用於確保輸入的數據合理、有意義並符合預設的規則。電腦無法始終知道你的名字是否真的叫陳大文,但它可以檢查輸入的年齡是否合理。
• 常見的確認檢查:
- 範圍檢查:檢查數字是否介乎上限與下限之間。(例如:考試分數必須介乎0到100之間)。
- 類型檢查 / 數據類型檢查:檢查輸入是否符合預期的數據類型。(例如:年齡必須僅為整數數字)。
- 格式檢查:檢查數據是否符合預設的範本或規律模式。(例如:日期必須遵循DD/MM/YYYY格式,或電郵地址必須包含「@」符號)。
- 存在檢查:檢查必填字段是否未留空。(例如:學生編號不能為空)。
- 長度檢查:檢查字符串是否包含準確的字符數,或是否符合最小/最大字符長度限制。(例如:香港流動電話號碼必須剛好包含8個數字)。
- 查閱檢查:檢查輸入的值是否與預設清單或表格中的可接受項目之一相符。(例如:性別字段必須從「M」或「F」中選取)。
- 一致性檢查:比對兩個或更多相關字段,以確保它們之間互不矛盾。(例如:如果「婚姻狀況」設定為「兒童」,其「年齡」便不能是45歲)。
快速回顧:兩者的巨大區別!
驗證:我輸入的是否正確?(檢查輸入內容是否與原始來源文件相符)。
確認:我輸入的內容是否合理且符合規則?(檢查邏輯邊界與數據約束條件)。
例子:想像你正在輸入學生的考試分數。試卷上的原始分數是85。
- 如果你不小心輸入了58,驗證(雙重輸入或目視檢查)會發現這個錯誤。但確認不會,因為58是一個介乎0到100之間完全有效的分數。
- 如果你不小心輸入了850,確認(範圍檢查)會發現這個錯誤,因為它超出了0到100的範圍。
方法三:校驗數位(數學編碼驗證)
校驗數位是利用數學演算法,根據識別號碼(例如香港身份證號碼、ISBN書籍編號或條形碼)的主體數位計算出的一個額外數位。它會附加在原始編碼的末尾,用以偵測單個數位的抄錄錯誤以及相鄰數位的換位錯誤等輸入問題。
校驗數位驗證的運作方式(例如:加權和及模數運算):
1. 識別號碼中的每個數位都會乘以一個預定的權重。
2. 將所有乘積相加,計算出加權總和:\(S = \sum (\text{digit}_i \times \text{weight}_i)\)。
3. 對總和應用模數運算(例如 \(\text{mod } 11\) 或 \(\text{mod } 10\))以計算餘數。
4. 校驗數位由此餘數衍生得出。日後輸入完整編碼時,電腦會重新計算校驗數位:如果計算出的數位與輸入的校驗數位不符,系統便會即時拒絕該輸入。
方法四:同位檢查(數碼傳輸的快速檢查)
同位檢查是一種用於偵測二進制數據在通訊通道上傳輸時是否發生錯誤的方法。它能偵測傳輸過程中是否有奇數個位元(例如單個位元)發生了翻轉。
運作方式 — 逐步指南:
發送端和接收端會預先約定使用偶同位或奇同位。
1. 發送端計算數據位元中「1」的數量。
2. 一個額外的位元(稱為同位位元)會被添加到傳輸訊框中。
3.
• 在偶同位模式下,同位位元會設定為1或0,使「1」的總數(包括同位位元)成為一個偶數。
• 在奇同位模式下,同位位元會設定為使「1」的總數成為一個奇數。
4. 接收電腦計算「1」的數量。如果計數與約定的同位規則不符,系統便會偵測到傳輸錯誤並要求重新傳輸。
以數據 `1011001` 及「偶同位」模式為例:
1. 計算 `1011001` 中「1」的數量:有4個「1」。
2. 4是偶數嗎?是的。
3. 設定同位位元:將同位位元設定為 `0`,以保持偶數計數。
4. 發送的數據:`10110010`(「1」的總數 = 4,是偶數)。
以數據 `1111001` 及「偶同位」模式為例:
1. 計算 `1111001` 中「1」的數量:有5個「1」。
2. 5是偶數嗎?不是。
3. 設定同位位元:將同位位元設定為 `1`,使總數成為偶數(6)。
4. 發送的數據:`11110011`(「1」的總數 = 6,是偶數)。
局限性:同位檢查只能偵測奇數個位元的錯誤。如果同時有兩個位元發生翻轉(例如偶數個位元錯誤),同位狀態將保持不變,該錯誤便無法被偵測出來。
錯誤控制的最終重點
驗證 = 由人工 / 輸入檢查,確保與來源文件相符。
確認 = 由電腦自動檢查,強制執行格式、範圍和邏輯規則。
校驗數位 = 應用於識別編碼的加權數學演算法。
同位檢查 = 透過位元計數的同位標記來偵測傳輸損壞。