第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件

Slides:



Advertisements
Similar presentations
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
Advertisements

An Introduction to Database System
数据库系统概论 An Introduction to Database Systems
第六章 資料倉儲與採礦技術 6.1 資料倉儲與採礦定義 6.2 資料採礦之步驟與技術分類 6.3 資料採礦在顧客關係管理之應用
第8章 数据库技术基础 数据库可以直观地理解为存放数据的仓库,只 不过这个仓库是在计算机的大容量存储器上。
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
Chap 11 SQL基本查詢指令.
第3章 关系数据库的基本理论 冯万利.
Principles and Applications of the Database
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
Chap 13 視界與資料庫程式設計.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
创建数据库 MySql创建数据库的语法: CREATE DATABASE 数据库名; 例: CREATE DATABASE mydb;
資料庫設計 Database Design.
第六章 結構化分析與設計 ─資料塑模.
第4章 数据控制功能和表间关系 4.1 数据控制功能 为了确保数据库中数据的正确有效以及数据库系统的有效运行,RDBMS提供了数据控制功能:
第十二单元 第28讲 第28讲 古代中国的科技和文艺   知识诠释  思维发散.
数据库技术及应用 华中科技大学管理学院 课程网址:
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
第2章 数据定义功能 创建表 在关系型数据模型中,表(Table)是最基本的数据结构。
数据库原理与应用     制作人:王春玲         黄金燕         张惠萍         陈志泊 人民邮电出版社.
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
Chapter 5 Relational Algebra
数据原理复习概要.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
Chap 5 關聯式代數與計算.
資料庫系統 Database Systems
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式
Advanced Database Management System
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
Chap 10 SQL定義、操作與控制指令.
Microsoft SQL Server 2000 李金双.
資料庫安全 (Database Security)
第 2 章 規劃關聯式資料庫.
彰化縣政府補助辦理網頁設計資料庫應用班 資料庫簡介 建國技術學院資管系 饒瑞佶.
表格正規化簡介 講授大綱: 第一正規化 資料表的切割 第二正規化 第三正規化 Boyce/Codd正規化 第四正規化 第五正規化
《第二組》 組長/謝佳馨 組員/陳大為、葉容政、張智陪
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
單元3:軟體設計 3-1實體關係圖 Ch 08 System models.
MySQL数据库基础与实例教程 之 MySQL表结构的管理 郭水泉.
AnQing Teachers College Department of Computer & Information
SQL SERVER 一些经典语句 1.
資料庫系統導論.
第六章 : 資料模型之繪製 1. 前言 資料流程圖 ( DFD ) 及 處理邏輯工具
Database Systems Design Part III : Normalization
Ch4.SQL Server 2005資料庫組成員元件介紹
第二章 實體關係模式:基本概念 目的 何謂實體關係模式和實體關係圖(ERD) 實體型態 關係型態 二元關係型態 弱實體型態 遞迴關係型態
第二章 實體關係模式:基本概念 目的 何謂實體關係模式和實體關係圖(ERD) 實體型態 關係型態 二元關係型態 弱實體型態 遞迴關係型態
CH03 行銷資訊系統資料庫模組--資料庫概論
Dept. of Information Management OCIT February, 2002
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
江西财经大学《数据库应用》精品课程组 2011年 Comments are welcome!
第 2 章 規劃關聯式資料庫.
ER Model.
資料庫管理系統 緒 論.
從 ER 到 Logical Schema ──兼談Schema Integration
交際障礙分組系統 交際障礙分組系統 班級:2439 組員: 組別:A01 林子婷 資訊三丁 D
第 7 章 建立資料表與資料庫圖表.
第八节 算术运算符和算术表达式.
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
資料庫管理 HOMEWORK #2 楊立偉教授 台灣大學工管系 2013 Fall.
Presentation transcript:

第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件 4-4 關聯式資料庫模型的數學理論 4-5 關聯式資料庫

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

4-2 關聯式資料庫模型的資料結構 4-2-1 關聯表綱要 4-2-2 關聯表實例 4-2-3 關聯表的特性 4-2-4 關聯表的種類

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

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

4-2-1 關聯表綱要-相關術語1

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

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

4-2-1 關聯表綱要-相關術語3

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 關聯表實例-屬性值(說明1) 屬性值(Attribute Values) 屬性值是關聯表實際儲存資料的最小單位,在關聯表屬性集合的每一個屬性都擁有一組可接受的值,即屬性的定義域。例如:學生Students關聯表,如下圖所示:

4-2-2 關聯表實例-屬性值(說明2) 關聯表實例的屬性值集合(Attribute Value Set)是指目前關聯表實例各屬性所包含的值,如下所示: 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 關聯表實例-空值(意義1) 未知值(Unknown): 找不到(Missing):屬性值存在但是找不到,例如:不知道學生【陳大安】的地址,因為address屬性值一定存在只是找不到,所以這是一個找不到的空值,如下圖所示:

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

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

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

4-2-3 關聯表的特性-特性1 沒有重複的值組 關聯表是數學集合,在集合中不可有重複元素,所以關聯表沒有重複的值組,換個角度來說,其隱含的意義是關聯表的主鍵,因為主鍵可以是值組的識別,或是說,沒有2個值組是完全相同的。

4-2-3 關聯表的特性-特性2 值組是沒有順序 在關聯表的值組因為是集合,所以並沒有順序分別,也就是說,如果重新排列關聯表的值組,也不會產生新的關聯表。

4-2-3 關聯表的特性-特性3 屬性也沒有順序 在關聯表的屬性也沒有順序差別,如果重新排列關聯表的屬性,也不會產生新的關聯表。 事實上,大部分資料庫管理系統並不支援此特性,資料庫管理系統提供的資料庫存取函式庫,不但可以取得屬性的原始順序,而且允許使用順序存取屬性值。

4-2-3 關聯表的特性-特性4 所有屬性值都是單元值 關聯表的屬性值都是「單元值」(Atomic),這是指二維表格中的每一個儲存格的值都是單一值,而不是一組值的集合。

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

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

4-3 關聯式資料庫模型的完整性限制條件 4-3-1 鍵限制條件 4-3-2 定義域限制條件 4-3-3 實體完整性 4-3-4 參考完整性 4-3-5 其他完整性限制條件

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

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

4-3-1 鍵限制條件-說明 關聯式資料庫模型的鍵是一個重要觀念,關聯表的「鍵」(Keys)是指關聯表綱要中單一屬性或一組屬性的集合。

4-3-1 鍵限制條件-超鍵 超鍵(Superkeys) 超鍵是關聯表綱要的單一屬性或一組屬性的集合,超鍵需要滿足唯一性,如下所示: 唯一性(Uniqueness):在關聯表絕不會有2個值組擁有相同值。 換句話說,只需透過超鍵的識別,就可以在關聯表存取指定的值組。

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

4-3-1 鍵限制條件-主鍵(說明) 主鍵(Primary Key) 主鍵(Primary Key, PK)是關聯表各候選鍵中的其中之一,而且只有一個。

4-3-1 鍵限制條件-主鍵(原則) 在眾多候選鍵中如何挑選主鍵,選擇原則如下: 絕對不是空值(Not Null):候選鍵的屬性值不能是空值,如果是複合鍵,所有屬性都保證不會是空值。 永遠不會改變(Never Change):候選鍵的屬性值永遠不會改變。 本身不是識別值(Nonidentifying Value):候選鍵的屬性值本身沒有其他意義。 簡短且簡單的值(Brevity and Simplicity):儘可能選擇單一屬性的候選鍵。

4-3-1 鍵限制條件-替代鍵 替代鍵(Alternate Keys) 在候選鍵中不是主鍵的其他候選鍵稱為替代鍵,因為這些是可以用來替代主鍵的侯選

4-3-1 鍵限制條件-外來鍵(說明) 外來鍵(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 實體完整性-主鍵的使用規則 「規則」(Rule)是以敘述方式說明發生的原因和將會有什麼影響,這是由資料庫系統所定義的完整性限制條件執行的規則。 關聯式資料庫管理系統都支援實體完整性,我們可以定義主鍵的更新規則(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

4-3-4 參考完整性-外來鍵參考環 如果外來鍵參考最後回到原關聯表,稱為「外來鍵參考環」(Referential Cycle) 。 例如:關聯表R1的參考鏈最後又回到R1,其外來鍵參考環,如下所示: R1 → R2 → R3 → …. → Rn → R1

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

4-4-2 集合運算-聯集(Union)1 若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)2 交換律: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)1 若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)2 交換律: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 集合運算-卡笛生乘積(Cartesian Product) 若集合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 關聯式資料庫-外來鍵參考圖