第1章 緒論
1.1 數據庫系統概述
基本概念
數據:描述事物的符號記錄
數據庫:數據庫是長期儲存在計算機內、有組織的、可共享的大量數據的集合
數據庫系統:數據庫系統是由數據庫、數據庫管理系統(及其應用開發工具)、應用程序和數據庫管理員(DataBase Administrator,DBA)組成的存儲、管理、處理和維護數據的系統
數據獨立性包括物理獨立性和邏輯獨立性
物理獨立性:指用戶的應用程序與數據庫中數據的物理存儲是相互獨立的
邏輯獨立性:指用戶的應用程序與數據庫的邏輯結構是相互獨立的
1.2 概念模型
1.2.1 基本概念
實體(entity):客觀存在並可相互區別的事物
屬性(attribute):實體所具有的某一特性
碼(key):唯一標識實體的屬性集
實體型(entity type):用實體名及其屬性名集合來抽象和刻畫同類實體。例如學生(學號,姓名,性別,出生年月日,所在院系,入學時間)就是一個實體型
實體集(entity set):同一類型實體的集合。例如,全體學生就是一個實體集
聯系(relationship):實體之間的聯系通常是指不同實體集之間的聯系,實體之間的聯系有一對一、一對多和多對多等多種類型
1.2.2 層次模型
類似於樹結構
(1)只有一個根節點
(2)不存在多對一關系,可以有一對一、一對多
1.2.3 網狀模型
(1)允許一個以上的結點無雙親
(2)可以有多對多
1.2.4 關系模型
關系數據庫系統采用關系模型作為數據的組織方式
基本概念:
關系(ralation):一個關系對應通常說的一張表
元組(tuple):表中的一行即為一個元組
屬性(attribute):表中的一列即為一個屬性,給每一個屬性起一個名稱即為屬性名
碼(key):表中的某個屬性組,它可以唯一確定一個元組
域(domain):域是一組具有相同數據類型的值的集合。即某個屬性的取值范圍
分量:元組中的一個屬性值
關系模式:對關系的描述,一般表示為
關系名(屬性1,屬性2,···,屬性n)
1.3 數據庫系統的結構
1.模式(schema)
模式也稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖
2.外模式(external schema)
它是數據庫用戶能夠看見和使用的局部數據的邏輯結構和特征的描述
3.內模式(internal schema)
一個數據庫只有一個內模式。它是數據物理結構和存儲方式的描述
第2章 關系數據庫
2.1 關系數據結構及形式化定義
基本概念:
候選碼:某一屬性組的值能唯一地標識一個元組,而其自己不能,則稱該屬性組為候選碼(candidate key)
主碼:若一個關系有多個候選碼,則選定其中一個為主碼(primary key)
主屬性(prime attribute):候選碼的諸屬性稱為(主屬性)
非主屬性:不包含在任何候選碼中的屬性
全碼(all key):關系模式的所有屬性是這個關系模式的候選碼
2.2 關系的完整性
2.2.1 實體完整性
若屬性A是基本關系的主屬性,則A不能取空值
2.2.2 參照完整性
2.3 關系代數
1.選擇(selection)
選擇是在關系R中選擇滿足給定條件的諸元組,記作
δF(R) = {t|t∈R∩F(t)='真'}
其中F表示選擇條件,它是一個邏輯表達式
例如:查詢信息系(IS系)的學生
δSdept='IS'(Student)
2.投影(projection)
關系R上的投影是從R中選擇出若干屬性列組成新的關系,記作
∏A(R) = {t[A]|t∈R}
其中A為R中的屬性列
例如:查詢學生的姓名和所在系
∏Sname,Sdept(Student)
3.連接
其中,A和B分別為R和S上列數相等且可比的屬性組,θ是比較運算符
- 等值連接:θ為“=”的連接運算
- 自然連接:是一種特殊的等值連接。它要求兩個關系中進行比較的分量必須是同名的屬性組,並且在結果中把重復的屬性列去掉
- 懸浮元組(dangling tuple):因為公共屬性組不相等被舍棄的元組
- 外連接(outer join):把懸浮元組保存在結果關系中
- 左外連接(left outer join或left join):只保留左邊關系R中的懸浮元組
- 右外連接(right outer join或right join):只保留右邊關系S中的懸浮元組
第3章 關系數據標准語言SQL
3.1 數據定義
3.1.1 模式
1.定義模式
CREATE SCHEMA<模式名> AUTHORIZATION<用戶名>
2.刪除模式
DROP SCHEMA<模式名><CASCADE|RESTRICT>
3.1.2 表
1.定義基本表
CREATE TABLE<表名>(<列名><數據類型>[列級完整性約束條件] [,<列名><數據類型>[列級完整性約束條件]] ··· [,<表級完整性約束條件>]);
例如:
2.修改基本表
ALTER TBALE<表名> [ADD [COLUMN]<新列名><數據類型>[完整性約束]] [ADD<表級完整性約束>] [DROP[COLUMN]<列名>[CASCADE|RESTRICT]] [DROP CONSTRAINT<完整性約束名>[RESTRICT|CASCADE]] [ALTER COLUMN<列名><數據類型>];
3.刪除基本表
DROP TABLE <表名> [RESTRICT|CASCADE]
3.1.3 索引
1.建立索引
CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]···);
2.修改索引
ALTER INDEX <舊索引名> RENAME TO <新索引名>;
3.2 數據查詢
SELECT [ALL|DISTINCT] <目標列表達式> [,<目標列表達式>]··· FROM <表名或視圖名> [,<表名或視圖名>···]|(<SELECT 語句>) [AS] <別名> [WHERE <條件表達式>] [GROUP BY <列名1> [HAVING <條件表達式>]] [ORDER BY <列名2> [ASC|DESC]];
3.3 數據更新
3.3.1 插入元組
INSERT INTO <表名>[<屬性列1>][,<屬性列2>···] VALUES(<常量1>[,<常量2>]···)
3.3.2 插入子查詢結果
INSERT INTO <表名>[<屬性列1>][,<屬性列2>···] 子查詢;
3.4 修改數據
UPDATE <表名> SET <列名> = <表達式>[,<列名>=<表達式>]··· [WHERE<條件>];
3.5 刪除數據
DELETE FROM <表名>
[WHERE<條件>];
3.6 視圖
3.6.1 定義視圖
CREATE VIEW <視圖名>[(<列名>[,<列名>]···)] AS <子查詢> [WITH CHECK OPTION]
當更新、插入或刪除時,WITH CHECK OPTION可以將子查詢中的條件自動加上
3.6.2 刪除視圖
DROP VIEW <視圖名> [CASCADE]
第4章 數據庫安全性
4.1 數據庫安全性控制
4.1.1 授權:授予與收回
1.GRANT
GRANT <權限>[,權限]··· ON <對象類型><對象名>[,<對象類型><對象名>]··· TO <用戶>[,<用戶>]··· [WITH GRANT OPTION]
如果指定了WITH GRANT OPTION子句,則獲得某種權限的用戶還可以把這種權限再授予其他的用戶
2.REVOKE
REVOKE<權限>[,<權限>]··· ON <對象類型><對象名>[,<對象類型><對象名>]··· FROM <用戶>[,<用戶>]···[CASCADE|RESTRICT]
4.1.2 數據庫角色
1.角色的創建
CREATE ROLE <角色名>
2.給角色授權
GRANT <權限>[,<權限>]··· ON <對象類型>對象名 TO <角色>[,<角色>]···
3.將一個角色授予其他的角色和用戶
GRANT <角色1>[,<角色2>]··· TO <角色3>[,<用戶1>]··· [WITH ADMIN OPTION]
如果指定了WITH ADMIN OPTION子句,則獲得某種權限的角色或用戶還可以把這種權限再授予其他的角色
4.角色權限的收回
REVOKE <權限>[,<權限>]··· ON <對象類型><對象名> FROM <角色>[,<角色>]···
第6章 關系數據理論
6.1 規范化
一個低一級范式的關系模式通過模式分解(schema decomposition)可以轉換為若干個高一級范式的關系模式的集合,
這種過程就叫規范化(normalization)
6.1.1 第一范式(1NF)
每一個分量必須是不可分的數據項
6.1.2 第二范式(2NF)
若R∈1NF,且每一個非主屬性完全函數依賴於任何一個候選碼,則R∈2NF
例如:SLC的碼為(Sno,Cno),Sdept和Sloc依賴於Sno,不依賴於Cno,則不滿足第二范式
6.1.3 第三范式(3NF)
若R∈2NF,且非主屬性不能有傳遞依賴
例如:SLC的碼為(Sno,Cno),Sno決定Sdept,Sdept決定Sloc,存在Sno->Sdept->Sloc這樣的傳遞依賴,則不滿足第三范式
6.1.4 BCNF(Boyce Codd Normal Form)
若R∈3NF,且不能有主屬性對碼的部分依賴和傳遞依賴