1.1資料庫簡介
- 資料庫(database):是一組相關資料的集合,透過資料(data),我們能得知事實及隱含的意義。
- 資料庫呈現了真實世界的某些觀點,因此也稱作迷你世界(miniworld)或探討領域(Universe od Discourse =UoD)
- 資料庫管理系統(Database Mansgement System=DBMS) 是一組能讓使用者有能力去建立維護資料庫的程式的集合,是通用(geeneral-purpose)的軟體系統。
1.2資料庫簡介範例
- 我們必須為紀錄(record)中的每個元素(element)指定一個資料型態(data type)
- 大多數資料庫都包含了多種紀錄而記錄之間存在需多關係(relationship)
- 資料庫的操作包含新增(Create),讀取(Read),更新(Update),刪除(Delete);通常會被簡寫為CRUD
1.3資料庫技術的特性
- 資料庫技術是將資料維護在單一的倉庫(Repository)中它只需要定義一次,就可讓不同的使用者存取。
- 資料庫技術的特徵:
- 自我描述(self-describing):相關的實作有DBMS目錄(catalog)底下的定義,而我們稱這些資訊(information)為中繼資料(meta-data){描述資料的資料}。
- 隔離程式與資料,和資料抽象化(data abstraction):把資料結構和操作資料檔的程式分離
- 多重視界(multiple views):就是讓使用者可操作的資料分成不同。
- 交易處理(transaction):控制並行存取,讓資料保持一致,遵守隔離性(isolation)(確保同時進行的多筆交易不互相干擾)和不可分割性(atomicity)(確保每筆交易都會全部做完)
1.4 1.5舞台上的演員(與資料庫相關的人員)
DBA:資料庫管理師
DBD:資料庫設計師
End User:終端使用者
2.1 資料模型、綱要、實例
- 資料模型(data modle):用來描述資料庫結構概念的集合。
- 資料綱要(database schema):資料庫結構的描述以及應該遵守的限制。
- 實體(enity):真實世界的一筆資料或物件。
- 高階(概念)資料模型:以抽象概念的關係儲存為為主,隱藏儲存細節。
- 低階(實體/物理)資料模型:以描述資料儲存細節為主。
- 象徵(實作Implementation Data Model)資料模型:介於高低階模型,目前大多資料庫都採這種方式。
2.2 DB的三層綱要架構
- 內部綱要internal schema:用來描述實際的資料庫儲存結構
- 概念綱要conceptual schema:以使用者(DBA或程式設計師)的角度來描述整個資料庫的結構
- 外部綱要(視界綱要)external schema:以不同使用者的角度來描述資料庫的部份內容(view)
- 多external schema合併= conceptual schema,實作到電腦上=internal schema
2.3 DBMS語言
- 資料定義語言:DDL(Data Definition Language) 用來產生、定義資料表的語言
- Example:定義資料表名稱: Student、欄位Name(20字元)、欄位Class(1字元)、欄位Major(5字元)
create table Student
(
Name VARCHAR(20),
Class CHAR ,
Major VARCHAR(5)
);
- 資料操作語言:DML(Data Manipulation Language) 用來操作(CURD)資料表的語言
- Example:列出資料表Student裡面所有Class值=w的Name
SELECT Name FROM Student WHERE Class = ‘w’
- VDL( view definition lauguage):用來指定視界(view)與概念綱要的對映
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以外的其他部分 |
2.5 DBMS架構
- 主從式架構(二層式two-tier):分為伺服端層級(server level)以及客戶端層級(client level)
- 三層式架構:展示層 業務邏輯層 資料存取層
第三四章:使用高階概念資料模型來進行資料庫設計
ER圖示整理
- ER綱要圖:用來設計資料庫綱要的模式圖,塑模使用
- 實體(方形):一種現實世界存在的資料,通常是一個獨立的物件(EX:學生)
- 弱實體(重方形):依附於實體的存在的實體,假如該依附的實體被刪除了, 弱實體也不會存在(EX:學生家長)
- 關係(菱形):實體和實體之間必須靠關係才能產生聯繫。
- 屬性(圓形):某實體的資料,是該實體特有的性質(EX:某學生的姓名,電話,)
- 鍵屬性:可以唯一識別實體的資料(EX:某學生的編號)
- 推導屬性(虛線圓形):可從已知屬性經過計算而得
- 複合屬性:兩主屬性整合
- 多值屬性(雙圓形):有多筆資料的屬性
※一對多也會用雞爪圖表示
ER圖分析步驟
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)
—使用者自訂
近期迴響