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(基於應用或者是商業上的限制) :
      • 不能直接用模型的架構來表達,可透過寫程式
  • Domain Constraints(定義域限制) :
    • 必須為atomic且必須在定義域
      Ex : numeric data types, characters, Boolean, …etc.
  • 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(外來鍵) :
      • 主鍵與外來鍵擁有一樣的定義域
      • 以圖表方式顯示參考完整性約束
      • 應在關係資料庫綱要上指定所有完整性約束
  • 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
    3
    SELECT <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資料