1.57k likes | 1.86k Views
資料庫系統簡介. 資料庫系統 (Database System) 分成兩個部份: 資料庫 (Database) 是儲存資料的地方。 資料庫管理系統 (DataBase Management System, DBMS) 則是指管理資料庫的軟體 , 它們負責使用者與資料庫之間的溝通 , 如存取資料庫中的資料、以及管理資料庫的各項事務等。. 關聯式資料庫的內部結構. 關聯式資料庫最大的特色是將資料分類儲存在 資料表 (Table) 中。. 資料庫管理系統的基本功能. 資料定義 資料處理 資料安全 資料備份. 資料庫系統的使用者.
E N D
資料庫系統簡介 • 資料庫系統(Database System) 分成兩個部份: • 資料庫(Database) 是儲存資料的地方。 • 資料庫管理系統(DataBase Management System, DBMS) 則是指管理資料庫的軟體, 它們負責使用者與資料庫之間的溝通, 如存取資料庫中的資料、以及管理資料庫的各項事務等。
關聯式資料庫的內部結構 • 關聯式資料庫最大的特色是將資料分類儲存在資料表(Table) 中。
資料庫管理系統的基本功能 • 資料定義 • 資料處理 • 資料安全 • 資料備份
資料庫系統的使用者 • 資料庫設計者 (Database Designer) • 資料庫管理者 (DataBase Administrator, DBA) • 應用程式設計者 (Application Designer) • 一般使用者 (End user)
資料庫規劃 • 簡易的規劃流程 • 收集資料項並轉換成欄位 • 認識關聯、Primary Key 與 Foreign Key • 資料的完整性 • 資料表的關聯種類 • 資料庫的正規化分析
簡易的規劃流程 • 第一階段:收集完整且必要的資料項, 並轉換成資料表的欄位形式。 • 第二階段:將收集的欄位做適當分類後, 歸入不同的資料表中, 並建立資料表間的關聯。
收集資料項並轉換成欄位 • 收集必要且完整的資料項
收集資料項並轉換成欄位 • 轉換成資料表的欄位
收集資料項並轉換成欄位 • 轉換成資料表的欄位
關聯 • 下圖的訂單資料表與客戶資料表, 因為客戶編號欄位而產生關聯:
分割資料表並建立關聯的優點 • 節省儲存空間 • 減少輸入錯誤 • 方便資料修改
節省儲存空間 • 當書籍資料表需要使用到作者名稱或分類時, 就可以經由關聯, 到作者資料表與分類資料表中選取:
Primary key • Primary key 是用來辨識記錄的欄位, 具有唯一性, 且不允許重複。
Foreign key • 在關聯式資料庫中, 資料表之間的關係是藉由 Foreign key 來建立的:
資料的完整性 • 實體完整性 (Entity Integrity) • 區域完整性 (Domain Integrity) • 參考完整性 (Referential Integrity) • 使用者定義的完整性 (User-defined Integrity)
資料表的關聯種類 • 一對一關聯 (one-to-one) • 一對多關聯 (one-to-many) • 多對多關聯 (many-to-many)
資料庫的正規化分析 • 正規化就是要讓資料庫中重複的資料減到最少, 讓我們能夠快速地找到所要的資料, 以提高關聯式資料庫的效能。
資料庫的正規化之前 • 資料表必須先設好 Primary key • 確定資料表中所有欄位的值是不可分割的
資料庫的正規化 • 規則 1 :除去同類型的欄位 • 規則 2 :非 Primary key 的欄位需與整個 Primary key 有直接相關性 • 規則 3 :非 Primary key 的欄位間不應有從屬關係
規則 1 :除去同類型的欄位 • 規則 1稱為第一階正規化 (1st Normal Form;1NF) - 其目的在除去同類型的欄位, 亦即同類型的欄位不能重複:
規則 2 :非 Primary key 的欄位需與整個 Primary key 有直接相關性 • 規則 2稱為第二階正規化(2nd Normal Form;2NF) - 目的在除去僅與部份 Primary key 相依的欄位。
規則 3 :非 Primary key 的欄位間不應有從屬關係 • 規則 3稱為第三階正規化(3rd Normal Form;3NF) - 目的在除去所有非 Primary key 的欄位間的相依性。
正規化的另類思考 • 不必要的分割 • 人工的分割
不必要的分割 • 正規化的工作有時不必做得非常徹底, 例如郵遞區號與縣市、區若分割後, 每次查詢都要多一道還原手續, 實無必要:
人工的分割 • 有時為了增加資料處理的效率, 我們會將已經符合 3NF 的資料表再做分割。
SQL 語言的興起與語法標準 • SQL 語言與傳統程式語言的差別 • 關鍵字、子句與敘述 • SQL 語言的功能分類 • 資料型別 • 欄位的 NULL 值與 DEFAULT 值 • 識別名稱 (Identifier)
SQL 語言的興起與語法標準 • SQL 語言是在 1970 年代晚期, 由 IBM 公司在美國加州聖荷西的研究單位所發展出來的一套程式語言, 當時是使用於 DB2 關聯式資料庫系統。 • 為了避免各產品之間的 SQL 語法不相容, 因此由 ANSI (American National Standards Institute, 美國國國家標準局) 制定 SQL-92, 定義出 SQL 的關鍵字與語法標準, 以提高各家產品在 SQL 語法上的相容性。
SQL 語言與傳統程式語言的差別 • SQL 語言寫成的程式必須應用在資料庫管理系統中, 本身並不能獨立執行, 為非程序性(non-procedural) 語言:
結構化查詢語言 SQL • 假設要在訂單資料庫中建立一個客戶資料表, 可以執行以下的 SQL 敘述:
結構化查詢語言 SQL • 建立出來的資料表:
關鍵字、子句與敘述 • SQL 語法的基礎是子句(clause), 子句中會包括一些關鍵字(keyword)。一組可產生存取資料庫結果的子句集合則稱為敘述(statement)。
SQL 語言的功能分類 • 資料定義語言 (Data Definition Language, DDL)
SQL 語言的功能分類 • 資料處理語言 (Data Manipulation Language, DML)
SQL 語言的功能分類 • 資料控制語言 (Data Control Language, DCL) 一般是指專門用來設定資料庫物件使用權限的敘述。
整數 精確位數 近似浮點數值 日期時間 字串 Unicode 字串 二元碼字串 貨幣 標記 其它 資料型別
識別名稱的表示法 • 識別名稱的可用字元:
用 CREATE TABLE 敘述建立資料表 • CREATE TABLE 敘述的語法 • 設定資料表名稱 • 定義欄位屬性 • 設定欄位的條件約束 • 設定資料表條件約束 • 指定檔案群組 • 建立計算欄位
DEFAULT 值 • 建立一個訂單資料表, 其中有 3 個欄位設有 DEFAUL 值:
DEFAULT 值 • 分別加入 3 筆記錄到訂單資料表中:
DEFAULT 值 • 將訂單資料表中的記錄顯示出來:
新增記錄 - INSERT 敘述 • 基本用法 • INSERT/SELECT