資料庫期中考筆記

資料庫重點整理

Database Systems

Database + DBMS + Database Definition (Meta-Data) + Applications/Queries + Users

DBMS 可使下列事情變得很容易

  • Define a Database 定義資料庫
  • Construct (Create) a Database 建立資料庫
  • Manipulate a Database 操作一個資料庫
  • Share a Database 共享資料庫

Database Definition (Define a database)

  • Data Types 資料型別
  • Relationships Among Data 資料間的關係
  • Constraints of the Data 資料的限制

SQL

為 Relational DBMS 所提供的標準資料庫語言 - DDL 定義資料庫所使用的語言 - DML 存取資料庫所使用的語言 - Retrieval operations 檢索 - Update operations (Insertion, Deletion, and Modification) 更新 - 當被以互動式 (interactive) 的方式使用時,又稱 Query Language

Meta Data

  • 資料庫定義(以 DDL 表示)經 Compile 後稱為 Meta Data
  • 主要是描述資料庫的結構
  • System Catalog (DBMS Catalog)
    • DBMS 會將 Meta Data 在磁碟上找一個地方儲存起來,以供爾後使用,儲存 Meta Data 的地方稱為 System Catalog。

使用資料庫的四大優點

  • Self-Describing Nature of a Database System
    • 資料庫系統具有自我描述的本質。
    • 一個資料庫系統不但包含資料庫本身,亦包含了資料庫定義(Meta-Data)
    • Insulation between Programs and Data, and Data Abstraction
    • 隔離程式與資料,及資料抽象化
    • Support of Multiple Views of the Data
    • Sharing of Data and Multiuser Transaction Processing

Data Abstraction

Program-Data Independence

  • 調整資料庫架構 (增減欄位等) 不影響 DBMS 的運作,也不用修改 DBMS 的程式碼

Program-Operation Independence

  • 調整 DBMS 中 operation 的實作,不影響其存取界面與使用者的 application 的呼叫

Data Abstraction = Program-Data Independence + Program-Operation Independence

  • 提供資料庫在高階觀念的表示,不需要知道其中實作細節就可使用 DBMS
  • Data Model 或 DBMS 提供 Data Abstraction 之功能,通常所使用的高階觀念包括Entities、 Relationships、Objects、Relations等
  • 每一個 DBMS 都會以某一種 Data Model 為基礎,以那一種 Data Model 為基礎就稱為那一種 DBMS。例如,ORACLE 是以 Relational Data Model 為基礎,故稱為 Relational DBMS。

Data Model

  • 能提供一組觀念(Concepts)、法則(Rules)、語言、 文字、符號或圖形(Diagrams),用以表示資料庫的結構
  • 能提供一組存取資料庫的運算(Operations)

常見的Commercial Data Models

  • Relational Data Model (Flat File Structure)
  • Network Data Model (Graph Structure)
  • Hierarchical Data Model (Tree Structure)
  • Object (Object-Oriented , Object-Relational) Data Model
  • XML (eXtended Markup Language) Model
    • Hierarchical (Tree-structured) Data Model
    • The primary standard for interchanging data among various types of databases and Web pages over the Internet (考古題出過)
    • Combining concepts from the models used in document systems with database modeling concepts

Data Model 之分類

  • High-Level (Conceptual) Data Model , e.g. EER Model
  • Representational (Implementation) Data Model, e.g. Relational Data Model
  • Low-Level (Physical) Data Model
    • Access Path
    • 為一種資料結構(Data Structure),可加速特定資料庫紀錄 (Particular Database Records)的搜尋。
    • Index
    • 為一種Access Path,可使用Indexing Fields 或Keywords加 速特定資料庫紀錄(Particular Database Records)的搜尋。

DBMS

依Data Model分類

  • Relational DBMS (RDBMS): 簡單、慢(可是到現在硬體變快就還好) 常見的 MySQL、MSSQL 之類都是
  • Network DBMS: IDMS, IMAGE, SUPRA
  • Hierarchical DBMS: IMS, FOCUS
  • Object DBMS (ODBMS):
  • Object-Oriented DBMS (OODBMS): GemStone, ONTOS, ObjectStore
  • Object-Relational DBMS (ORDBMS): SQL:2008 – SQL/Object (Object features of SQL)

依Number of Sites分類

  • Centralized DBMS (集中式)
  • Distributed DBMS (DDBMS) (分佈/分散式)
    • Homogeneous DDBMS (同質)
      • 全部都用同一種 DBMS Software
    • Heterogeneous DDBMS (異質)
      • 可以混合不同種 DBMS

單人 v.s. 多人

通用 v.s. 特化

XML DBMS (我也不知道為什麼這些內容要放這,不過考古題出現了幾次,記一下吧)

  • Structured Data: 資料庫中的 Data
  • Semistructured Data: 參考文獻(Bibliography or References)中的 Data
  • Unstructured Data: Web Pages or Emails 中的 Data

Support of Multiple Views of the Data

View

你能看到的資料庫的一部份,不一定存在資料庫中,可能是經由 Database 中的資料經過計算後得出的 (ex: 從生日算出年齡)

用途

讓不同使用者群組存取所需的部分資料內容

SQL Views (看起來是想講檢視表)

Views = Derived Tables = Virtual Tables (名詞加減記)
沒有真正存在資料庫中,由 base table 的資料與 view 的 define 計算後得出 CREATE VIEW view_name AS SELECT ... FROM base_table

Sharing of Data and Multiuser Transaction Processing (葛老講了N次他覺得資料庫系統很偉大的地方)

Transaction

簡單來說把一堆 SQL Query 包在一起執行,要嘛全部成功執行,要嘛沒有,如果執行到一半錯誤要 rollback 回原始狀態。

Multiprogramming & Multiprocessing

可以多人一起用資料庫

Concurrency Control

多人一起用資料庫,操作之間不會衝突

OnLine Transaction Processing (OLTP)

OnLine Analytical Processing (OLAP)

沒講什麼耶.. 看看就好 (?

用 DBMS 的好處 (複製貼上的,大概看看ㄅ)

  1. Controlling Redundancy (控制重複性)
  2. Restricting Unauthorized Access (限制未授權的存取)
  3. Providing Persistent Storage for Program Objects (提供程式物件永久的儲存空間)
  4. Providing Storage Structures and Search Techniques for Efficient Query Processing (提供有效處理查詢的儲存結構)
  5. Providing Backup and Recovery (提供備份與回復功能)
  6. Providing Multiple User Interfaces (提供多種使用者介面)
  7. Representing Complex Relationships among Data (表示資料之間的複雜關係)
  8. Enforcing Integrity Constraints (實施完整性限制)
  9. Permitting Inferencing and Actions Using Rules (Deductive Database Systems, Active Database Systems, Relational DBMS – Triggers) (允許使用規則進行推理與主動性)

間接的好處

  1. Potential for Enforcing Standards (強制符合標準)
  2. Reducing Application Development Time (減少應用程式開發時間)
  3. Flexibility (彈性)
  4. Availability of Up-to-Date Information (可使用到最新資訊)
  5. Economies of Scale (經濟效益)

Relational DBMS 相對於其他種類 DBMS 之優缺點 (考題都是 RDBMS 相對於 xxx DBMS 的優缺點比較,大概就寫這邊的東西吧)

  1. 觀念非常簡單,易於學習、了解及使用。
  2. 有數學(Set)理論基礎(Mathematical Foundation)。
  3. 最容易做到 Program-Data Independence,亦即最有彈性(Flexibility)。
  4. 因提供標準高階的 Query Language (SQL),使得撰寫新的 Queries 或 Applications 均較快速。
  5. Very Slow (缺點)

套裝軟體的名詞 (看看就好(?))

  • Database Back-End
    • 表示一個或多個 Databases,可能來自不同廠商及不同 Data Models
  • ERP (Enterprise Resource Planning)
    • 套裝應用軟體,整合生產、銷售、物流、行銷、財務及人力資源等功能。
    • 就企業內部流程 / 資料的資訊化整合系統啦
  • CRM (Customer Relationship Management)
    • 套裝應用軟體,整合訂單處理、行銷及顧客支援功能。
    • 就客戶關係管理啦,壁畫一堆

一些奇怪又出現在考古題好幾次的名詞,可能會考吧

  • Database Technology
    • 作用於 Structured and Formatted Data, 例如,發票、報價單、病人註冊表件等,主要使用於一般機構或企業的例行應用(Routine Applications)。
    • 看到這個就是要問你 Structured Data 啦
  • Information Retrieval (IR) Technology
    • 作用於Unstructured Data, 例如,書報、文稿、圖書館刊物、HTML Pages等,通常會用關鍵字(Keywords)來為這些 Unstructured Data 建立索引(Index)、分類及註解(Annotation)。 IR主要是使用關鍵字搜尋文字(Searching for Text Based on Keywords)之技術,通常用於文件處理(Document Processing)及自由格式的文字處理(Free-Form Text Processing)。
    • 看到這個就是要問你 Unstructured Data 啦

G8的同樣意思的名詞們

Database Schema = Database Definition = Database Intension (就資料庫定義啦) Database Instance = Database State = Database Snapshot = Extension of the Schema (就資料庫裡面當下的資料啦)

Three-Schema (ANSI/SPARC) Architecture

這邊好像這次不考,想看的自己看 PPT

架構

Centralized Architectures

舊的大型主機時代架構,資料庫、客戶端程式、UI 全部跑在大型主機上,你的電腦只負責發送指令和收畫面,不負責做運算 想想 PTT 就是了

Client/Server Architectures

就現在常用的架構之一,客戶端跑在你的電腦上,Server 在遠端 只有 Client Application + DBMS 的話,可以稱為 2-tier Client/Server Architectures (2層架構)

Client 與 Database Server 的連線

ODBC (Open DataBase Connectivity)

一種連線標準,提供 API 給你寫的程式和資料庫連線用

JDBC (這就是全名,不是縮寫 By 葛老)

Java 用的資料庫連線標準介面

3-tier Client/Server Architectures

一般是 Web Application 使用,分為以下 3 層 1. Client
就你看到的網頁,94前端啦 2. Application Server or Web Server
負責處理程式邏輯,就是我們常說的後端 :::info :mega: 敝公司招募 node.js developer 中,有興趣的可以聯絡我 ::: 3. Database Server
就資料庫 如果講 n-tier 架構的話,就中間的 Application Server 變多層,就端看需求了

考古題

  1. 舉例 Structured Data, Semistructured Data, Unstructured Data
    看上面 XML DBMS 的地方
  2. 那一種語言是 Internet 上資料庫和 Web Page 之間交換資料的標準
    雖然現在都用 JSON 啦,可是從 PPT 看來他想要的答案是 XML ,落後世界30年
  3. 簡單描述如何定義一個資料庫
    資料型別、資料間的關係、資料的限制
  4. Relational DBMS 相對於 xxx DBMS 之優缺點
    看上面 Relational DBMS 相對於其他種類 DBMS 之優缺點 (考題都是 RDBMS 相對於 xxx DBMS 的優缺點比較,大概就寫這邊的東西吧)
  5. 在 SQL 中 View 之定義為何,優點為何?
    看上面 Support of Multiple Views of the Data
  6. 何謂 Program-Data Independence / Program-Operation Independence
    看上面
  7. 何謂 metadata? 主要功能為何?
    就紀錄你資料庫的定義,表結構、欄位、關聯那些
  8. Data Abstraction 的功能? 在 DBMS 中 Data Abstraction 通常由何者提供?
    讓你不用知道資料庫的實作細節就可以使用 DBMS Data Abstraction 功能由 Data Model 或 DBMS 提供
  9. 說明 Virtual Data
    實際不存在 DataBase 中,而是由 DataBase 中的 Data 計算推得出的 Data
  10. 試比較 Database Application Program 及 Query 的異同點
    這啥.... 讓我想想
  11. 試討論 Database Technology 和 Information Retrieval (IR) Technology 的差異
    看上面
  12. 何謂 Heterogeneous DDBMS
    看上面
  13. 試舉出三大應用領域,其適合使用 Object-Oriented DBMS,但不適合使用 Relational DBMS
    • 工程設計
    • 多媒體
    • 生產製造系統
  14. Constraint 之主要功能為何?
    防止不正確的資料進入資料庫
  15. 何謂 System Catalog?
    存放資料庫 metadata 的地方

Ikaros

Read more posts by this author.