課程名稱:資料庫系統 授課老師:李春雄 博士

Slides:



Advertisements
Similar presentations
必修部分 必修部分 延伸部分 單元 2 Module 2 (M2) 代數與微積分 延伸部分 單元 2 Module 2 (M2) 代數與微積分 延伸部分 單元 1 Module 1 (M1) 微積分與統計 延伸部分 單元 1 Module 1 (M1) 微積分與統計 新高中數學科 同學可加選以下一個單元修讀.
Advertisements

2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
命题探究 从地形、气候、自然资源、自然灾害等地理要 素对农业、工业、交通运输和聚落的影响方面正确 认识人地关系,以谋求人类与自然环境和谐发展 第四章 自然环境对人类活动的影响 考纲解读 1. 地表形态对聚落及交通线路分布的影响 2. 全球气候变化对人类活动的影响 3. 自然资源对人类生存与发展的意义.
說 劍 《莊子‧雜篇》─ 第 一 組 賴泊錞 謝孟儒 張維真 羅苡芸
第一章 有理数 一.本章学习目标 1.理解有理数的意义,能用数轴上的点表示有理数,能比较有理数的大小.
使用說明 高年級 破解賽恩思 (Science)密碼 編輯群 明湖國小 吳立明 老師 李惠雯 老師 林宜璇 老師.
Visual Foxpro程序设计 张文祥 主编 主讲教师: 李勤.
SQL的简单查询.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
第2章 数据模型 本章学习要求: 1. 层次数据模型、网状数据模型 了解层次及网状数据模型的基本概念和结构。 2. 关系数据模型
第六章 資料倉儲與採礦技術 6.1 資料倉儲與採礦定義 6.2 資料採礦之步驟與技術分類 6.3 資料採礦在顧客關係管理之應用
第8章 数据库技术基础 数据库可以直观地理解为存放数据的仓库,只 不过这个仓库是在计算机的大容量存储器上。
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
第3章 关系数据库的基本理论 冯万利.
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
非计算机应用专业教材 数据库原理与应用 李 明 科学出版社.
Principles and Applications of the Database
忠孝國小自立午餐老師的叮嚀 教師指導手冊.
数据库原理及设计 --作业.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
文科计算机小公共课规划教材 Access 程序设计.
华东师范大学 软件工程硕士答辩名单 时间:2016年5月14日、15日.
软件设计师培训.
数据库原理与应用.
第1章 数据库基础 1.1 数据库基本概念 数据处理 数据(Data)是对客观事物的某些特征及其相互联系的一种抽象化、符号化表示。 例如:王华出生日期为1970年7月12日,身高1.75m,体重65kg,部门代码A01,职称是副教授,其中王华、1970年7月12日、1.75m、65kg、A01、副教授等都是数据.
高二数学 选修2-1(理) 四种命题的关系 湖南省汉寿县第三中学 制作人:艾镇南.
第三章 描述和分析问题.
第3章 数据查询与SQL命令.
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
苏教版小学数学六年级(下册) 认识正比例的量 执教者:朱勤.
Chapter 5 Relational Algebra
關聯式資料庫.
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
第六章 學習SQL語言.
Chap 5 關聯式代數與計算.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
資料庫安全 (Database Security)
第4章(2) 空间数据库 —关系数据库 北京建筑工程学院 王文宇.
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
实验 2:MS Access QBE Query使用
第九章 進階的查詢技巧.
Skew Join相关论文 报告人:蔡珉星 厦大数据库实验室
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
An Introduction to Database System An Introduction to Database System
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
CH03 行銷資訊系統資料庫模組--資料庫概論
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
CS, ZJU 4/18/2019 Chapter 7 数据库.
学习目标 1、什么是表连接 2、表连接类型 3、表连接区别.
数据透视表与SQL典型应用 ——数据分析人士必杀技
查询与视图 蔡海洋.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
107學年度高雄區國中技藝技能 優良學生甄審入學說明會
本讲内容 SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能.
第三章 SQL Server数据管理.
資料庫管理 Database Managent Ex.1-2 課本範例練習
充分条件与必要条件.
資料庫系統  Database System 施莉萍 2017/12/28.
108學年度高雄區國中技藝技能 優良學生甄審入學說明會
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
第二章关系数据库 2.1关系数据库概述 2.2关系数据结构 2.3关系的完整性 2.4关系代数 2.5关系演算** 2.6关系数据库管理系统.
資料庫應用與實作 一到六章重點、習題.
第 9 章 查詢資料- 善用 SELECT 敘述.
Presentation transcript:

課程名稱:資料庫系統 授課老師:李春雄 博士 第 五 章 關聯式模式的資料運算 課程名稱:資料庫系統 授課老師:李春雄 博士 各位同學大家好,我是李春雄老師,本學期所開設的課程名稱為「資料結構」, 今天所要為各位介紹的是第一章「資料結構導論」

本章學習目標 1.讓讀者瞭解SQL語言與關聯式代數的關係。 2.讓讀者瞭解關聯式代數與關聯式計算的差異。 開始: 本章學習目標 有二項:

本章內容 5-1 關聯式模式的資料運算 5-2 關聯式代數 5-3 限制(Restrict) 5-4 投影(Project) 5-1 關聯式模式的資料運算 5-2 關聯式代數 5-3 限制(Restrict) 5-4 投影(Project) 5-5 聯集(Union) 5-6 卡氏積(Cartesian Product) 5-7 差集(Difference) 5-8 合併(Join) 5-9 交集(Intersection) 5-10 除法(Division) 5-11 非基本運算子的替代 5-12 外部合併(Outer Join)  1-1 認識資料與資訊的關係: 其中,「資料」轉換成「資訊」必須要經過一連串處理過程,而這一連串的處理過程就是透過「程式」來處理。 1-2 何謂資料結構? 「資料結構」(Data Structures)主要是探討如何將資料更有組織地存放到電腦記憶體中,以提昇程式之執行效率的一 門學問。 1-3 何謂演算法?演算法就是「解決問題的方法」 1-4 程式設計概念: 步驟1. 分析所要解決的問題 步驟2. 設計解題的步驟 步驟3. 編寫程式 步驟4. 上機測試、偵測錯誤 步驟5. 編寫程 式說明書 1-5 結構化程式設計 利用「由上而下」的技巧,將程式分解成許多個獨立功能的模組。並且每一個模組都是由三種結構所組成。分別為循序結構、選擇結構及重複結構。 1-6 演算法的效率評估 指用來計算某些演算法所撰寫的程式,在經過編譯之後,實際執行所需要的時間。

5-1. 關聯式模式的資料運算 基本上,關聯式模式的資料運算可分為二種分別為: 一、關聯式代數(Relational Algebra) 5-1. 關聯式模式的資料運算  基本上,關聯式模式的資料運算可分為二種分別為: 一、關聯式代數(Relational Algebra) 二、關聯式計算(Relational Calculus)

一、關聯式代數(Relational Algebra) 【定義】是一種較低階的、程序性的、規範性之抽象的查詢語言,它 是來描述如何產生查詢結果的步驟。我們可以想像成「演算 法」,亦即描述解決問題的步驟。 【運算子】基本上,關聯式代數包括一些運算子 1.聯集 2.交集 3.差集 4.乘積 5.選擇(限制) 6.投影 7.合併 8.除法 其關聯(Relation)運算之後的輸出仍為關聯(Relation)。

二、關聯式計算(Relational Calculus) 【定義】 是一種較高階的,非程序性的、問題導向的、描述性的查詢語言,它使用「邏輯方法」表示關聯模型。它是由E.F. Codd在1972年所定義的關聯式系統的查詢語言。 如果一種語言具有與關聯式計算一樣的功能時,則稱該語言具有 關聯完全性。例如:QUEL及SQL查詢語言具有關聯完全性。

「關聯式代數」與「關聯式計算」的比較 【註】SQL(Structured Query Language)是關聯式代數與關聯式計算 「關聯式代數」與「關聯式計算」的比較  關聯式代數 關聯式計算 為一程序式的查詢語言 為一非程序式查詢語言 必須明白地指出運算的順序 不須明白地指出運算的順序 如何(“How”)取得 取得什麼(“What”) 具有基本運算:聯集、交集等運算 沒有提供基本運算 可直接實作 透過關聯式代數來實作 具關聯完全性 強調如何取得資料的過程 強調取得什麼資料 【註】SQL(Structured Query Language)是關聯式代數與關聯式計算 兩者的綜合體。

SQL語言與關聯式代數的關係  當我們利用SQL指令來查詢時,資料庫管理系統(DBMS)的查詢處理模組(Query Processor)會將「SQL指令」轉換成「關聯式代數運算式」,其處理步驟。如下圖所示: 步驟1:使用者下所需的「SQL指令」 步驟2:資料庫管理系統會利用「查詢處理模組」將「SQL指令」 轉換成「關聯式代數運算式」。 步驟3:利用「關聯式代數」來實際執行 步驟4:查詢後「顯示結果」

5-2. 關聯式代數  關聯式資料庫的 SQL 語法是以「關聯式代數」作為它的理論基礎,而在「關聯式資料模型」中,根據E.F.Codd所提出的「關聯式代數」有 八種基本運算子。如下表所示: 運算子 意義 基本 σ π ∪ × - 限制(Restrict) 投影(Project) 聯集(Union) 卡氏積(Cartesian Product) 差集(Difference) 比較 > ≧ < ≦ = ≠ 大於 大於等於 小於 小於等於 等於 不等於 非基本 ∩ ÷ 合併(Join) 交集(Intersection) 除法(Division) 邏輯 ﹁ ^ v NO AND OR

5-2.1 關聯式代數的「基本運算子」 【定義】是指不能由其他「運算子」導出的運算子 【運算子種類】 5-2.1 關聯式代數的「基本運算子」 【定義】是指不能由其他「運算子」導出的運算子 【運算子種類】 ①限制(Restrict),代表符號:σ ②投影(Project) ,代表符號:π ③聯集(Union) ,代表符號:∪ ④卡氏積(Cartesian Product) ,代表符號:× ⑤差集(Difference) ,代表符號:─ 以上五種運算子所成的集合稱為「完整集合」(Complete set)。

5-2.2 關聯式代數的「非基本運算子」 【定義】是指可以由「基本運算子」導出的運算子。 【運算子種類】 ①合併(Join) ,代表符號: 5-2.2 關聯式代數的「非基本運算子」  【定義】是指可以由「基本運算子」導出的運算子。 【運算子種類】 ①合併(Join) ,代表符號: ②交集(Intersection) ,代表符號:∩ ③除法(Division) ,代表符號:÷

5-3 限制(Restrict) 【定義】 1.限制又稱為選擇操作(Select Operation) 2.「選擇運算子」含有兩個參數 (1)選取條件 (Predicate) P (2)關聯表名稱 R 3.從 R 中選出符合條件 P 的值組《下一頁詳細說明》

【例如】σ身高<170 AND 體重<60 (學生資料表) 3.從 R 中選出符合條件 P 的值組 是指在關聯 R 中選擇滿足條件P 的所有值組。 【代表符號】 σ(唸成sigma) 【關聯式代數】σP(R) 【概念圖】 從關聯表 R中選取符合條件 (Predicate) P的值組。其結果為原關聯表R記錄 的「水平」子集合。如下圖所示: 【例如】σ身高<170 AND 體重<60 (學生資料表) 則 (1)選取條件 (Predicate) P 身高<170 AND 體重<60 (2)關聯表名稱 R 學生資料表 σp(R) P

【實例1】  請利用限制(Restrict)來查詢學生資料表 Q1:請問σ體重>70(學生資料表)=? 【Q1解答】

【實例2】  請利用限制(Restrict)來查詢學生資料表 Q2:請利用關聯代數來表示 身高小於170公分及體重小於60公斤的學生記錄

【實例2】 請利用限制(Restrict)來查詢學生資料表 Q2:請利用關聯代數來表示 身高小於170公分及體重小於60公斤的學生記錄 【實例2】  請利用限制(Restrict)來查詢學生資料表 Q2:請利用關聯代數來表示 身高小於170公分及體重小於60公斤的學生記錄 【Q2解答】σ身高<170 AND 體重<60 (學生資料表)

分析 註1:σ身高<170 AND體重<60 (學生資料表)可以用別兩種方式表示 分析  註1:σ身高<170 AND體重<60 (學生資料表)可以用別兩種方式表示 (1)σ身高<170 (σ體重<60 (學生資料表)) (2)σ體重<60 (σ身高<170 (學生資料表)) 註2: 運算所產生的結果關聯,其值組的數目會少於或等於原有關聯的值組數目。

【隨堂練習1】 請利用限制(Restrict)來查詢學生資料表 Q1:請撰寫關聯式代數來查詢性別為「男」同學名單? 學號 姓名 性別 科系 【隨堂練習1】  請利用限制(Restrict)來查詢學生資料表 Q1:請撰寫關聯式代數來查詢性別為「男」同學名單? 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安

【隨堂練習1】 請利用限制(Restrict)來查詢學生資料表 Q1:請撰寫關聯式代數來查詢性別為「男」同學名單? 【Q1解答】 【隨堂練習1】  請利用限制(Restrict)來查詢學生資料表 Q1:請撰寫關聯式代數來查詢性別為「男」同學名單? 【Q1解答】 σ性別=‘男’(學生資料表) 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安

【隨堂練習2】 請利用限制(Restrict)來查詢學生資料表 Q2:請撰寫關聯式代數來查詢性別為「男」且科系為「資管系」同學名單? 學號 【隨堂練習2】  請利用限制(Restrict)來查詢學生資料表 Q2:請撰寫關聯式代數來查詢性別為「男」且科系為「資管系」同學名單? 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安

【隨堂練習2】 請利用限制(Restrict)來查詢學生資料表 Q2:請撰寫關聯式代數來查詢性別為「男」且科系為「資管系」同學名單? 【隨堂練習2】  請利用限制(Restrict)來查詢學生資料表 Q2:請撰寫關聯式代數來查詢性別為「男」且科系為「資管系」同學名單? 【Q2解答】 σ性別=‘男’and 科系=‘資管系’(學生資料表) 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安

5-4 投影(Project) 【定義】 是指從關聯R上的投影,亦即從關聯R中選擇出許多「欄位」後, 再重新組成一個新的關聯。 【代表符號】 π(唸成pai) 【關聯式代數】π A (R) ,其中:A 為 R 中的屬性欄位。 【概念圖】 從關聯表 R中選取想要的欄位。其結果為原關聯表R記錄的「垂直」子集合。如下圖所示: π欄位(R)

【實例1】  請利用投影(Project)來查詢學生資料表 請問π學號,身高,體重(學生資料表)=? 【解答】

【實例2】 請利用「關聯式代數」來撰寫下列的查詢 學生資料表 請找出「資管系」學生的學號、姓名? 【解答】有三種不同方法 【實例2】  請利用「關聯式代數」來撰寫下列的查詢 學生資料表 請找出「資管系」學生的學號、姓名? 【解答】有三種不同方法 第一種方法:π學號,姓名(σ科系=’ 資管系’(學生資料表)) 一般作法 第二種方法:資管系學生σ科系=’ 資管系’(學生資料表)  暫存表格作法 查詢結果π學號,姓名(資管系學生)      或:暫存學生 π學號,姓名(學生資料表)     查詢結果 σ科系=’ 資管系’(暫存學生) 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安

【實例2】 請利用「關聯式代數」來撰寫下列的查詢 學生資料表 請找出「資管系」學生的學號、姓名? 【解答】 【實例2】  請利用「關聯式代數」來撰寫下列的查詢 學生資料表 請找出「資管系」學生的學號、姓名? 【解答】 第三種方法:重新命名欄位作法(少用)  資管系學生σ科系=’ 資管系’(學生資料表) Result(stu,name)π學號,姓名(資管系學生) 至於以上三種表達方式,那一種較好,沒有定論。 一般認為只要能夠正確的寫出來,其表達方式一樣好。 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安

【分析】 π學號,姓名,性別,科系(σ科系=’ 資管系’(學生資料表)) 2、先投影,再選取 【分析】  在撰寫「關聯式代數」時,我們可以任意使用以下兩種不同順序: 1、先選取,再投影 π學號,姓名,性別,科系(σ科系=’ 資管系’(學生資料表)) 2、先投影,再選取   σ科系=’ 資管系’ (π學號,姓名,性別,科系(學生資料表)) 再投影 先選取 再選取 先投影

【隨堂練習】 Q1:π學號,姓名,性別(σ科系=’ 資管系’(學生資料表)) 【隨堂練習】  請判斷下列那一種「關聯式代數」是正確寫法,如果不正確時,請說明原因? Q1:π學號,姓名,性別(σ科系=’ 資管系’(學生資料表)) Q2:σ科系=’ 資管系’ (π學號,姓名,性別(學生資料表))

【隨堂練習】 Q1:π學號,姓名,性別(σ科系=’ 資管系’(學生資料表)) 【解答】正確 【隨堂練習】  請判斷下列那一種「關聯式代數」是正確寫法,如果不正確時,請說明原因? Q1:π學號,姓名,性別(σ科系=’ 資管系’(學生資料表)) 【解答】正確 Q2:σ科系=’ 資管系’ (π學號,姓名,性別(學生資料表)) 【解答】不正確 原因:先投影時,已經過濾掉「科系」欄位,因此,再執行選取時,已經沒有「科系」欄位,所以產生錯誤。 <注意:選取某一個欄位時,必須要能在投影後的關聯表R中找到,否則無法執行。

【隨堂練習】詳解 Q1:π學號,姓名,性別(σ科系=’ 資管系’(學生資料表)) 【解答】正確 【隨堂練習】詳解  請判斷下列那一種「關聯式代數」是正確寫法,如果不正確時,請說明原因? Q1:π學號,姓名,性別(σ科系=’ 資管系’(學生資料表)) 【解答】正確 學生資料表 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安 σ科系=’ 資管系’ 學號 姓名 性別 科系 S0001 張三 男 資管系 S0003 王五 學號 姓名 性別 科系 S0001 張三 男 資管系 S0003 王五 學號 姓名 性別 S0001 張三 男 S0003 王五 π學號,姓名,性別

【隨堂練習】詳解 Q2:σ科系=’ 資管系’ (π學號,姓名,性別(學生資料表)) 【解答】不正確 【隨堂練習】詳解  請判斷下列那一種「關聯式代數」是正確寫法,如果不正確時,請說明原因? Q2:σ科系=’ 資管系’ (π學號,姓名,性別(學生資料表)) 【解答】不正確 學生資料表 學號 姓名 性別 科系 S0001 張三 男 資管系 S0002 李四 資工系 S0003 王五 S0004 李崴 女 企管系 S0005 李安 π學號,姓名,性別 學號 姓名 性別 S0001 張三 男 S0002 李四 S0003 王五 S0004 李崴 女 S0005 李安 學號 姓名 性別 S0001 張三 男 S0002 李四 S0003 王五 S0004 李崴 女 S0005 李安 σ科系=’ 資管系’ 產生錯誤,選取某一個欄位時,必須要能在投影後的關聯表R中找到,否則無法執行。

5-5 聯集(Union) 【定義】 是指關聯表R與關聯表S作「聯集」時,則會重新組合成一個新的關聯 表,而新的關聯表中的記錄為原來兩關聯表的所有記錄,若有重複的 記錄,則只會出現一次。 【關聯式代數】 R∪S 【概念圖】 R S R ∪ S 重複的記錄

【概念分析】  重複的記錄(只會出現一次) 重複的記錄(只會出現一次)

【實例】  請利用「聯集(Union)」來查詢學生資料表 請問R∪S=? 【解答】 重複的記錄 只會出現一次

【隨堂練習】  若A={1,2,3,4},B={3,4,5,6},則A∪B 請問A∪B=?

【隨堂練習】  若A={1,2,3,4},B={3,4,5,6},則A∪B 請問A∪B=? 【解答】 A∪B={1,2,3,4,5,6}

5-6 卡氏積(Cartesian Product) 【定義】是指將兩關聯表R與S的記錄利用集合運算中的乘積運算形成 新的關聯表。 【作法】 1. 關聯R和關聯S分別為n欄和m欄,其笛卡爾乘積是一個(n+m)欄 的值組的集合,其前n欄是關聯R的,後m欄是關聯S的。 2.若關聯R有X個值組,關聯S有Y個值組,則關聯R和關聯S的廣義笛 卡爾乘積有X*Y個值組。 【關聯式代數】 R×S

【概念分析】 (1)假如關聯R中n=3(欄),關聯S中m=3(欄),在笛卡爾乘積之後,變成 一個(n+m)欄,所以R×S共有6欄。 【概念分析】   (1)假如關聯R中n=3(欄),關聯S中m=3(欄),在笛卡爾乘積之後,變成 一個(n+m)欄,所以R×S共有6欄。 (2)假如關聯R中X=3個值組,關聯S中Y=3個值組,則關聯R和關聯S在 笛卡爾乘積有X*Y個值組,所以R×S共有9筆值組。 n=3(欄) n+m =3+3=6(欄) X=3筆 R×S= m=3(欄) Y=3筆 X*Y =3*3=9筆

【實例】 請利用卡氏積(Cartesian Product)來查詢學生資料表 請問R×S=? 【解答】 【實例】  請利用卡氏積(Cartesian Product)來查詢學生資料表 請問R×S=?  【解答】 說明:若關聯R有X筆值組(記錄),關聯S有Y筆值組(記錄),則 R × S共有X*Y筆記錄。

5-7 差集(Difference) 【定義】 是指關聯 R差集關聯 S之後的結果,則為關聯R減掉RS兩關聯共同的 值組。 註:R─S 代表:屬於R,但不屬於S S─R 代表:屬於S,但不屬於R S R-S R∩S S-R

【概念分析】 R─S 代表:屬於R,但不屬於S,亦即R-R∩S R∩S R─S = R-R∩S=3筆-2筆=1筆 3筆 R S R-S 【概念分析】  R─S 代表:屬於R,但不屬於S,亦即R-R∩S R∩S R─S = R-R∩S=3筆-2筆=1筆 3筆 R S R-S R∩S S-R

【實例】 請利用差集(Difference)來查詢學生資料表 請問R─S=? 【解答】R─S = R-R∩S=3筆-1筆=2筆 【實例】  請利用差集(Difference)來查詢學生資料表 請問R─S=? 【解答】R─S = R-R∩S=3筆-1筆=2筆 1筆相同(亦即R∩S) R S R-S R∩S S-R

【隨堂練習1】  若A={1,2,3,4},B={3,4,5,6},則A─B 請問A ─ B=?

【隨堂練習1】  若A={1,2,3,4},B={3,4,5,6},則A─B 請問A ─ B=? 【解答】 A─B={1,2}

【隨堂練習2】  若A={1,2,3,4},B={3,4,5,6},則B─A 請問B ─ A=?

【隨堂練習2】  若A={1,2,3,4},B={3,4,5,6},則B─A 請問B ─ A=? 【解答】 B─A={5,6}

5-8 合併(Join) 【定義】 是指將兩關聯表R與S依合併條件合併成一個新的關聯表R3 ,假設P 為合併條件,以R∞pS表示此合併運算。 【作法】從兩個關聯的「卡氏積」中選取屬性間滿足一定條件的值組。 【關聯式代數】R p S

合併(Join)有三種型態 (一) 自然合併(Natural Join);又稱為內部合併(Inner Join) (二) θ-合併(Theta Join) (三) 對等合併(Equi-Join):是θ-合併的特例。

5-8.1 自然合併(Natural Join) 【定義】 自然合併(Natural Join)又稱為內部合併(Inner Join),它必須在左右兩邊的關聯中找到對應值組才行,而Outer join則無此規定。 一般的結合(Join)都是屬於此種方法。 【概念分析】 【作法】透過SELECT指令FROM部分的Natural Join。 【例如】 From A Natural Join B 重複欄位, 只會出現一次 R p S

【實例】  請問 學生( 學生.班級代號=班級.班級代號)班級=? 【解答】 註:事實上對自然合併以(學生 班級)來代表即可,不必列出條件。

5-8.2 θ-合併(Theta Join) 【定義】 以「等於」以外的條件為基礎來合併兩個關聯的運算。 【語法】(A×B) WHERE A.X θ B.Y 其中A,B為無共同屬性的關聯,A具有屬性X,而B具有屬性Y。 【 θ 合併的運算子】=,<,≦,>,≧,≠ 【注意】相同名稱的欄位會同時出現在運算結果的表格中。  亦即重複欄位,會出現兩次

【實例】 若學生的選修,必須是學生年級高於或等於課程開課年級。亦即不能低修。請輸出所有學生姓名及其所能選修的課程名稱。 [解答] 【實例】  若學生的選修,必須是學生年級高於或等於課程開課年級。亦即不能低修。請輸出所有學生姓名及其所能選修的課程名稱。 [解答] π學生.姓名,課程.課程名稱(σ年級>=開課年級(學生×課程))

5-8.3 對等合併(Equi-Join) 【定義】 若θ為「等於比較」的狀況時,θ-Join稱為對等合併(Equi-Join)。 目前都是Equi-Join為主(因為Join放在Where中)Equi-Join。 在本書中,都是以此合併為主。 【作法】 它是從關聯 R 與 S 的卡氏積中,分別選取關聯 R 的C屬性值等於與 關聯 S 的C屬性值,即等位合併為: R R.c=S.c S 【對應SQL指令】 透過SELECT指令WHERE部分的等式。 例如:From R ,S Where (R.c=S.c)

【概念分析】  重複欄位 R p S

【實例1】  請問學生Equi-Join (學生.班級代號=班級.班級代號)班級=? 【解答】

【實例2】 請利用關聯式代數來撰寫下列的查詢 請找出所有學生的全部資訊? 【解答】 第一種方法: 步驟①:利用卡氏積 學生資訊(學生資料表×系別資料表)

步驟②:利用合併 Resultσ 學生資料表.系碼=系別資料表.系碼(學生資訊) 第二種方法 Result (學生資料表 學生資料表.系碼=系別資料表.系碼系別資料表) 利用Equi-Join(重複欄位,會出現兩次) 合併後的結果

【Join的比較】 Join的比較 θ-Join 條件式中不限等號(重複欄位,會出現兩次) Equi-Join 條件式中只能用等號(重複欄位,會出現兩次) Outer Join 沒有匹配的資料也要選入 Natural Join 要有匹配的資料才能被選入(重複欄位,只出現一次)

5-9 交集(Intersection) 【定義】 是指關聯 R 與關聯 S作「交集」時,則將原來在兩個關聯式中都有 出現的值組(記錄)組合在一起成為新的關聯式。 【關聯式代數】 R ∩ S代表既屬於R又屬於S的值組組成。 關聯的「交集」可以用「差集」來表示,即R∩S = R – (R - S) 【概念圖】 R S R S R-S R∩S R∩S 共同出現的記錄

【概念分析】  R∩S R∩S = R – (R – S)=3筆-1筆=2筆 2筆 R S R-S R∩S

【實例】  請利用交集(Intersection)來查詢學生資料表 請問R ∩ S=? 【解答】 1筆共同出現的記錄 (亦即R∩S)

【隨堂練習】  若A={1,2,3,4},B={3,4,5,6},則A ∩B 請問A ∩B =?

【隨堂練習】  若A={1,2,3,4},B={3,4,5,6},則A ∩B 請問A ∩B =? 【解答】 A ∩B ={3,4}

5-10 除法(Division) 【定義】 此種運算如同數學上的除法一般,有二個運算元:第一個關聯表R 其中「被除表格」的屬性必須比「除表格」中的任何屬性中的值域都 要與「被除表格」中的某屬性之值域相符合。 【關聯式代數】 R ÷ S 【概念圖】 關聯 R 與關聯 S作「除法」運算時,只作用在兩個關聯中相同的部份。

【簡易作法】 關聯R「除以」關聯S時,則分兩個步驟來處理 步驟1: 檢查關聯R中的每一列資料,若有包含關聯S中的某一列時,則將 該列資料取出

【實例分析】 假設現在有關聯R與關聯S,如下圖所示: 現在欲作 R ÷ S時,則其執行過程為何? 【解答】 該列資料取出 關聯R 關聯S 關聯R 關聯S 包含 取出

步驟2: 將步驟1取出資料列,再刪掉S關聯之資料行 刪除後的結果 (重複時,只出現一次)

【數學正統作法】   利用1個卡氏積、2個差集及3個投影運算來實現。

【實例】  請利用除法(Division)來查詢學生資料表 請問A÷B=? 【解答】 步驟一:π X(A)=π學生(學生專長表)

步驟二:πX(A) ×B =π學生(學生專長表) ×助教所需資訊技能表

步驟三:πX(A)×B─A =π學生(學生專長表) ×助教所需資訊技能表 ─ 學生專長表 π學生(學生專長表) ×助教所需資訊技能表 ─ 學生專長表 ─

步驟四:πX[πX(A)×B─A ]= π學生[π學生(學生專長表) × 助教所需資訊技能表 ─學生專長表] π學生[步驟三]= 步驟三 後的結果如上

πX(A)-πX[πX(A)×B─A] =π學生(學生專長表)-[π學生(學生專長表) ×助教 所需資訊技能表 ─學生專長表] 步驟五: πX(A)-πX[πX(A)×B─A] =π學生(學生專長表)-[π學生(學生專長表) ×助教 所需資訊技能表 ─學生專長表] 將「學生專長表」 與 「助教所需資訊技能表」做 Divide 運算的結果如下: πX(A) ─ [步驟四後的結果] = 姓名 王五 ─

5-11 非基本運算子的替代 (由基本運算子導出) 一、合併(Join) ,代表符號: p 5-11 非基本運算子的替代 (由基本運算子導出)  一、合併(Join) ,代表符號: p 由乘積衍生而得。將其視為乘積運算後,再依合併條件P來去除不符合條件的記錄。(P:指A與B的共同屬性內含值時) 【公式】 [註]一個合併的運算,可由一個乘積和一個選擇(限制)運算來替代。

二、交集(Intersection) ,代表符號:∩ 由差集(Difference)衍生而得。 【公式】 A∩B=A-(A-B)=B-(B-A) 若A與B是型態相容的,則A∩B=A Join B [註] 由2個差集來替代

三、除法(Division) ,代表符號:÷ 由1個卡氏積、2個差集及3個投影運算來實現。

5-12 外部合併(Outer Join) 【定義】 當在進行合併(Join)時不管記錄是否符合條件,都會被列出其中一個資料表的所有記錄時,則稱為「外部合併」。因此,其合併結果中會保留第一個關聯(Left Outer-Join)或保留第二個關聯(Right Outer-Join)或保留兩個關聯(Full Outer-Join)中的所有值組。

【作法】 進行合併(Join)時,如果不符合條件的記錄就會被預設為NULL值。即左右兩邊的關聯表,不一定要有對應值組。 【使用時機】 應用在異質性分散式資料庫上的整合運算,其好處是不會遺漏資訊。 【例如】 情況一:使用內部合併 學校的選課作業中,如果只利用「內部合併」時,則只有已選課的同學會收到一張選課清單(學生表與課程表「內部合併」的結果。但如果尚未選課者,則連一張個人資料都沒有。 情況二:使用外部合併 學校的選課作業中,如果使用「外部合併」時,則不管是否已選課都可以收到一張選課清單。只是尚未選課者,會收到一個有個人資料而未選課的清單。

1.外部合併(Outer Join)<續> 【分類】 基本上,外部合併可分為以下三種合併 (1)左外部合併(Left Outer Join,以 表示) (2)右外部合併(Right Outer Join ,以 表示) (3)全外部合併(Full Outer Join ,以 表示)

(1)左外部結合(Left Outer Join) 【定義】  是指以左邊的關聯表為主,右邊的關聯表為輔,因此,左右兩個關聯表在運算時,則會保留左邊關聯表中的所有值組(Tuples)。找不到相匹配的值組時,必須填入NULL(空值)。 【舉例】列出全班同學的選課記錄(以學生表為主,課程表為輔) 學生表

【實例】  請問學生表  課程表=?  【解答】

(2)右外部結合(Right Outer Join) 【定義】  是指以右邊的關聯表為主,左邊的關聯表為輔,因此,左右兩個關聯表在運算時,則會保留右邊關聯表中的所有值組(Tuples)。找不到相匹配的值組時,必須填入NULL(空值)。 【舉例】列出本學期開課科目被同學選課情況  (以學生表為輔,課程表為主) 課程表

【實例】  請問學生 班級=?  【解答】

(3)全外部結合(Full Outer Join) 【定義】  是指以左、右邊的關聯表為主,因此,左右兩個關聯表在運算時,則會進行左、右邊關聯表中的聯集。找不到相匹配的值組時,必須填入NULL(空值)。 【舉例】請同時列出全班同學的選課記錄,及本學期開課科目被同學選課情況。

【實例】  請問學生 班級=?  【解答】