跳轉到內容

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

來自華夏公益教科書,開放的書籍,開放的世界

基於檔案系統

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

基於檔案系統的缺點

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

資料庫管理系統 (DBMS)

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

DBMS 的功能

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

資料更改衝突解決方案

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

DBMS 中的工具

[編輯 | 編輯原始碼]
  • 開發者介面:允許在 SQL 中而不是以圖形方式建立和操作資料庫
  • 查詢處理器:處理高階查詢。它解析、驗證、最佳化並編譯或解釋查詢,從而生成查詢計劃。

關係資料庫建模

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

系統的關係設計

[編輯 | 編輯原始碼]

規範化

[編輯 | 編輯原始碼]

第一正規化 (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>
華夏公益教科書