1.1資料庫簡介

  1. 資料庫(database):是一組相關資料的集合,透過資料(data),我們能得知事實及隱含的意義。
  2. 資料庫呈現了真實世界的某些觀點,因此也稱作迷你世界(miniworld)或探討領域(Universe od Discourse =UoD)
  3. 資料庫管理系統(Database Mansgement System=DBMS) 是一組能讓使用者有能力去建立維護資料庫的程式的集合,是通用(geeneral-purpose)的軟體系統。

1.2資料庫簡介範例

  1. 我們必須為紀錄(record)中的每個元素(element)指定一個資料型態(data type)
  2. 大多數資料庫都包含了多種紀錄而記錄之間存在需多關係(relationship)
  3. 資料庫的操作包含新增(Create),讀取(Read),更新(Update),刪除(Delete);通常會被簡寫為CRUD

1.3資料庫技術的特性

  1. 資料庫技術是將資料維護在單一的倉庫(Repository)中它只需要定義一次,就可讓不同的使用者存取。
  2. 資料庫技術的特徵:
    1. 自我描述(self-describing):相關的實作有DBMS目錄(catalog)底下的定義,而我們稱這些資訊(information)為中繼資料(meta-data){描述資料的資料}。
    2. 隔離程式與資料,和資料抽象化(data abstraction):把資料結構和操作資料檔的程式分離
    3. 多重視界(multiple views):就是讓使用者可操作的資料分成不同。
    4. 交易處理(transaction):控制並行存取,讓資料保持一致,遵守隔離性(isolation)(確保同時進行的多筆交易不互相干擾)和不可分割性(atomicity)(確保每筆交易都會全部做完)

1.4 1.5舞台上的演員(與資料庫相關的人員)

DBA:資料庫管理師

DBD:資料庫設計師

End User:終端使用者

2.1 資料模型、綱要、實例

  1. 資料模型(data modle):用來描述資料庫結構概念的集合。
  2. 資料綱要(database schema):資料庫結構的描述以及應該遵守的限制。
  3. 實體(enity):真實世界的一筆資料或物件。
  1. 高階(概念)資料模型:以抽象概念的關係儲存為為主,隱藏儲存細節。
  2. 低階(實體/物理)資料模型:以描述資料儲存細節為主。
  3. 象徵(實作Implementation Data Model)資料模型:介於高低階模型,目前大多資料庫都採這種方式。

2.2 DB的三層綱要架構

  1. 內部綱要internal schema:用來描述實際的資料庫儲存結構
  2. 概念綱要conceptual schema:以使用者(DBA或程式設計師)的角度來描述整個資料庫的結構
  3. 外部綱要(視界綱要)external schema:以不同使用者的角度來描述資料庫的部份內容(view)
  4. 多external schema合併= conceptual schema,實作到電腦上=internal schema

001.jpg

2.3 DBMS語言

  1. 資料定義語言:DDL(Data Definition Language) 用來產生、定義資料表的語言
  • Example:定義資料表名稱: Student、欄位Name(20字元)、欄位Class(1字元)、欄位Major(5字元)

create table Student

(
Name VARCHAR(20),
Class CHAR ,
Major VARCHAR(5)
);

  1. 資料操作語言:DML(Data Manipulation Language) 用來操作(CURD)資料表的語言
  • Example:列出資料表Student裡面所有Class值=w的Name
    SELECT Name FROM Student WHERE Class = ‘w’
  1. VDL( view definition lauguage):用來指定視界(view)與概念綱要的對映

002

2.4 資料庫系統環境(DBMS元件)

元件名稱 功能
儲存資料管理員(stored data manager) 控制存取磁碟上的資料
DDL編譯器 將資料定義語言轉換成meta data
交談式查詢(interactive query) 高度簡易的查詢機制
查詢編譯器(query compiler) 將輸入的高階查詢語言做剖析和處理
查詢最佳化程式(query optimizer) 將輸入的高階查詢語言做優化產生運算動作的執行碼(executable code)然後呼叫執行期間處理器(runtime processor)
執行期間處理器(runtime processor) 接受命令並執行運算
前置編譯器(pre- compiler) 取出DML命令
DML編譯器 將DML命令編譯成目的碼(object code)
主機語言編譯器(host language compiler) 處理程式中除DML以外的其他部分

003.png

2.5 DBMS架構

  • 主從式架構(二層式two-tier):分為伺服端層級(server level)以及客戶端層級(client level)
  • 三層式架構:展示層 業務邏輯層 資料存取層

第三四章:使用高階概念資料模型來進行資料庫設計

ER圖示整理

  1. ER綱要圖:用來設計資料庫綱要的模式圖,塑模使用
  2. 實體(方形):一種現實世界存在的資料,通常是一個獨立的物件(EX:學生)
  3. 弱實體(重方形):依附於實體的存在的實體,假如該依附的實體被刪除了, 弱實體也不會存在(EX:學生家長)
  4. 關係(菱形):實體和實體之間必須靠關係才能產生聯繫。
  5. 屬性(圓形):某實體的資料,是該實體特有的性質(EX:某學生的姓名,電話,)
  6. 鍵屬性:可以唯一識別實體的資料(EX:某學生的編號)
  7. 推導屬性(虛線圓形):可從已知屬性經過計算而得
  8. 複合屬性:兩主屬性整合
  9. 多值屬性(雙圓形):有多筆資料的屬性

ER圖實作練習1

※一對多也會用雞爪圖表示

ER圖分析步驟

1.檢查實體關係是否有多對多的情形,若有,增加關聯實體轉換成一對多

t4_2_06

  1. 針對圖表做轉換到資料綱要
項目 處理 目標
實體 CREATE TABLE實體

(屬性 型態);

資料表
多值屬性 CREATE TABLE多值屬性名

(ID 型態);

資料表
複合屬性 CREATE TABLE複合屬性名

(單一屬性 型態);

資料表
衍生屬性 計算值 欄位
一般屬性 見(實體) 欄位(資料表就是對應的實體)

※1對多必須多一個外來鍵置於多的那一個資料表,已便關聯到另一個資料表的主鍵。
※1對1關聯時,如果其中一個實體只有單一屬性,則可併入另一個資料表中,否則獨立為一個資料表,則仍須多一個外來鍵置已便關聯到另一個資料表的主鍵。

3.轉換綱要表:

學生(姓名,學號,生日,星座)

姓名(姓名,姓氏,名子)

興趣(姓名,興趣)

學生家長(家長姓名,學生姓名)

…(未實作完全)

4.連接外來鍵(注意外來鍵必須是來源資料表的唯一(可不是主鍵)

學生(姓名)->姓名(姓名)

學生(姓名)->興趣(姓名)

學生(姓名)-> 學生家長(學生姓名)

…(未實作完全)

5.利用SQL指令建立

5.1關聯模型的概念

概念 白話文 用意
值組(tuple) 資料欄裡面的整個橫向資料 一筆實體的完整屬性記錄
基數(Cardinality)又稱向度(Degree) 資料欄裡面的整個橫向資料有幾個欄位 值組的數目
主鍵(Primary Key)

PK

識別一筆實體屬性的唯一值 當作查詢的參考
外來鍵(FOREIGN KEY)

FK

用某個主鍵可以對應到別的表格的欄位 產生實體之間的互相參考
超級鍵(super key)

SK

唯一性  
候選鍵(candidate key)

CK

最少性(鍵值欄位之屬性個數為最少)+ 唯一性 成為可能的主鍵選項

※外來鍵不一定是主鍵,但一定參考自主鍵

5.2 5.3關聯限制

『鍵值完整性限制』 (Key Integrity Constraint)

—關聯表一定擁有一個唯一和最小的主鍵(Primary Key)。

『領域完整性限制』 (Domain Integrity Constraint)

—資料輸入的值受到規範

『實體完整性限制』 (Entity Integrity Constraint)

—關聯表的主鍵不可以是空值

『參考完整性限制』 (Referential Integrity Constraint)

—外來鍵對應到回去的父關聯(也就是主鍵)不可以是空值

『使用者自訂的完整性限制』 (User-Defined Integrity Constraint)

—使用者自訂