跳轉到內容

A-level 計算機/CIE/理論基礎/資料庫和資料建模

來自 Wikibooks,開放世界中的開放書籍

檔案系統

[編輯 | 編輯原始碼]
  • 資料儲存在離散的檔案中,儲存在計算機上,並且使用者可以訪問、更改或刪除這些檔案。

檔案系統的缺點

[編輯 | 編輯原始碼]
  • 無法對檔案的組織/結構進行強制控制
  • 資料在不同的檔案中重複;必須手動更改每個檔案
  • 必須手動排序或必須編寫程式才能排序
  • 資料可能採用不同的格式;難以查詢和使用
  • 無法實現多使用者;混亂
  • 安全性不完善;使用者可以訪問所有內容

資料庫管理系統 (DBMS)

[編輯 | 編輯原始碼]
  • 資料庫:非冗餘的相互關聯資料的集合
  • DBMS:允許定義、構建和操作資料庫的軟體程式

DBMS 的特徵

[編輯 | 編輯原始碼]
  • 資料管理:資料儲存在關係資料庫中 - 表儲存在輔助儲存器中
  • 資料字典包含
    • 資料庫中所有檔案的列表
    • 每個檔案中的記錄數
    • 每個欄位的名稱和型別
  • 資料建模:分析資料庫中使用的資料物件,識別它們之間的關係
  • 邏輯模式:整個資料庫的總體檢視,包括:實體、屬性和關係
  • 資料完整性:在更改時將整個塊複製到使用者的區域,完成後儲存回
  • 資料安全:處理密碼分配和驗證,自動備份資料庫,透過個人或使用者組的訪問許可權控制某些使用者可以檢視的內容

資料更改衝突解決方案

[編輯 | 編輯原始碼]
  • 以獨佔模式開啟整個資料庫 - 在多個使用者的情況下不切實際
  • 鎖定正在修改的表中的所有記錄 - 一個使用者更改表,其他使用者只能讀取表
  • 鎖定當前正在編輯的記錄 - 當某人更改某些內容時,其他人只能讀取記錄
  • 使用者指定不鎖定 - 軟體會警告使用者同時更改,手動解決
  • 死鎖:同時進行 2 次鎖定,DBMS 必須識別,1 個使用者必須中止任務

DBMS 中的工具

[編輯 | 編輯原始碼]
  • 開發人員介面:允許以 SQL 而不是圖形方式建立和操作資料庫
  • 查詢處理器:處理高階查詢。它解析、驗證、最佳化和編譯或解釋查詢,從而產生查詢計劃。它允許使用者輸入搜尋條件,並返回/查詢與搜尋條件匹配的資料。

關係資料庫建模

[編輯 | 編輯原始碼]
  • 實體:可以明確識別的物件/事件
  • 表:包含一組相關的實體,以行和列的形式表示,稱為實體集
  • 元組:關係中的一行或一條記錄
  • 屬性:關係中的一個欄位或列
  • 主鍵:唯一定義關係中每個元組的屬性或屬性組合
  • 候選鍵:可能成為主鍵的屬性
  • 外部索引鍵:關聯兩個不同表的屬性或屬性組合
  • 參照完整性:防止使用者或應用程式輸入不一致的資料
  • 次要鍵:未選為主鍵的候選鍵
  • 索引:在屬性上建立次要鍵,以便在搜尋該屬性時提供快速訪問;當表資料更改時,必須更新索引資料。

系統的關係設計

[編輯 | 編輯原始碼]

規範化

[編輯 | 編輯原始碼]

第一正規化 (1NF)

[編輯 | 編輯原始碼]
  • 消除同一表中的重複列。
  • 為每一組相關資料建立單獨的表,並使用唯一的列或列集(主鍵)標識每一行

第二正規化 (2NF)

[編輯 | 編輯原始碼]
  • 沒有複合主鍵。這意味著主鍵不能細分為單獨的邏輯實體。
  • 當且僅當某一行處於第一正規化並且每個非鍵屬性完全依賴於鍵時,該行才處於第二正規化。
  • 2NF 透過將欄位放在與依賴於整個鍵的欄位不同的表中來消除對部分鍵的功能依賴性。

第三正規化 (3NF)

[編輯 | 編輯原始碼]
  • 透過將非鍵欄位上的函式依賴項放入單獨的表中來消除它們。在此級別,所有非鍵欄位都依賴於主鍵。
  • 當且僅當一行處於第二正規化並且不有助於描述主鍵的屬性被移動到單獨的表中時,該行才處於第三正規化。例如,建立查詢表。

資料定義語言 (DDL)

[編輯 | 編輯原始碼]

使用此語言建立/修改資料庫結構 - 用 SQL 編寫

  • 建立資料庫
CREATE DATBASE <database-name>
  • 建立表
CREATE TABLE <table-name> (…)
  • 更改表
ALTER TABLE <table-name>
ADD <field-name><data-type>
  • 新增主鍵
PRIMARY KEY (field)
  • 新增外部索引鍵
FOREIGN KEY (field) REFERENCES <table>(field)

資料操縱語言 (DML)

[編輯 | 編輯原始碼]

使用此語言查詢和維護資料 – 用 SQL 編寫

  • 建立查詢
SELECT <field-name> 
FROM <table-name> 
WHERE <search-condition>

SQL 運算子

[編輯 | 編輯原始碼]
= 等於
> 大於
< 小於
>= 大於或等於
<= 小於或等於
<> 不等於
IS NULL 檢查空值
  • 按升序排序
 ORDER BY <field-name> 
  • 將相同的資料整理成組
 GROUP BY <field-name> 
  • 將不同表的欄位連線在一起
 INNER JOIN
  • 向表中新增資料
INSERT INTO <table-name>(field1, field2, field3) 
VALUES (value1, value2, value3)
  • 刪除記錄
DELETE FROM <table-name> 
WHERE <condition>
  • 更新表中的欄位
UPDATE <table-name> 
SET <field-name> = <value> 
WHERE <condition>
華夏公益教科書