【上課筆記】資料庫管理
CH1
- DBMS(Database Management System) : 資料庫管理系統(為管理資料庫而設計的大型電腦軟體管理系統)
- 資料庫定義 : 明定要儲存之資料的資料型態、結構與限制
- Meta-Data(中繼資料) : 資料庫規則或是敘述性資料,存在DBMS裡
- 資料庫方式(Database Approach) 的四個特點 :
- 資料庫的自我描述特性
- 資料獨立與資料抽象化
- 多人使用,資料共享
- 同步與交易管理
- OLAP(Online Analytical Processing) : 線上分析處理(快速解決多維分析問題的方法)
- OLTP(Online Transaction Processing) : 線上交易處理(透過資訊系統,以線上交易的方式處理一般即時性的作業資料)
- DBA(Database administrators) : 資料庫管理員
- IR(Information retrieval) : 資訊檢索
CH2
- Data Model(資料模型) : 定義資料如何輸入和與輸出的一種模型,為資訊系統提供資料的定義和格式
- 資料模型三元素 :
- Entity(實體) : 真實世界中的物件
- Attribute(屬性) : 每個屬性都代表實體某方面的特性
- Relationship(關係) : 聯繫實體與實體
- Three-Schema Architecture(三層式綱要架構) :
- Internal level (內部層) : 描述資料庫的實體儲存結構
- Conceptual Level(概念層) : 資料庫儲存的整體性資料
- External Level(外部層) : 描述特定用戶感興趣的部分資料庫
- Data Independence(資料獨立性) : 改變資料庫系統的某一層次綱要時,不需要跟著修改較上層的綱要
- Logical(邏輯) : 改概念層時,不用改外部層
- Physical(實體) : 改內部層時,不用改概念層&外部層
- DBMS語言 :

- DDL(Data definition language) : 資料定義語言,定義概念綱要(Schema)&內部綱要 ex : create, alter, drop
- SDL(Storage definition language) : 儲存定義語言,定義內部綱要
- VDL(View definition language) : 視野定義語言,定義外部綱要到概念綱要
- DML(Data manipulation language) : 資料操縱語言,允許檢索,插入,刪除,修改 ex : select, delete…
- Procedural DML : 低階或程序化的,一次一筆記錄;它們是指定如何擷取資料,並且具有如迴圈這類的程式結構
- Non-procedural DML : 高階或非程序化的,它們是集合導向的(set-oriented),而且是指定要什麼資料,而不是如何擷取,如SQL

- 資料庫系統功能 :
- Loading(載入)
- Backup(備份)
- Database Storage Reorganization(重組檔案)
- Performance Monitoring(效能監控)
- Centralized DBMSs Architecture(集中式DBMS架構) :
- 在一台機器上執行的所有DBMS功能、應用程序執行和用戶界面處理
- 所有處理工作皆需經由網路傳輸到遠端的主機來處理
- 所有的Server放在單機(Local端)上執行,因此稱之為One-tier (單一階層)架構
- Basic Client/Server Architectures(基本主從式架構) :
- 提供專門功能的專門伺服器 : file/print/web/email server
- 客戶端 : 提供用戶界面功能和本地處理的用戶計算機
- 伺服器端 : 包含硬件和軟件,為客戶端計算機提供服務 ex :文件存取、列印、存檔或資料庫存取
- Two-Tier Client/Server Architectures(二層主從式架構) :
- 伺服器端處理 : 與SQL處理有關的查詢和交易功能
- 客戶端處理 : 用戶界面程序和應用程序
- Open Database Connectivity (ODBC) : 提供程式介面(API),連接兩端(兩端都要裝必要的軟體)
- JDBC : for Java client programs
- Three-Tier and n-Tier Architectures(三層式&N層式架構) :
- Application/Web Server : 置於Client與Server中間,執行應用程式與存取業務法則
- N-tier : 將用戶和儲存資料之間的Layers進一步分為更精細的組件
- DBMS分類 :
- 資料模型 :
- Relational(關聯式)
- Object(物件式)
- Hierarchical and network(階層式&網路式)
- Native XML DBMS
- 資料模型 :
- 使用者數目 : 單一 & 多人
- 設置數量 :
- Centralized(集中式) : 使用儲存在單一電腦上的單一資料庫
- Distributed(分散式) :Homogeneous(同質) & Heterogeneous(異質)
ch3
- 關聯式資料庫的概念 :
- 由許多關聯 (Relation)所組成的集合
- Row(列)/Tuple(值組) : 表示相關資料值的集合(一行一行資料)
- Table/Column Name : 解釋每個列之屬性中值的含義
- Domain(D,定義域) : 某種資料型態之所有可能值所構成的集合,指定數據類型
- Atomic Value(基元值) : 不可再分解的值
- Attribute(A,屬性)/Column(欄)
- Relation schema(R,關聯綱目) : 描述關聯表的性質,可記為R(A1, A2, …, An)
- Degree(階度) : 關聯表中屬性的數量(有幾欄)
- Relation/Relation State(r(R.),關聯表狀態) :
- r = {t1, t2, …, tn} = n列的集合
- t = n個值的有序清單 =<V1, V2, …, Vn>
- Vi,1 ≦ i ≦ n,每個值都是dom(Ai)所定義的值域的集合或是Null值
- dom(An) = 第n個屬性的定義域
- r(R.)是這n個定義域笛卡爾積的集合,
意即 :r(R.) ⊆ (dom(A1) × dom(A2) × …. × dom(An))
- Cardinality(基數) : 定義域中值的全部數量
- Relation的tuple順序 :
- 關聯表狀態定義為tuple的集合
- 元素之間沒有順序
- Tuple中值的順序與Relation的替代定義 :
- 屬性和值的順序並不重要
- 只要保持屬性和值之間的對應關係
- Relation的替代定義 :
- Tuple可以視為一對對(<屬性>, <值>)的集合
- 每對都會從屬性Ai給予映射值到dom(Ai)的值Vi
- 使用Relation的第一個定義 :
- 屬性和tuple中的值是有順序的
- 更簡單的表示法
- tuple中的值與null :
- tuple中的值都是不可切割的
- Flat Relational Model(扁平關聯式模型) :
不允許使用複合值和多值屬性,即First normal form(第一正規化) - Multivalued attributes(多值屬性)
- Composite attributes(綜合屬性)
- Null的意義 :
- 值未知
- 值未被定義
- 存在,但無法讀取
- Relaiton中的每個tuple都是事實或斷言(Assertion)的特定實例
- 將每個tuple中的值解釋為滿足謂詞(Predicate)的值
- Relational Model Constraints(關聯式模型限制) :
- Implicit Constraints(內顯限制) :
- 資料模型中本來就存在的限制, ex : 不能同時存在兩個值
- Explicit Constraints(外顯限制) :
- 直接用模型的架構來表達
- Application-based or business rules(基於應用或者是商業上的限制) :
- 不能直接用模型的架構來表達,可透過寫程式
- Implicit Constraints(內顯限制) :
- Domain Constraints(定義域限制) :
- 必須為atomic且必須在定義域
Ex : numeric data types, characters, Boolean, …etc.
- 必須為atomic且必須在定義域
- Key Constraints(鍵的限制) :
- tuple是獨一無二的
- SUPERKEY(超鍵) : t1[SK] ≠ t2[SK] → 唯一性(可判斷為單一筆)
- Key(鍵值) :
- 最小的超鍵 : 無法刪除任何屬性,並且在上述條件保持下仍具有唯一性約束
- 在任何關係狀態下,兩個不同值組的鍵(所有)屬性不能具有相同的值
- CANDIDATE KEY(候選鍵) : 由一或多個atrribute組成,每個attribute都是超鍵,符合唯一性&最小性
- PRIMARY KRY(主鍵) : 從候選鍵中挑一個,會加上底線,不得為null
- 其他候選鍵就是ALTERNATIVE KEY
- Entity integrity constraint (實體完整性限制) : 所有主鍵都不能是null
- Referential integrity constraint(參考完整性限制) :
當一個資料表要參考另一個資料表的時候,被參考的資料表必須有資料可以給參考的資料表參考- FOREIGN KEY(外來鍵) :
- 主鍵與外來鍵擁有一樣的定義域
- 以圖表方式顯示參考完整性約束
- 應在關係資料庫綱要上指定所有完整性約束
- FOREIGN KEY(外來鍵) :
- Semantic integrity constraints(語意完整性限制) :
- 依照需求提出的限制,EX : 找出公司薪水大於4000的員工
- 使用觸發器和斷言
- Functional dependency constraint(函數依賴限制)
- INSERT :
- 可能會違反四種限制其中一種,如果違反則拒絕insert
- DELETE :
- 只可能違反參考完整性
- 若鍵值有被其它關聯的外來鍵參考到 :
- Restrict(限制) : 不允許刪除
- Cascade(連帶) : 同時刪除帶有相同參考外來鍵值的記錄
- Nullify(空值化) : 同時將該參考外來鍵值改成null
- UPDATE : 類似Delete
CH4
- SQL :
- Structured Query Language
- Statement for ++Data Definitions++, ++Queries++, and ++Updates++
- SQL Schema :
- 由Schema Name辨別
- 元素包含++Table++, ++Constraints(限制)++, ++Views++, ++Domains++, and other constructs
- SQL Catalog(資料庫目錄) : SQL環境中的Schema命名集合
- SQL Environment : 在電腦系統中安裝符合SQL的RDBMS(關聯式資料庫管理系統)
- Attribute Data Type :
| 類型 | 描述 | 存儲 |
|---|---|---|
| smallint | 數字(小) | 2 Bytes |
| int | 數字(中) | 4 Bytes |
| numeric | 數字(大) | 視精確度而定 |
| float | 浮點數(小) | 8 Bytes |
| Double Precision | 浮點數(小) | 8 Bytes |
| real | 浮點數(大) | 4 Bytes |
| char(n) / nchar(n) | 固定長度字串 / Unicode資料 | 一字元1Bytes / 2Bytes |
| varchar(n) / nvarchar(n) | 可變長度字串 / Unicode 數據 | 一字元1Bytes / 2Bytes |
| bit(n) | 固定長度位元串 | 1 Byte |
| varbit(n) | 可變長度位元串 | 1 Byte |
| boolean | true, false, null | — |
| date | year, month, day | 3 bytes |
| timestamp | YYYY-MM-DD HH:MM:SS | 4 bytes |
| interval | 指定可以用於增加或減少date、time或timestamp的相對值 | 16 Bytes |
- Attribute Domains :
- 使改變Data type變得容易
- 提升Schema可讀性
- Constraints(限制) :
- NOT NULL : 特定column不允許是NULL
- DEFAULT Value : DEFAULT
- CHECK clause : 約束column中的可用值
- PRIMARY KEY clause : 設定組成relation主鍵的一或多個attribute
- UNIQUE clause : 設定Alternate Keys
- FOREIGN KEY clause :
- SET NULL
- SET DEFAULT
- CASCADE(跟著一樣動作)
- SELECT statement :
1
2
3SELECT <attribute list>
FROM <table list>
WHERE <condition>; - Set Operations :
- UNION : 聯集
- INTERSECT : 交集
- EXCEPT : 差集
- LIKE :
- % : 代表零個、一個、或數個字母
- _ : 代表剛好一個字母
CH5
- NULL :
- 值未知
- 值未被定義
- 存在,但無法讀取
- SOME(ANY) : 只要有一條資料滿足條件,整個條件成立
- ALL對所有資料滿足條件,整個條件才會成立
- EXISTS/NOT EXISTS : 確認子查詢的結果是否為空集合
- NATURAL JOIN
- INNER JOIN
- LEFT JOIN : 以JOIN前為主
- RIGHT JOIN : 以JOIN後為主
- FULL OUTER JOIN
- CREATE ASSERTION : 在CREATE之外的Constraint檢查
- CREATE TRIGGER :當資料庫被INSERT、DELETE、UPDATE時,會自動做的行為
- WITH CHECK OPTION : 在建立view置放於程式碼末端,可以check之後update資料
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


