Chap 5 關聯式代數與計算.

Slides:



Advertisements
Similar presentations
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
Advertisements

第6章 数据库管理软件Access 年秋.
政府採購法令概要 政府採購類型 1.工程採購 2.財物採購 3.勞務採購.
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
關聯查詢.
SQL的简单查询.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
Network Database Programming
第2章 数据模型 本章学习要求: 1. 层次数据模型、网状数据模型 了解层次及网状数据模型的基本概念和结构。 2. 关系数据模型
第2讲 Transact-SQL语言.
第六章 資料倉儲與採礦技術 6.1 資料倉儲與採礦定義 6.2 資料採礦之步驟與技術分類 6.3 資料採礦在顧客關係管理之應用
第六节 心律失常 蚌埠医学院附属医院诊断学教研室.
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
Chap 11 SQL基本查詢指令.
™ 全球,唯一支持第三方自动部署的交易系统 中国产权交易所有限公司 二〇一四年十月 超级交易系统V1.0
第3章 关系数据库的基本理论 冯万利.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
非计算机应用专业教材 数据库原理与应用 李 明 科学出版社.
Principles and Applications of the Database
数据库原理及设计 --作业.
第一讲 数据查询优化.
Chap 13 視界與資料庫程式設計.
第 10 章 更多的查詢技巧.
元培科技大學 國泰人壽 為貴校創造 千萬福利金 員工福利專案 Department / Author:國泰人壽 / 黃國華 首頁:
软件设计师培训.
定风波.
第1章 数据库基础 1.1 数据库基本概念 数据处理 数据(Data)是对客观事物的某些特征及其相互联系的一种抽象化、符号化表示。 例如:王华出生日期为1970年7月12日,身高1.75m,体重65kg,部门代码A01,职称是副教授,其中王华、1970年7月12日、1.75m、65kg、A01、副教授等都是数据.
第3章 数据查询与SQL命令.
政府採購法令概要 政府採購類型 1.工程採購 2.財物採購 3.勞務採購 1.
廠商 習題 5.舉例說明外來鍵與它所參考的主鍵 可以屬於同一關聯表。
Chapter 5 Relational Algebra
大学生 就业、生活及价值观追踪调查2013年度数据发布
關聯式資料庫.
第六章 學習SQL語言.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式
Chap 10 SQL定義、操作與控制指令.
第4章(2) 空间数据库 —关系数据库 北京建筑工程学院 王文宇.
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
实验 2:MS Access QBE Query使用
第九章 進階的查詢技巧.
第一章 線性方程組.
MySQL 結構化查詢語言 MySQL.
An Introduction to Database System An Introduction to Database System
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
数据库技术.
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
SAP Query 建立User Group (SQ03) 建立Infoset (SQ02)
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
学习目标 1、什么是表连接 2、表连接类型 3、表连接区别.
数据透视表与SQL典型应用 ——数据分析人士必杀技
查询与视图 蔡海洋.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
本讲内容 SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能.
第三章 SQL Server数据管理.
資料庫管理 Database Managent Ex.1-2 課本範例練習
資料庫系統  Database System 施莉萍 2017/12/28.
LINQ 語法簡介 設計人:顏嘉君.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
第二章关系数据库 2.1关系数据库概述 2.2关系数据结构 2.3关系的完整性 2.4关系代数 2.5关系演算** 2.6关系数据库管理系统.
Web安全基础教程
第 9 章 查詢資料- 善用 SELECT 敘述.
96 教育部專案補助計畫案明細 單位 系所 教育部補助款 學校配合款 工作໨目 計畫主 持人 備註 設備費 業務費 579,000
Presentation transcript:

Chap 5 關聯式代數與計算

5-1 關聯式代數的基礎 對於關聯式資料庫模型的資料操作或運算來說,E. F. Codd提出兩種存取關聯式資料庫的基礎查詢語言,如下所示: 關聯式代數(Relational Algebra):一種低階的運算子導向語言(Operator-oriented Language),用來描述如何得到結果的步驟,使用關聯式運算子和關聯表建立的運算式進行資料操作或運算。 關聯式計算(Relational Calculus):一種高階的宣告式語言(Declarative Language),其建立的查詢運算式主要是在描述所需的結果。

5-1-1 關聯式代數的運算子 關聯式代數運算子中有些是源於傳統集合論的運算子和數學符號,如下所示: 交集(Intersection):∩ 聯集(Union):∪ 差集(Difference):- 卡笛生乘積(Cartesian Product):x

5-1-1 關聯式代數的運算子 在關聯式代數運算子中屬於特殊關聯式運算子和其數學符號,如下所示: 選取(Selection):δ 投影(Projection):π 合併(Join): 除法(Division):÷

5-1-2 SQL語言與關聯式代數 資料庫管理系統的查詢處理模組(Query Processor)是將SQL指令敘述轉換成關聯式代數運算式,如右圖所示:

5-2 關聯式代數的基本運算 選取(Selection):在指定條件後,可以從關聯表選出指定條件的值組。 投影(Projection):在關聯表只取出所需屬性的集合。 聯集(Union):將2個關聯表的所有值組合併成一個關聯表, 差集(Difference):在2個關聯表中,值組只在第一個運算元的關聯表,而不在第二個運算元的關聯表。 卡笛生乘積(Cartesian Product):在2個關聯表中,第一個運算元的關聯表值組將結合第二個關聯表的所有值組,可以產生一個新的關聯表。

5-2-1 選取運算 選取(Selection)也稱為「限制」運算子,這是一種單運算元(Unary)運算子,可以在關聯表選取指定條件的值組,預設包含所有屬性。例如:Students關聯表,如下圖所示: 選取

5-2-1 選取運算-語法與定義 選取運算子是使用希臘語’δ’符號(Sigma)代表,在δ下標的「謂詞」(Predicate)P是值組特性的描述,相當於是一個選取條件,選取運算的基本語法與定義,如下所示: δp(R) = { t | t∈R∧P(t) } 上述語法使用謂詞P選取關聯表R中符合條件的值組,也就是說,值組t不只屬於關聯表R,而且值組t需要滿足P(t)特性的條件。

5-2-1 選取運算-範例1 以Students關聯表為例的選取運算式範例,例如:選取GPA小於3.2的學生值組示: Result = δGPA < 3.2 (Students) SELECT * FROM Students WHERE GPA < 3.2

5-2-1 選取運算-範例2 選取GPA小於3.2且學號小於S003的值組,如下所示: Result1 = δGPA < 3.2 ∧ sid < ‘S003’ (Students) SELECT * FROM Students WHERE GPA < 3.2 AND sid < ‘S003’

5-2-2 投影運算 投影(Projection)運算子是一種單運算元(Unary)運算子,它是關聯表屬性的投影,只取出部分關聯表的屬性,而且在運算式結果的關聯表會刪除重複值組。例如:Instructors關聯表,如下圖所示:

5-2-2 投影運算-語法與定義 投影運算子是使用希臘語’π’符號(Pi)代表,其下標是取出的屬性清單,投影運算的基本語法與定義,如下所示: πattr1, attr2, …, attrn (R) ={ t[attr1, attr2, …, attrn] | t∈R } 上述語法取出關聯表R中下標屬性清單的定義域集合t[attr1, attr2, …, attrn]。

5-2-2 投影運算-範例1 以Instructors關聯表為例的投影運算式範例,例如:只選取關聯表的eid、name和rank三個屬性,如下所示: Result = πeid, name, rank (Instructors) SELECT eid, name, rank FROM Instructors

5-2-2 投影運算-範例2 找出各老師所屬的科系一共有那些科系,如下所示: Result1 = πdepartment(Instructors) SELECT DISTINCT department FROM Instructors

5-2-2 投影運算-範例3 投影運算式還可以配合選取運算子來篩選值組,例如:在Instructors關聯表選取salary大於55000的值組,而且只顯示eid、name和salary一共3個屬性,如下所示: Result2 = πeid, name, salary (δsalary > 55000 (Instructors)) SELECT DISTINCT eid, name, salary FROM Instructors WHERE salary > 55000

5-2-3 聯集運算 聯集(Union)運算源於傳統集合論,聯集是一種二元運算子,可以將2個關聯表的所有值組合併成一個關聯表,而且會將重複值組刪除掉。

5-2-3 聯集運算-語法與定義 若關聯表R與S為聯集運算的2個運算元,且都滿足「聯集相容」,聯集運算的基本語法與定義,如下所示: R∪S = S∪R = { t | t∈R∨t∈S } 上述語法的聯集運算滿足交換律,也滿足結合律,運算取出屬於關聯表R或屬於關聯表S的值組t。

5-2-3 聯集運算-聯集相容 在聯集運算的2個關聯表都需滿足聯集相容的2個條件,如下所示: 運算式2個關聯表運算元必須擁有相同的屬性數,即相同維度。 對應屬性必須擁有相同的定義域。

5-2-3 聯集運算-範例1 以Inventory1和Inventory2關聯表為例的聯集運算式範例,如下所示: Result = Inventory1∪Inventory2 運算式相當於SQL語言的SELECT和UNION指令,如下所示: SELECT * FROM Inventory1 UNION SELECT * FROM Inventory2

5-2-3 聯集運算-範例2 在聯集運算式的2個關聯表一定擁有相同的關聯表綱要。 如果是2個不同的關聯表綱要,只需部分屬性相同,一樣可以配合投影運算,取出2個關聯表中相同部分的屬性和定義域進行聯集運算。

5-2-3 聯集運算-範例2 Students和Instructors關聯表擁有相同屬性city,可以執行聯集運算,如下所示: Result1 = πcity(Students)∪πcity(Instructors) SELECT city FROM Students UNION SELECT city FROM Instuctors

5-2-4 差集運算 差集(Difference)是二元運算子,運算結果的值組只在第一個運算元的關聯表,而不在第二個運算元的關聯表。

5-2-4 差集運算-語法與定義 若關聯表R與S滿足聯集相容,差集運算的基本語法與定義,如下所示: R-S = { t | t∈R∧¬(t∈S) }≠S-R 上述語法的差集運算並不滿足交換律,也不滿足結合律,運算取出屬於關聯表R的值組t,但是不屬於關聯表S。

5-2-4 差集運算-範例1 以Inventory1和Inventory2關聯表為例的差集運算式範例,如下所示: Result1= Inventory1-Inventory2 Result2 = Inventory2-Inventory1 運算式相當於SQL語言的SELECT和EXCEPT指令: SELECT * FROM Inventory1 EXCEPT SELECT * FROM Inventory2 和

5-2-4 差集運算-範例2 如果有2個不同的關聯表綱要,只需配合投影運算,取出2個關聯表中相同部分的屬性和定義域,就可以滿足聯集相容條件進行差集運算,例如:Students和Instructors關聯表,如下圖所示:

5-2-4 差集運算-範例2 Students和Instructors關聯表擁有相同屬性city,可以執行差集運算,如下所示: Result2 = πcity(Students)- πcity(Instructors) SELECT city FROM Students EXCEPT SELECT city FROM Instructors

5-2-5 卡笛生乘積運算 卡笛生乘積運算(Cartesian Product)是多個關聯表的關聯查詢基礎,在關聯查詢時,需要結合2個關聯表的值組,以便從一個關聯表找出另一個關聯表中相關聯的值組。 卡笛生乘積運算也稱為交叉合併(CROSS JOIN)。 卡笛生乘積是一種二元運算子,這是指在2個關聯表中,第一個運算元的關聯表值組將結合第二個關聯表的所有值組,以便產生一個新關聯表。

5-2-5 卡笛生乘積運算

5-2-5 卡笛生乘積運算-語法與定義 若存在關聯表R與S,卡笛生乘積運算的基本語法與定義,如下所示: R x S = { t | t = (r, s), r=(r1, r2, …, rm)∈R, s=(s1, s2, … sn)∈S } = S x R 上述語法的卡笛生乘積運算滿足交換律和結合律,因為是關聯表R與S所有可能值組的組合,值組t結合關聯表R和S的值組(r, s),相當於:(r1, r2, …, rm, s1, s2, … sn)。 對於同名的屬性,請加上關聯表名稱字頭以供區別,例如:Students.name和Departments.name。

5-2-5 卡笛生乘積運算-範例1 Students和Departments關聯表的卡笛生乘積運算式範例,如下所示: Result = Students × Departments 卡笛生乘積運算配合選擇運算可以看到2個關聯表的關聯查詢結果,如下所示: Result1 = δStudents.d_no = Departments.d_no (Students × Departments)

5-2-5 卡笛生乘積運算-範例2 卡笛生乘積運算結果還可以再加上投影運算,刪除不需要的屬性,如下所示: Result2 = δStudents.d_no = Departments.d_no( πsid, Students.name, Departments.name, room (Students x Departments))

5-3 關聯式代數的非基本運算 交集(Intersection):將2個關聯表的相同值組取出成一個關聯表。 合併(Join):在2個關聯表使用相同定義域的屬性為條件合併2個關聯表。 除法運算(Division):在2個關聯表中,一個關聯表是除關聯表,一個是被除關聯表,可以找出除關聯表在被除關聯表中的「所有」資料。

5-3-1 交集運算 交集(Intersection)運算和聯集、差集運算一樣源於集合論,交集運算是將2個關聯表的相同值組取出成一個關聯表。

5-3-1 交集運算-語法與定義 若關聯表R與S都滿足聯集相容,交集運算的基本語法與定義,如下所示: R∩S = S∩R = { t | t∈R∧t∈S } 上述語法的聯集運算滿足交換律,也滿足結合律,運算取出屬於關聯表R且屬於關聯表S的值組t。 交集可以使用差集運算來導出,如下所示: R∩S = R – (R-S) = S-(S-R)

5-3-1 交集運算-範例 以Inventory1和Inventory2關聯表為例的交集運算式範例,如下所示: Result = Inventory1∩Inventory2 運算式相當於SQL語言的SELECT和INTERSECT指令,如下所示: SELECT * FROM Inventory1 INTERSECT SELECT * FROM Inventory2

5-3-1 交集運算-使用差集運算導出1 Inventory1∩Inventory2可以寫成差集運算式,如下所示: Result = Inventory1-(Inventory1-Inventory2) 首先是Inventory1-Inventory2差集運算式的結果,如下圖所示:

5-3-1 交集運算-使用差集運算導出2 接著,Inventory1-(Inventory1-Inventory2)差集運算式的結果。

5-3-2 合併運算 合併運算是在兩個關聯表中,使用具有相同定義域的屬性為條件合併兩個關聯表,相當於先執行基本運算的卡笛生乘積運算,再配合選擇運算取出所需值組的關聯表。 合併運算滿足交換律和結合律,合併運算可以分為數種: θ合併 Equijoin合併 自然合併 外部合併

5-3-2 合併運算-資料表範例

5-3-2 合併運算-θ合併(語法) θ合併是使用謂詞(Predicate)來合併2個關聯表,其基本語法和定義如下所示: R pS = σp(R x S) 上述語法的謂詞P使用 的比較運算子,θ ∈{ =, >, <, ≥, ≤ , ≠ }。

5-3-2 合併運算-θ合併(範例) 例如:Transcripts關聯表與自己本身的θ合併運算式,如下所示: Result = ρA(Transcripts) A.c_no = B.c_no ∧A.score > B.score ρB(Transcripts) SELECT A.*, B.* FROM Transcripts A, Transcripts B WHERE A.c_no = B.c_no AND A.score > B.score

5-3-2 合併運算- Equijoin合併 Equijoin合併是一種特殊情況的θ合併,其合併條件只能使用’=’等號,其基本語法和定義如下所示: R r = s S = σr = s (R x S) 上述語法的條件是r=s,只能使用等號。

5-3-2 合併運算- Equijoin合併 (範例) 例如:Students和Departments關聯表的等位合併運算式,如下所示: Result = Students Student.d_no = Departments.d_no Departments SELECT * FROM Students, Departments WHERE Students.d_no = Departments.d_no

5-3-2 合併運算- 自然合併 自然合併是一種使用主鍵和外來鍵為條件的合併方式,其隱含的條件是主鍵等於外來鍵條件的Equijoin合併 ,所以自然合併屬於一種特殊格式的Equijoin合併 ,其基本語法和定義如下所示: R S = πr∪s(R r = s S) 上述語法並沒有指明條件,這是因為預設使用主鍵和外來鍵對應的條件,即所有共通屬性值(All Common Attributes)都需要相等。 自然合併的執行結果關聯表綱要的共通屬性部分在運算結果中只會顯示一次。

5-3-2 合併運算- 自然合併(範例) 例如:Students和Departments關聯表的自然合併運算式,如下所示: Result = Students Departments SELECT * FROM Students INNER JOIN Departments ON Students.d_no = Departments.d_no

5-3-2 合併運算- 外部合併 外部合併是使用關聯表主鍵和其關聯性(Relationship)關聯表的外來鍵為條件執行合併,只不過這是一種完全的值組合併,運算元的關聯表需要供獻全部值組。 外部合併依供獻的運算元不同可以分為三種: 左外部合併(Left Outer Join) 右外部合併(Right Outer Join) 完全外部合併(Full Outer Join)

5-3-2 合併運算-左外部合併 左外部合併執行結果的關聯表是取回左邊關聯表的所有值組,例如:Students和Instructors關聯表的左外部合併運算式: Result = Studentsleft Instructors

5-3-2 合併運算-右外部合併 右外部合併執行結果的關聯表是取回右邊關聯表的所有值組,例如:Students和Instructors關聯表的右外部合併運算式,如下所示: Result = Students rightInstructors

5-3-2 合併運算-完全外部合併 完全外部合併執行結果的關聯表是取回兩邊關聯表的所有值組,例如:Students和Instructors關聯表的完全外部合併運算式,如下所示: Result = Studentsleft rightInstructors

5-3-3 除法運算-說明 除法運算(Division)類似數學除法,這是一種二運算元的運算子,其中一個運算元關聯表是除關聯表,一個是被除關聯表,可以找出除關聯表在被除關聯表中的「所有」資料。

5-3-3 除法運算-語法與定義(說明) 若關聯表R=(r1, r2, …, rm, s1, s2, …sn),S=( s1, s2, …sn),S的關聯表綱要是R的子集,除法運算的基本語法與定義,如下所示: R÷S = { t | (t x S)⊆R, t∈r1, r2, …, rm(R) } 上述語法的除法運算結果的關聯表綱要為:(r1, r2, …, rm),其值組t屬於關聯表R,在與關聯表S執行卡笛生乘積運算後,其運算結果仍為R的子集。

5-3-3 除法運算-語法與定義(條件) 除法運算的2個運算元需要滿足一些條件,如下所示: 被除關聯表的屬性需要比除關聯表至少多一個,Books關聯表有3個屬性,Authors只有一個。 除關聯表的屬性集合是被除關聯表屬性集合的子集,例如:Books關聯表擁有Authors關聯表的author屬性,它是Books關聯表屬性集合的子集。

5-3-3 除法運算-語法與定義(導出) 除法運算不滿足交換律和結合律,而且並不是關聯式代數的基本運算子,因為它可以使用基本運算子來導出,若關聯表R=(r1, r2, …, rm, s1, s2, …sn),S=( s1, s2, …sn),如下所示: R÷S = πr1, r2, …, rm (R)-πr1, r2, …, rm((πr1, r2, …, rm (R) x S)-R)

5-3-3 除法運算-範例1 Books和Authors關聯表為例的除法運算式範例,如下所示: Result = Books÷Authors 除法運算式可以使用基本運算子導出,Books Authors運算式可以寫成: Result=πcode, title (Books)-πcode, title ((πcode, title (Books) x Authors)-Books)

5-3-3 除法運算-範例1(導出過程1) 首先執行πcode, title (Books) x Authors的卡笛生乘積運算:

5-3-3 除法運算-範例1(導出過程2) 與Books關聯表執行差集運算:(πcode, title (Books) x Authors)-Books,這是Books關聯表中不屬於Books÷Authors的值組,如下: 最後,再與Books關聯表執行差集運算:πcode, title (Books)-πcode, title ((π code, title (Books) x Authors)-Books),就可以得到Books÷Authors的結果。

5-3-3 除法運算-範例2