Chap 4 關聯式資料庫模型.

Slides:



Advertisements
Similar presentations
工職數學 第四冊 第一章 導 數 1 - 1 函數的極限與連續 1 - 2 導數及其基本性質 1 - 3 微分公式 1 - 4 高階導函數.
Advertisements

大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
第一單元 建立java 程式.
第四章 關聯模式 目的 關聯模式的定義 關聯模式的限制 完整的範例關聯模式(線上購物系統) 關聯模式的資料更新
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
第4章 關聯式資料庫模型 關聯式資料模式的特點、優缺點、關係連結法 4-1 關聯式資料庫模型的基礎 關聯式資料模型的組成元素
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
資料庫設計 Database Design.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
Chapter 5 Relational Algebra
Ch04 關聯式資料庫 資料庫管理.
Chap 5 關聯式代數與計算.
LINQ 建國科技大學 資管系 饒瑞佶.
資料庫系統 Database Systems
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
Chap 7 關聯式資料庫的正規化.
第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式
Chap 10 SQL定義、操作與控制指令.
2-3 基本數位邏輯處理※.
高等資料庫管理系統 Advanced Database Management System
第八章 利用SELECT查詢資料.
資料庫安全 (Database Security)
第五章 關聯式資料庫的理論基礎.
SQL語法 定義與操作指令.
表格正規化簡介 講授大綱: 第一正規化 資料表的切割 第二正規化 第三正規化 Boyce/Codd正規化 第四正規化 第五正規化
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
第10章 SQL定義、操作與控制指令 10-1 SQL語言的基礎 10-2 SQL查詢工具 10-3 資料庫的實體資料模型
SQL Stored Procedure SQL 預存程序.
資料庫系統導論.
TCP/IP介紹 講師:陳育良 2018/12/28.
App Inventor2呼叫PHP存取MySQL
Ch4.SQL Server 2005資料庫組成員元件介紹
Java 程式設計 講師:FrankLin.
第一章 直角坐標系 1-1 數系的發展.
第一單元 建立java 程式.
Ch20. 計算器 (Mac 版本).
Ch05 實體關圖與正規化分析 資料庫管理.
第一章 直角坐標系 1-3 函數圖形.
第 19 章 XML記憶體執行模式.
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
ER Model.
資料庫管理系統 緒 論.
Definition of Trace Function
小學四年級數學科 8.最大公因數.
CH05. 選擇敘述.
挑戰C++程式語言 ──第8章 進一步談字元與字串
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
MicroSim pspice.
1.2 子集、补集、全集习题课.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
第四章 關聯模式 目的 關聯模式的定義 關聯模式的限制 完整的範例關聯模式(線上購物系統) 關聯模式的資料更新
第二章 關聯式資料庫.
第 4 章 認識 SQL 語言與資料型別.
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
1757: Secret Chamber at Mount Rushmore
資料表示方法 資料儲存單位.
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
第一章 直角坐標系 1-3 函數及其圖形.
Cloud Training Material- 事件 Sherman Wang
連結資料庫 MYSQL.
多站台網路預約系統之 AJAX即時資料更新機制
資料庫管理 HOMEWORK #2 楊立偉教授 台灣大學工管系 2013 Fall.
SQLite資料庫 靜宜大學資管系 楊子青.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
Presentation transcript:

Chap 4 關聯式資料庫模型

4-1 關聯式資料庫模型的基礎 關聯式資料模型的組成元素,如下所示: 資料結構(Data Structures):資料的組成方式,以關聯式資料模型來說,就是欄和列組成表格的關聯表(Relations)。 資料操作或運算(Data Manipulation或Operations):資料相關操作的關聯式代數和計算。 完整性限制條件(Integrity Constraints):維護資料完整性條件,其目的是確保儲存資料是合法資料。

4-2 關聯式資料庫模型的資料結構 關聯式資料庫是一組關聯表(Relations)的集合,關聯表是關聯式資料庫模型的資料結構,使用二維表格組織資料,如下所示: 關聯表綱要(Relation Schema):包含關聯表名稱、屬性名稱和其定義域。 關聯表實例(Relation Instance):指某個時間點儲存在關聯表的資料(因為儲存的資料可能隨時改變),可以視為是一個二維表格,其儲存的每一筆記錄是一個「值組」(Tuples)。

4-2 關聯式資料庫模型的資料結構

4-2-1 關聯表綱要

4-2-1 關聯表綱要 關聯表(Relations):相當於一個二維表格,不過不同於表格,並不用考慮各列和各欄資料的順序,每一個關聯表需要指定關聯表名稱。 屬性(Attributes):在關聯表的所有屬性是一個「屬性集合」(Attribute Set),因為是集合,所以關聯表的屬性並不能重複。 值組(Tuples):關聯表的一列,也就是一筆記錄,這是一組目前屬性值的集合。

4-2-1 關聯表綱要 維度(Degree):關聯表的維度是指關聯表的屬性數目。 基數(Cardinality):關聯表的基數是關聯表的值組數目。 主鍵(Primary Key):在關聯表需要選擇一個或多個屬性的屬性子集(Attribute Subset)作為主鍵,這是用來識別值組是唯一的。 定義域(Domains):相當於程式語言的資料型態,這是一組可能屬性值的集合。

4-2-1 關聯表綱要 關聯式資料庫模型、關聯式資料庫和檔案系統使用術語雖不一致,但代表相同意義。

4-2-1 關聯表綱要-表示法(語法) 關聯表綱要表示法的語法,如下所示: 上述語法的說明,如下所示: relation_name (attribute1, attribute2, attribute3, … , attributeN) 上述語法的說明,如下所示: relation_name:關聯表名稱。 attribute1, attribute2, attribute3, …. , attributeN:括號中是屬性清單,通常省略屬性的定義域。 在屬性加上底線表示它是主鍵,外來鍵可以使用虛線底線或其他表示方法。

4-2-1 關聯表綱要-表示法(範例) 以關聯表Students為例,其關聯表綱要,如下所示: Students (sid, name, address, tel, birthday) 上述關聯表Students的主鍵是sid。如果在關聯表綱要需要標示定義域的int、char和datetime,可以使用括號標示在屬性後,如下所示: Students (sid(int), name(char), address(varchar), tel(char), birthday(datetime))

4-2-2 關聯表實例 「關聯表實例」(Relation Instance)是一個有限個數的集合,集合內容是關聯表的值組(Tuples)。 因為關聯表資料可能隨時更改,所以關聯表實例是指某一時間點的值組集。

4-2-2 關聯表實例 定義域(Domains) 定義域是一組可接受值的集合,這些值是不可分割的單元值(Atomic),不可以是另一個集合。 對比程式語言來說,定義域相當於變數的資料型態,值組的屬性值相當於是變數值,滿足資料型態的定義域範圍。

4-2-2 關聯表實例 定義域是屬性可接受的值集合,主要可以分為兩種,如下所示: 簡單屬性(Simple Attributes):簡單屬性是一種不可再分割的屬性,其定義域是相同型態的單元值(Atomic)集合。 複合屬性(Composite Attributes):複合屬性是由簡單屬性所組成的屬性,它可以形成一個階層架構。例如:地址屬性和生日屬性可以由數個簡單屬性所組成,如下所示: Address = City+Street+Number Birthday = Month+Day+Year

4-2-2 關聯表實例-定義域 Address屬性是由City、Street和Number所組成,屬性值的定義域也是由City、Street和Number屬性的定義域組成,Birthday屬性的定義域則是Month、Day和Year屬性的整數定義域所組成。

4-2-2 關聯表實例 屬性值(Attribute Values) 屬性值是關聯表實際儲存資料的最小單位,在關聯表屬性集合的每一個屬性都擁有一組可接受的值,即屬性的定義域。例如:學生Students關聯表:

4-2-2 關聯表實例-屬性值 關聯表實例的屬性值集合是指目前關聯表實例各屬性所包含的值,如下所示: city屬性值值 = { ‘中和巿’, ’桃園巿’, ’台中巿’,’高雄市’ } age屬性值 = 21~30 GPA屬性值= 1~4.0 屬性值集合可以作為定義定義域依據,不過仍然需要參考實際情況,才能定義出可接受值的定義域,例如:GPA實際的範圍是0.0~4.0。

4-2-2 關聯表實例-屬性值(特點) 單元值(Atomic):屬性值是不可分割的單元值。 需要指定定義域:屬性值一定需要指定定義域,而且只有一個定義域,雖然屬性值屬於指定的定義域,但並不表示所有的定義域值都會出現,屬性值集合可能只是定義域的部分集合。 可能為空值:屬性值可能是後面說明的空值。

4-2-2 關聯表實例 空值(Null Values) 在關聯表的屬性值可能是一個未知或無值的空值,這個值是一個特殊符號,它不是0,也不是空字串,不過所有定義域都會包含空值。 空值並沒有意義,所以不能作為真偽的比較運算。

4-2-2 關聯表實例-空值 未知值(Unknown): 找不到(Missing):屬性值存在但是找不到,例如:不知道學生【陳大安】的地址,因為address屬性值一定存在只是找不到,所以這是一個找不到的空值,如下圖所示:

4-2-2 關聯表實例-空值 完全未知(Total Unknown):不知道屬性值是否存在。例如:不知道張先生是否有配偶,所以配偶欄spouse是完全未知的空值,如下圖所示:

4-2-2 關聯表實例-空值 不適性(Not Applicable) 不適性空值是指屬性沒有適合的屬性值。例如:公司員工劉先生沒有手機,所以cellphone屬性值的手機號碼是一個不適性的空值,如下圖所示:

4-2-3 關聯表的特性 關聯表的名稱是唯一的,在資料庫不能有兩個關聯表擁有相同名稱,同一個關聯表的屬性名稱也是唯一,不過不同關聯表之間允許擁有相同名稱的屬性。 在關聯表中除了名稱唯一性的特性外,還有四個特性: 沒有重複的值組 值組是沒有順序 屬性也沒有順序 所有的屬性值都是單元值

4-2-3 關聯表的特性 屬性也沒有順序 事實上,大部分資料庫管理系統並不支援此特性,資料庫管理系統提供的資料庫存取函式庫,不但可以取得屬性的原始順序,而且允許使用順序存取屬性值。 所有屬性值都是單元值 關聯表的屬性值都是「單元值」,這是指二維表格中的每一個儲存格的值都是單一值,而不是一組值的集合。

4-2-4 關聯表的種類 具名關聯表(Named Relations):在資料庫管理系統使用CREATE TABLE/VIEW和SNAPSHOT指令建立的關聯表。 基底關聯表(Base Relations):一種具名關聯表,也稱為「真實關聯表」(Real Relations)。 導出關聯表(Derived Relations):這是由其他具名關聯表,經過運算而得的關聯表。 視界(Views):定義在其他基底關聯表之上的一種「虛擬關聯表」(Virtual Relations)。

4-2-4 關聯表的種類 (cont.) 快照關聯表(Snapshots):這是具名的導出關聯表,在一個時間點的關聯表內容,不過它有真正的儲存資料,屬於一種唯讀關聯表。 查詢結果(Query Results):一種沒有具名的導出關聯表。 中間結果(Intermediate Results):一種沒有具名的導出關聯表,這是JOIN合併查詢指令中子查詢的查詢結果。 暫存關聯表(Temporary Relations):這是一種具名關聯表,儲存的是資料庫管理系統暫時所需的資料。 儲存型關聯表(Stored Relations):實際儲存在儲存裝置的關聯表,這是真正可儲存資料的關聯表。

4-3 關聯式資料模型的完整性限制條件 關聯式資料庫模型的完整性限制條件(Integrity Constraints),其目的是檢查資料庫儲存的資料和保障資料的正確性,不但可以防止授權使用者將不合法的資料存入資料庫,還能夠避免關聯表之間的資料不一致。

4-3 關聯式資料模型的完整性限制條件 鍵限制條件(Key Constraints):關聯表一定擁有一個唯一和最小的主鍵(Primary Key)。 定義域限制條件(Domain Constraints):關聯表的屬性值一定是屬於定義域的單元值。 實體完整性(Entity Integrity):關聯表的主鍵不可以是空值, 參考完整性(Referential Integrity):關聯表的所有外來鍵值,都必須能參考到另一關聯表的主鍵值。

4-3-1 鍵限制條件 關聯表的「鍵」(Keys)是指關聯表綱要中單一屬性或一組屬性的集合。鍵限制條件是指關聯表中一定擁有一個唯一和最小的主鍵。 主鍵的目的為在關聯表中能夠從兩個或兩個以上的值組中識別出不同的值組。 關聯表中存在的鍵包含: 超鍵 (superkeys) 候選鍵 (candidate keys) 主鍵 (primary key) 替代鍵 (alternate keys) 外來鍵 (foreign keys)

4-3-1 鍵限制條件 超鍵(Superkeys) 超鍵是關聯表綱要的單一屬性或一組屬性的集合,超鍵需要滿足唯一性,如下所示: 唯一性(Uniqueness):在關聯表絕不會有2個值組擁有相同值。 以下均為超鍵(針對student關聯表) (學號) 、(身分證字號) 、(學號, 身分證字號) 、(學號, 姓名) 、(學號, 電話, 住址) … 超鍵的問題為超鍵中有些屬性為多餘的

4-3-1 鍵限制條件 候選鍵(Candidate Keys) 在每一個關聯表至少擁有一個候選鍵,候選鍵是一個超鍵,不只滿足超鍵的唯一性,還需要滿足最小性,如下所示: 最小性(Minimality):最小屬性數的超鍵,在超鍵中沒有一個屬性可以刪除,否則將違反唯一性。 候選鍵是最小屬性數的超鍵,所以單一屬性的超鍵一定是候選鍵。

4-3-1 鍵限制條件 主鍵(Primary Key) 主鍵是關聯表各候選鍵中的其中之一,而且只有一個。 挑選主鍵原則: 絕對不是空值:候選鍵的屬性值不能是空值,如果是複合鍵,所有屬性都保證不會是空值。 永遠不會改變:候選鍵的屬性值永遠不會改變。 本身不是識別值:候選鍵的屬性值本身沒有其他意義。 簡短且簡單的值:儘可能選擇單一屬性的候選鍵。

4-3-1 鍵限制條件 替代鍵(Alternate Keys) 在候選鍵中不是主鍵的其他候選鍵稱為替代鍵,因為這些是可以用來替代主鍵的侯選 外來鍵(Foreign Keys) 外來鍵(Foreign Keys, FK)是關聯表的單一屬性或一組屬性的集合,它的值是參考其他關聯表的主鍵,當然也可能參考同一個關聯表的主鍵。

4-3-1 鍵限制條件-外來鍵(圖例)

4-3-1 鍵限制條件-外來鍵(特性) 外來鍵一定參考其他關聯表的主鍵,這是兩個關聯表間的連結。 外來鍵在關聯表內不一定是主鍵。 外來鍵和參考的主鍵屬於相同定義域,不過屬性名稱可以不同。 外來鍵和參考主鍵中的主鍵如果是單一屬性,外來鍵就是單一屬性,主鍵是屬性集合,外來鍵一樣也是屬性集合。 外來鍵可以是空值NULL。 外來鍵可以參考同一個關聯表的主鍵。

4-3-2 定義域限制條件 定義域限制條件(Domain Constraints)是指在關聯表的屬性值一定是定義域的單元值(Atomic)。例如:屬性age的定義域是int,屬性值可以為5,但是不可以是4.5。 對比程式語言,就是一種「強調型態」(Strongly Typed)程式語言。

4-3-3 實體完整性 實體完整性(Entity Integrity) 實體完整性是指在基底關聯表主鍵的任何部分都不可以是空值,其規則如下所示: 如果主鍵是多個屬性的集合,任何一個屬性不可以是空值,例如:(ename, cname)是主鍵,那ename屬性不可為空值,cname屬性也不可是空值。 在關聯表只有主鍵不可是空值,替代鍵並不適用。 實體完整性是針對基底關聯表,從其導出的關聯表並不用遵守。

4-3-3 實體完整性 主鍵的使用規則 關聯式資料庫管理系統都支援實體完整性,主鍵的更新規則(Update Rule)定義如下: 主鍵的更新規則:更新規則是指在基底關聯表的一個值組更新主鍵或新增值組時,如果主鍵是空值就違反實體完整性,資料庫管理系統必須拒絕這項操作。

4-3-4 參考完整性 參考完整性(Referential Integrity) 當關聯表存在外來鍵時,外來鍵的值一定是來自參考主鍵,或為空值,也就是說,外來鍵的屬性值集合即是參考主鍵的屬性值集合,如下圖所示:

4-3-4 參考完整性-範例 例如:公司員工關聯表Employees都會參與公司的專案關聯表Projects,如下圖所示:

4-3-4 參考完整性 在關聯表不可包含無法參考的外來鍵,例如:員工李四的project外來鍵值根本不存在其參考主鍵pid,表示此值組違反參考完整性,因為沒有父親的pid,怎麼會有兒子project。 如果外來鍵不是關聯表的主鍵,其屬性值可以為空值,例如:Projects關聯表硬體授權的leader外來鍵是空值,因為可能尚未指定專案領導者,所以並沒有違反參考完整性。

4-3-4 參考完整性 在建立資料庫綱要時,通常我們會使用圖形標示關聯表間的外來鍵關係,稱為「外來鍵參考圖」(Referential Diagram):

4-3-4 參考完整性 關聯表的外來鍵是參考其他關聯表的主鍵,在參考的關聯表也可能擁有其他的外來鍵,然後再參考其他關聯表。 如果我們將這些外來鍵的參考關係依序繪出,就可以建立「外來鍵參考鏈」(Referential Chain): Projects → Departments → Employees 如果外來鍵參考最後回到原關聯表,稱為「外來鍵參考環」(Referential Cycle) 。

4-3-4 參考完整性-外來鍵使用規則 外來鍵的更新規則(Update Rule):如果一個值組擁有外來鍵,當合法使用者試圖在更新或新增值組時,更改外來鍵的值,資料庫管理系統會有如何處理? 外來鍵的刪除規則(Delete Rule):如果一個值組擁有外來鍵,當合法使用者試圖刪除參考的主鍵時,資料庫管理系統會怎麼處理?

4-3-4 參考完整性-處理方式 限制性處理方式(Restricted):拒絕刪除或更新操作。 連鎖性處理方式(Cascades):連鎖性處理方式是當更新或刪除時,需要作用在所有影響的外來鍵,否則拒絕此操作。 空值化處理方式(Nullifies):將所有可能的外來鍵都設為空值,否則拒絕此操作。

4-3-5 其他完整性限制條件 在基底關聯表的屬性新增額外的完整性限制條件,通常所有導出關聯表也會繼承在基底關聯表設定的完整性條件。這些額外條件是在關聯表新增、刪除和更新資料時,觸發的一些額外檢查條件。 「語意完整性」(Semantic Integrity)屬於特定資料庫管理系統支援的完整性條件,這是屬性內容的一些限制條件,可以檢查關聯表值組的屬性是否為合法資料。

4-3-5 其他完整性限制條件 語意完整性 空值限制條件(Null Constraint):限制屬性值不可為空值,也就是說,這個屬性一定要輸入資料。 預設值(Default Value):如果沒有輸入指定的屬性值,值組的屬性預設會填入指定的資料,其主要的目的是避免屬性為空值。 檢查限制條件(Check Constraint):這是布林值的邏輯運算式,輸入的屬性值一定需要滿足運算式,即邏輯運算式為真(true)。

4-4 關聯式資料模型的數學理論 4-4-1 集合的基礎 4-4-2 集合運算 4-4-3 關聯表的定義 4-4-4 鍵的定義

4-4-1 集合的基礎-說明 集合(Set)是任何東西組合成的群體,集合本身並不考量集合中元素是否有任何關聯,或是集合有何特殊用途,因為集合是由包含的元素來完全決定之。 例如:沒有任何元素的集合,稱為空集合(Empty Set),元素都是奇數,就是奇數的集合。

4-4-1 集合的基礎-集合表示法 集合的表示方法有很多種,本書主要是使用逐一列舉法,使用大括號括起集合的元素,如下所示: A = { 1, 2, 3, 4, 5, 6, 7 } B = { a, b, c, d, e, f, g } C = { 001, ‘陳會安’, 1966/09/05, 20 } 如果集合沒有任何元素稱為空集合(Empty Set),我們使用Ø符號表示空集合。

4-4-1 集合的基礎-集合關係 屬於「∈」:如果A是集合,x是集合中的元素,我們稱x是集合A的元素,屬於集合A,寫成:x∈A。 不屬於「∈ 」:如果b不是集合A的元素,表示b不屬於A,寫成:b∈ A。 包含於「⊆」或「⊇」:如果A和B是兩個集合,集合A的每一個元素都是集合B的元素,即元素x∈A → x∈B,我們可以說A是B的「子集」(Subset),寫成:A⊆B或B⊇A。

4-4-1 集合的基礎-集合關係 包含於且不相等「⊂」或「⊃」:如果A和B是兩個集合,集合A的每一個元素都是集合B的元素,且A≠B,稱A是B的真子集。 等於「=」:如果A和B兩個集合的元素完全相同,即A等於B,寫成A=B,也就是證明:A⊆B且B⊆A。

4-4-2 集合運算-聯集(Union) 若A和B是兩個集合,將A的所有元素和B的所有元素合起來的集合,稱為A與B的聯集,寫成:A ∪B。例如: A = { 4, 5, a, b } B = { c, 5 } A∪B = { 4, 5, a, b }∪{ c, 5 } = { 4, 5, a, b, c } 文氏圖(Venn Diagram)表示的A∪B,如下示:

4-4-2 集合運算-聯集(Union) 交換律:A∪B = B∪A。 結合律:(A∪B)∪C = A∪(B∪C) = A∪B∪C。 包含性:C⊆C∪D,表示C一定是C∪D聯集的子集。 吸收律:若C⊆D → C∪D=D,因為C是D的子集,則C與D的聯集就是D。

4-4-2 集合運算-交集(Intersection) 若A和B是兩個集合,將A和B的共同元素合起來的集合,稱為A與B的交集,寫成:A∩B = { x | x∈A 且 x∈B }。例如: A = { 4, 5, a, b } B = { c, 5 } A∩B = { 4, 5, a, b }∩{ c, 5 } = { 5 } 文氏圖(Venn Diagram)表示的A∩B,如下:

4-4-2 集合運算-交集(Intersection) 交換律:A∩B = B∩A。 結合律:(A∩B)∩C = A∩(B∩C) = A∩B∩C。 包含性:C∩D⊆C,表示C與D的交集一定是C的子集。 吸收律:若C⊆D → C∩D=C,因為C是D的子集,則C與D的交集就是子集C。

4-4-2 集合運算-差集(Difference) 若A和B是兩個集合,所有屬於A但不屬於B的元素所成的集合,稱為A與B的差集,寫成:A-B = { x | x∈A 且 x∈B }。例如: A = { 4, 5, a, b } B = { c, 5 } A-B = { 4, 5, a, b }-{ c, 5 } = { 4, a, b } 文氏圖(Venn Diagram)表示的A-B,如下:

4-4-2 集合運算-卡笛生乘積 若集合A1, A2, A3, …, An,卡笛生乘積是所有可能集合元素的集合,C = A1 x A2 x A3 x …..x An。例如: A = { a, b, c } B = { 1, 2 } AxB = { a, b, c }x{1, 2} = { (a,1), (a,2), (b,1), (b,2), (c,1), (c,2) }

4-4-3 關聯表的定義-定義域定義 定義4.1:定義域(Domain)是一些指定型態值的集合,在關聯表屬性A的定義域,寫成:dom(A)。 一些定義域的範例,如下所示: 正整數定義域 = { 1, 2, 3, 4,5, ……} 英文小寫字母 = { a, b, c, d, …..z }

4-4-3 關聯表的定義-關聯表定義 定義4.2:關聯表(Relations)是各屬性定義域卡笛生乘積的子集。若關聯表R擁有A1, A2, A3, …., An共n個屬性,屬性的定義域分別為: dom(A1), dom(A2), dom(A3), …., dom(An) 定義域的卡笛生乘積為: dom(A1) x dom(A2) x dom(A3) x ….x dom(An) 則,關聯表R是定義域卡笛生乘積的子集: R⊆dom(A1) x dom(A2) x dom(A3) x ….x dom(An) 表示關聯表R是「n值組」(n-tuples)的集合 = <v1, v2, v3…., vn>,vi∈dom(Ai) or vi = NULL, 1≤ i ≥ n,n是關聯表的屬性數,即維度(Degree)。

4-4-3 關聯表的定義-關聯表範例 關聯表Emp1和Emp2擁有2個屬性name和salary,其定義域分別為dom(name)和dom(salary),如下所示: dom(name) = {‘陳會安’, ‘江小魚’, ‘張三丰’} dom(salary) = { 35000, 40000 } dom(name) x dom(salary) = { <‘陳會安’, 35000>, <‘陳會安’, 40000>, <‘江小魚’, 35000>, <‘江小魚’, 40000>, <‘張三丰’, 35000>, <‘張三丰’, 40000> } 關聯表Emp1和Emp2,如下: Emp1⊆dom(name) x dom(salary) Emp1={<‘陳會安’,40000>, <‘江小魚’,35000, <‘張三丰’,35000>} Emp2⊆dom(name) x dom(salary) Emp2 = { <‘陳會安’, 40000>, <‘江小魚’, 40000> }

4-4-3 關聯表的定義 定義4.3:關聯表綱要(Relation Schema)是屬性的有限元素集合。若關聯表名稱為R,包含屬性A1, A2, …, An與對應的定義域D1, D2, …, Dn,則關聯表綱要通常寫成: R ( A1(D1), A2(D2), …, An(Dn) ) 或簡寫成: R ( A1, A2, …, An ) 例如:前述Emp1關聯表綱要,如下所示: Emp1 ( name, salary )

4-4-3 關聯表的定義 定義4.4:關聯表實例(Relation Instance)是「n值組」的集合。若關聯表綱要RS包含屬性A1, A2, …, An,每一筆n值組對應的屬性值為V1, V2, …., Vn,通常寫成: t = { <A1, V1>, <A2, V2>, …., <An, Vn> } 或簡寫成: t = < V1, V2, …., Vn > 則,關聯表綱要RS的關聯表實例是r(RS),寫成: r(RS) = { t1, t2, …., tm } m是基數(Cardinality),就是副本包含的值組數。

4-4-4 鍵的定義-超鍵定義 定義4.5:鍵K是關聯表R的超鍵(Superkey),則滿足: (1) K⊆R:K是R的子集。 (2) ∀t1, t2∈r(R) t1≠t2 → t1[K]≠t2[K]:存在t1和t2兩個不同值組,超鍵值t1[K]不等於t2[K],即滿足唯一性。

4-4-4 鍵的定義-候選鍵定義 定義4.6:鍵CK是關聯表R的候選鍵(Candidate Key),則滿足: (1) CK是超鍵。 (2) CK是最小超鍵,沒有其他超鍵K是CK的真子集:K⊂CK,即滿足最小性。

4-4-4 鍵的定義-外來鍵定義 定義4.7:鍵FK是關聯表R1的外來鍵(Foreign Key),則FK是R1屬性的子集,如下所示: FK = {A1, A2,...An} FK是R1的子集:FK⊆R1 且滿足: (1) FK與關聯表R2的主鍵擁有相同定義域,即FK參考關聯表R2。 (2).FK的值是參考關聯表R2主鍵的值,或是空值。

4-5 關聯式資料庫-說明 關聯式資料庫(Relational Database)是一種使用關聯式資料模型的資料庫,它是由多個已正規化的關聯表所組成,在關聯表間使用外來鍵與參考主鍵的資料值來建立連結,以便實作一對一、一對多和多對多的關聯性。 如果只擁有一個關聯表,也是一種合法的關聯式資料庫。 關聯式資料庫綱要(Relational Database Schema)是一組關聯表綱要和各綱要附屬的完整性限制條件。

4-5 關聯式資料庫-關聯表綱要 學校選課與排課系統資料庫是一個擁有4個關聯表的資料庫,各關聯表綱要,如下所示: Student ( sid, name, birthday, GPA, tel ) Instructors ( eid, name, rank, department ) Courses ( c_no, title, credits ) Classes ( eid, sid, c_no, time, room )

4-5 關聯式資料庫-關聯表圖例

4-5 關聯式資料庫-外來鍵參考圖