第2章 数据模型 本章学习要求: 1. 层次数据模型、网状数据模型 了解层次及网状数据模型的基本概念和结构。 2. 关系数据模型

Slides:



Advertisements
Similar presentations
数据库完整性 第 10 章 完整性约束条件 完整性控制 Oracle 的完整性. 什么是数据库的完整性  数据的正确性和相容性  防止不合语义的数据进入数据库 例 : 学生的年龄必须是整数,取值范围为 ; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系。
Advertisements

2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
LOGO 第 6 章 数据库规范化设计 孙焘. 重点: 三个范式的基本概念 1 概念模型 2 物理模型 3 多 framePowerDesigner 工具的使用页面设计 4.
An Introduction to Database System
小学科学中的化学 武威十九中 刘玉香.
教學檔案的製作、評量與應用 連安青、游可如 國立東華大學附小教師.
Visual Foxpro程序设计 张文祥 主编 主讲教师: 李勤.
An Introduction to Database System
第六章 数据库设计.
第一章 数据库系统概论 教学目的与要求: 1、了解数据处理技术的各个阶段的不同特点;
数据库系统概论 An Introduction to Database Systems
证券交易模拟 第2讲 交易规则与盘面术语.
第8章 数据库技术基础 数据库可以直观地理解为存放数据的仓库,只 不过这个仓库是在计算机的大容量存储器上。
高等院校计算机教材系列 数据库原理与应用(第2版) 任课教师:刘雅莉
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
复习重点; 1. 关系模型、ER模型 2. SQL 3. 事务管理 4. 函数依赖与规范化 5. 数据库设计  复习题 一、单项选择题
第七章 证券投资管理 教学目的: 1.掌握证券投资的种类 2.理解证券投资风险与收益 3.重点掌握组合投资策略.
水仙电器财务失败案例.
Access数据库程序设计 总复习.
数据库原理及应用 《数据库原理及应用》课程组 荆楚理工学院.
第3章 关系数据库的基本理论 冯万利.
第六章 数据库和ADO.NET 褚龙现 软件学院.
非计算机应用专业教材 数据库原理与应用 李 明 科学出版社.
Principles and Applications of the Database
 坚持以人为本 一切依靠人民 胡锦涛总书记“七一”重要讲话全文1.4万多字,其中“人民”一词用了136次,平均每104个字里就有一个,可见“人民”在党心中的分量。讲话阐述的保持和发展马克思主义政党先进性的根本点第二条就是,坚持为了人民、依靠人民,诚心诚意为人民谋利益,从人民群众中汲取智慧和力量,始终保持党同人民群众的血肉联系;提高党的建设科学化水平目标任务第三条也强调,必须坚持以人为本、执政为民理念,牢固树立马克思主义群众观点、自觉贯彻党的群众路线,始终保持党同人民群众的血肉联系。这充分体现了我党把人民放
国家“十一五”规划教材 数据库原理与应用教程(第3版).
数据库原理及设计 --作业.
102學年度 彰化縣國中新生編班作業 說明會 聯絡電話: #221(註冊組長) #223(資訊組長)
第5章 数据库保护 之事务.
软件设计师培训.
计算机应用基础 上海大学计算中心.
第1章 数据库基础 1.1 数据库基本概念 数据处理 数据(Data)是对客观事物的某些特征及其相互联系的一种抽象化、符号化表示。 例如:王华出生日期为1970年7月12日,身高1.75m,体重65kg,部门代码A01,职称是副教授,其中王华、1970年7月12日、1.75m、65kg、A01、副教授等都是数据.
Principles and Applications of the Database
数据库系统概论 第 三 版 主 讲: 李明东. 数据库系统概论 第 三 版 主 讲: 李明东.
时政发布 制作:宋虹雷.
数据库技术及应用 华中科技大学管理学院 课程网址:
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
第2章 数据模型.
数据库原理与应用     制作人:王春玲         黄金燕         张惠萍         陈志泊 人民邮电出版社.
第4章 数据库技术及应用 软件开发技术基础 计算机教学实验中心 2006.
Chapter 5 Relational Algebra
第四章 关系系统及其查询优化 这一章包括两个内容,一是关系系统(关系数据库系统的简称),二是关系系统的查询优化。第一部分讨论关系系统的定义和分类;第二部分讨论关系系统中查询优化的概念、查询优化的基本原理和技术。
An Introduction to Database System An Introduction to Database System
學校教職員退休條例修正草案重點報告 報告人:徐創晃.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
Chap 5 關聯式代數與計算.
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
第4章 SQL语言基础及数据库定义 4.1 基本概念 4.2 SQL Server 提供的主要数据类型 4.3 数据定义.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
Microsoft SQL Server 2000 李金双.
第4章(2) 空间数据库 —关系数据库 北京建筑工程学院 王文宇.
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
AnQing Teachers College Department of Computer & Information
Skew Join相关论文 报告人:蔡珉星 厦大数据库实验室
国家“十一五”规划教材 数据库原理与应用教程(第3版).
SQL SERVER 一些经典语句 1.
資料庫系統導論.
An Introduction to Database System An Introduction to Database System
厦门大学计算机科学系研究生课程 《分布式数据库技术》 分布式数据库技术 专题二 数据分布 专题二 数据分布 林子雨 厦门大学计算机科学系
实验二讲评 … 张榆….
江西财经大学《数据库应用》精品课程组 2011年 Comments are welcome!
计算机文化 第7讲:数据库技术 王哲 河南中医药大学信息技术学院.
資料庫管理系統 緒 論.
数据库系统原理 J.D.Ullman 国防工业出版社 数据库原理与方法 郑若忠,王鸿武 湖南科技出版社
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
第二章关系数据库 2.1关系数据库概述 2.2关系数据结构 2.3关系的完整性 2.4关系代数 2.5关系演算** 2.6关系数据库管理系统.
資料庫應用與實作 一到六章重點、習題.
104 四技二專甄選入學 簡章解析 輔導室 何乙娟.
第一章 Visual FoxPro数据库基础
Presentation transcript:

第2章 数据模型 本章学习要求: 1. 层次数据模型、网状数据模型 了解层次及网状数据模型的基本概念和结构。 2. 关系数据模型 第2章 数据模型 本章学习要求: 1. 层次数据模型、网状数据模型 了解层次及网状数据模型的基本概念和结构。 2. 关系数据模型 掌握关系数据模型的基本概念以及关系代数操作。 了解层次、网状和关系模型之间的差别。 3. 对传统模型的评价 了解传统模型的不足之处。 4.E-R数据模型   掌握E-R模型的概念和表示。 5. 面向对象数据模型   了解面向对象数据模型的基本概念。

数据模型可分为两类: 独立于计算机系统的数据模型,它完全不涉及信息在计算机系统中的表示,只是用来描述某个特定组织所关心的信息结构,这类模型称为 “概念数据模型”。 概念模型用于建立信息世界的数据模型,强调其语义表达能力,概念应该简单,清晰,易于用户理解,它是现实世界的第一层抽象,是用户和数据库人员之间进行交流的工具。最著名的是“实体联系模型”。

2. 直接面向数据库的逻辑结构的数据模型,它是现实世界的第二层抽象。这类模型涉及到计算机系统和数据库管理系统,又称为“基本数据模型”或“结构数据模型”。 例如, 层次、网状、关系、面向对象数据模型”.这类模型有严格的形式化定义,以便在计算机系统中实现。

2.1 层次数据模型 用树型(层次)结构表示实体类型及实体间联系的数据模型称为层次数据模型(hierarchical data model)。

基本概念和结构 记录和字段 双亲子女关系 层次数据模式 虚拟记录 层次数据的线性表示

记录是用来描述某个事物或事物间关系的命名的数据单位,也是存储的数据单位。一个记录包含若干字段。 记录和字段 记录是用来描述某个事物或事物间关系的命名的数据单位,也是存储的数据单位。一个记录包含若干字段。 每个字段也是命名的,字段只能是简单数据类型(整数、实数、字符串等)。

系 系名 系号 系主任名 地点 记录的型 计算机系 9 李西远 科技馆 记录的一个实例

双亲子女关系(Parent-Child Relationship,PCR) 计算机系 系 1 N 901班 911班 921班 931班 班 PCR型 PCR实例

层次数据模式 层次数据模式由PCR构成 系 班 教研组 学生 教师 层次数据模式

计算机系 901班 911班 921班 931班 硬件教研组 软件教研组 … … … … … … 层次数据模式实例 王一 张三 李四 赵立 钱英 孙玉 周新 吴坚 郑山 洪流 陈芝 丁伟 层次数据模式实例

在层次数据模式中,除根以外,所有的记录型都应该有唯一的双亲,但可以有多个子女,子女按从左到右的次序排序。

虚拟记录 非层次关系表示问题 (1)M:N 学生: 王一 张三 李四 课程: 人工智能 数据库

不允许一个记录有多个双亲,需要复制记录,导致冗余。如下图: 学生 王一 张三 李四 课程 人工智能 人工智能 数据库 人工智能 数据库 型 实例

(2)一个记录是两个以上PCR的子女 班 运动队 学生 只能表示成下图,存在冗余。 班 运动队 学生 学生

(3)多元关系 供应商 零件 工程项目 供应关系

可以用PCR表示为: 零件 供应商 工程项目 … 供应商 零件 供应商 工程项目 工程项目 零件

注意:书上图2-12不能表示三元关系,因为供应关系与供应商,供应关系与工程项目这两个PCR的一个双亲实例,其子女集合是并关系,而不是迪卡尔积关系。 零件 供应关系 供应商 工程项目

主要问题:数据冗余,为避免这一情况,只存一份记录,其它引用该记录的地方用指针代替 ——这种用指针代替的记录称为虚拟记录。 用下标v表示,指针用虚线箭头表示。 课程 学生 (学生)v (课程)v

班 运动队 学生 (学生)v

层次数据的线性表示 由于存储器是线性的,层次数据必须变换成线性形式才能存储,层次数据模式的实例对应一棵层次树(或森林),对层次树(或森林)按先序遍历生成的序列称为层次序列(hierarchical sequence),规定以此作为存储次序。 计 算 机 系 901 班 王 一 … 张 三 911 班 … 931 班 … 吴 坚 硬 件 教 研 组 郑 山 … 洪 流 软 件 教 研 组 … 丁 伟

层次数据模型的约束 (1)除了根记录外,任何其它记录不能离开其双亲记录而孤立存在; (2)任何记录,不管虚实,只允许有一个双亲记录(保证层次数据模式及其实例是树形); (3)虚拟记录的指针必须指向一个实际存在的记录,有虚拟记录指向的记录不得删除; (4)虚拟记录不得为根记录。

特点: 层次结构是树结构,树的结点是记录类型,非根结点有且只有一个父结点。上一层记录类型和下一层记录类型是1:N联系。(因此不能表示M:N)

层次模型的优点: 记录之间的联系通过指针来实现,查询效率较高(针对层次结构)。 层次模型的缺点: 1、只能表示1:N联系,虽然可以采用虚拟记录 描述非层次数据关系,但较复杂,用户不易掌握, 并且非层次结构的查询效率比较低; 2、由于层次顺序的严格和复杂,引起数据的查询 和更新很复杂,因此应用程序的编写也比较复杂; 3、模式描述语言较复杂,数据独立性差。

2.2 网状数据模型 用有向图(网络结构)表示实体及实体之间联系的数据模型称为网状数据模型(network data model)。有向图中的结点是记录类型, 箭头表示从箭尾的记录类型到箭头的记录类型 间联系。

基本概念和结构 记录和数据项 数据项相当于字段,记录是数据项的有序结合。 系 系表示两个记录型间的1:N关系;对应“1”的为首记录,对应“N”的为属记录。系是命名的,有型值之分,例如:图2-17就是系的型和值。

班级 一班 学生 王一 李红 丁杰 型 值 图2-17 班级—学生系

具有多种类型属记录的系称为“多属系” (multimember set) 账户 存款帐 提款帐 转账 多属系 系值:3个成员的并,而非“X”

网状模型的特点: 与层次模型不同,网状模型中,一个记录型可以成为多个首记录型的属记录——突破层次的限制; 一个记录型不能既作为一个系的首记录又作为同一个系的属记录。 领导 EMP

1:1表示一人担任一个领导岗位,系值见下一页图。 ——引入联系记录 EMP 1:1 1:N LINK 1:1表示一人担任一个领导岗位,系值见下一页图。

E4 S1 L1 S2 E9 E7 …… S1 S1 L3 L2 S2 S2 E3 E5 E1 E6

一个记录值不能出现在同一系型的多个系值中,否则不是1:N关系 例如,学生(S)和课程(C)关系

S1 S1 C1 C2 C3 C4 C5 C6

解决M:N问题的方法——联系记录 S C 1 1 SL CL M N LINK 型

S1 S2 SL SL L1 L2 L3 L4 L5 L6 L7 CL CL CL CL CL CL C1 C2 C3 C4 C5 C6 值

LINK表示多元关系 供应商 1 M LINK N P 1 1 零件 工程项目

无首系,首记录可以看成“系统”,例如一个单位的所有部门组成一个无首系。 无首系只有一个实例,也称单值系。

系的实现方法 前向指针 O 后向指针 首记录指针 S1 S2 S3 系的链式实现方式

约束 (1)一个记录型不能兼任同一系的首记录和属记录; (2)一个记录不能出现在同一系型的多个系值中; (3)插入一个新记录时,若它的记录型是某个系的属记录,必须考虑系籍问题(两种系籍约束): AUTOMATIC(自动的): 新的属记录插入时自动加入相应的系值; MANUAL(人工的):新的属记录插入时不自动加入相应的系值;

(4)对已插入的属记录的系籍问题; 网状数据模型提供三种留置系籍约束: OPTIMAL(随意的):对属记录的系籍处理比较随意,属记录可以脱离某个系值独立存在,例如,“系——学生”系; MANDATORY(强制的):属记录不能游离于系值之外,但可以转系值。例如,“部门——职工”系; FIXED(固定的):不能游离,不能转系值,例如,“职工——家属”系。 上述系籍约束都是语义约束。

(5)删除记录时,删除首记录,没有系籍问题;删除属记录要按照(4)进行处理。 OPTIMAL 首记录可以删除,其属记录与系值脱离,仍保留在数据库中; MANDATORY 首记录不能删除,因为其属记录不能游离于系值之外; FIXED 可将首记录连同属记录一起删除。

网状模型的缺点: 编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。 在关系DB以前,网状DB比层次DB用的要普遍。模拟层次和非层次结构比较自然,目前仍有应用实例。 由于层次系统和网状系统的应用程序编制复杂,目前已被关系系统产品取代。 课程只介绍层次和网状数据模型的概念和机制,以求全面了解数据库技术的发展。

2.3 关系数据模型 层次、网状模型都基于某种记录结构(PCR,SET),关系模型跳出这一限制,定义清晰,结构简单,操作方便。 2.3 关系数据模型 层次、网状模型都基于某种记录结构(PCR,SET),关系模型跳出这一限制,定义清晰,结构简单,操作方便。 关系模型是以集合论中的关系概念为基础发展起来的数据模型。

关系模型(relaction data model)的主要特征是用表格结构表达实体集,用外键表示实体间联系。与层次模型和网状模型相比,关系模型比较简单,容易为初学者接受。 关系模型是由若干个关系模式组成的集合。每个关系实际上是一张表格,记录之间联系是通过各个关系模 式的键体现的。

关系模型的例子 PART模式 (P#,PNAME,COLOR,WEIGHT) PROJECT模式 (J#,JNAME,DATE) SUPPLIER模式 (S#,SNAME,SADDR) P_P模式 (J#,P#,TATOL) P_S模式 (P#,S#,QUANTITY) 关系模型的层次、网状模型的最大差别是用键而不是用指针导航数据,其表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行操作,并不涉及存储结构、访问技术等细节。

2.3.1 基本概念及定义 1.属性和域 属性------用来描述事物特征。 例如:学生的姓名、学号、性别、出生年月等。 2.3.1 基本概念及定义 1.属性和域 属性------用来描述事物特征。 例如:学生的姓名、学号、性别、出生年月等。 属性的域------属性的取值范围。 例如:姓名的取值范围是合法姓名的集合。 学号的域是若干位数字组成的字符串的集合。 性别的域是{男},{女},……

注意: ① 关系数据模型中,所有的属性都应是不可再分的原子数据(atomic data)的集合---1NF。 ② 关系数据模型中,允许某些属性值为空,即NULL。空值不是值,而是一个标记,表明该属性值空缺。例如:手机号码,E_mail等。

2.关系和元组 设有一关系R,R上有属性: A1,A2,……,An 其对应域分别为: D1,D2,……,Dn 则关系R可表示为: R =(A1/D1,A2/D2,……,An/Dn) 其中:n为关系R的属性个数,也称为关系的目。 同一关系中,不允许有同名属性,但不同属性可有相同的域。

关系R的值可表示r或r(R): r = {t1,t2,……tm} 每个元组t可表示为: t = <v1,v2,……vn>,vi ∈ Di , 1≤ i ≤ n 即 ti∈D1 * D2 * … * Dn, 1 ≤i ≤ n 例如:关于大学生的关系模式: STUDENT(学号,姓名,性别,出生年月,系别,入学年份) 而其中某一个学生 <9098138,李彤,女,1980,计算机系,1998> 就是关系R的一个元组。所有学生的值构成了R的元组的集合。 因此,R的模式相对稳定。R的值相对变化。

另外,在关系R中,元组的次序无关,但不能 允许有相同的二个元组;属性的次序无关。 学号 姓名 年龄 性别 系别 专业 另外,在关系R中,元组的次序无关,但不能 允许有相同的二个元组;属性的次序无关。 一个关系可视为一个二维表。组成表的所有数据项都应是不可再分的最小数据项。 关系对应表,属性对应列,元组对应行。

3.键 键(或候选键)——如果关系的某一个属性或属 性组的值唯一地决定其它所有属性的值。而其任 何真子集无此性质,则这个属性或属性组称为该 关系的键。 例:学生关系中,学号就是关键字。

超键——与上相同,区别仅在于其真子集也 具此性质。 主键——一个关系R可有多个候选键,若选中 一个作为Key,则它就是主键,其它称候补键, 每个元组的主键值应是唯一的。 全键——由所有属性组成的键,称为全键 例如 SUPPLY(SNAME,PNAME,JNAME)

主属性——能作为候选键的属性,称为主属性。 非主属性——不包含在候选键的属性,称为非主属性。 外键——引用其它关系的Key或本关系的Key, 称为外键。 如果一个关系中的属性或属性组并非该关系的关键字,但它们是另外一个关系的关键字,则称其为该关系的外关键字。

例:①COURSE(课程号,课程名,学分,开课时间,先修课程号) ②GRADE(学号,课程号,成绩) 其中: ①的主键是课程号。 ②的主键是学号+课程号。 ①中先修课程号是引用本关系的键,故称为外键。 ②中学号、课程号是引用STUDENT关系和COURSE中的键。

关系数据模型是用关系描述事物间联系的,且这种联系通常都隐含在它们的公共属性中,尤其是外键中。因此,关系数据模型不能显式地表示这种事物间的联系,这是它的一个缺点。

2.3.2 约束 关系模式R=(A1/D1,A2/D2,……,AN/DN)中, R的任何一个元组 t 应满足条件: 2.3.2 约束 关系模式R=(A1/D1,A2/D2,……,AN/DN)中, R的任何一个元组 t 应满足条件: t∈D1 * D2… * Dn 虽然满足上述条件的元组是合乎语法的,但是,并不是每个合乎语法的元组都能成为R的元组,它还要受到语义上的限制(完整性约束)。

例如,一个大学生的年龄在5岁~100岁之间。 身高<3米……,这就是语义上的限制。数据的语义不但限制属性的值,而且还会制约属性间的关系。 例:在一个R中,作为主键的属性或属性组,其值不为空或不重复出现等等。这些都是语义施加在属性间的限制。称为完整性约束。 目前,大多数DBMS都提供了完整性约束检查。

关系数据模型的完整性约束共分为4类: 1. 域完整性约束 域完整性约束是最简单、最基本的约束。 属性值应是域中的值,属性的值能否为空,这是由问题的语义决定的。 例:考试分数(成绩)的取值范围是0~100。

2. 实体完整性约束 每一个关系都应有一个主键,用来唯一识别 一个元组。它的值不能为空,否则无法区分和 识别元组,这就是实体完整性约束。 目前,大多数DBMS都支持这项检查,但也不是 强制和彻底的。

3.  引用完整性约束 这是指不同关系之间或同一关系的不同元组 间的约束。设关系R有一外键FK,则其某一元组 t的外键值为t[FK]。 设FK引用关系R’的主键Pk,R’可以是R,也可以不是R。引用完整性约束要求t〔FK〕遵守下面的约束:   即外键要么是空缺,要么是引用实际存在的 主键值。

引用完整性约束与表之间的关联有关,它是关系数据库管理系统的一个很重要的功能。用好这项功能,可以减少由于客户端用户程序的疏忽而可能给数据库带来的错误。

假定现在往职工关系 中插入一个元组: (“WH7”,”E9”,1400)请问是否有问题? 仓库 职工 仓库号 职工号 工资 WH2 E1 1220 WH1 E3 1210 E4 1250 WH3 E6 1230 E7 仓库号 城市 面积 WH1 北京 370 WH2 上海 500 WH3 广州 200 WH4 合肥 300 仓库 职工

该元组插入到职工关系中是没有任何问题的, 但是,在仓库关系中根本就没有仓库号为WH7的仓库。没有“WH7”仓库,就没有在“WH7”工作的职工。所以插入到职工的元组是有问题的。 利用引用完整性约束就可以解决这类问题。

由于仓库号是仓库关系的关键字,同时是职工 关系的外部关键字。在定义职工关系的仓库号字段 时,只要说明外部关键字约束: (仓库号) 仓库号 CHAR(4)NOT NULL REFERENCES 仓库 (仓库号) 有了以上的约束,系统就会自动检查相应的父记录是否存在,从而保证数据的引用完整性。

4. 一般性完整性约束 一般完整性约束是用户为了满足特定的要求 而做的一些与数据完整性有关的规定。 前三种约束是关系数据模型的三个最基本、 最普遍的完整性约束。其它的语义约束与数据的 具体内容有关。当数据量很大时,要说明、管理 和检查这些约束,开销太大。目前,尚无一个 DBMS能全面实现一般性完整性约束检查。

2.3.3 操作 关系数据模型提供了两类操作: 关系专用操作  集合操作 选择操作(Select)(横挑) 2.3.3 操作 关系数据模型提供了两类操作: 关系专用操作  集合操作 选择操作(Select)(横挑) 选择是一种单目运算,即对一个关系施加的运算,按给定条件从关系中挑选满足条件的元组组成的集合 。 语法格式:σ<选择条件>(<关系名>)

订购单关系 例: σ职工号=“E3”(订购单) 职工号 供应商号 订购单号 订购日期 E3 S7 OR67 1998/06/23 E1 S4 1998/07/28 E7 OR76 1998/05/25 E6 S6 OR77 1998/06/19 OR79 1998/07/29 OR80 1998/06/22 OR90 1998/07/13 S3 OR91 1998/10/27 例: σ职工号=“E3”(订购单)

例:σ职工号=“E3”(订购单) 结果如下: 订购单关系 职工号 供应商号 订购单号 订购日期 E3 S7 OR67 1998/06/23 S4 OR79 1998/07/29 S6 OR90 1998/07/13 S3 OR91 1998/10/27

易证: σ<选择条件1>(σ<选择条件2>(…σ<选择条件n> (R)…))= σ<选择条件1>and<选择条件2>and …<选择条件n>(R) 两者效率大不一样!

投影操作(Project)(竖挑) 投影操作是单目运算,从关系中挑选指定的 属性组成的新关系。 语法格式:<属性表>(<关系名>)

订购单关系 职工号 供应商号 订购单号 订购日期 E3 S7 OR67 1998/06/23 E1 S4 OR73 1998/07/28 1998/05/25 E6 S6 OR77 1998/06/19 OR79 1998/07/29 OR80 1998/06/22 OR90 1998/07/13 S3 OR91 1998/10/27

例: 职工号,供应商号(订购单) 结果: 职工号 供应商号 E3 S7 E1 S4 E7 E6 S6 S3

投影操作可以和选择操作组合起来 嵌套使用的情况: 例: 订购单号,供应商号(σ职工号=“E3” (订购单))

订购单关系 供应商号 订购单号 S7 OR67 S4 OR79 S6 OR90 S3 OR91  选择指定的属性,形成一个 可能含有重复行的表格;  删除重复行,形成新的关系。

集合操作 在关系数据模型中,用得最多的集合操作是并、交、 差 ,设A、B为两个集合. A∪B 并(union):由属于A或属于B的所有元组组成的 集合。 A∩B 交(intersection):由同时属于A和B的元组组成 的集合。 A-B 差(difference):由属于R而不属于S的所有元组 组成的集合。 不过,交可用差表示。设A、B为两个集合,则A和B的交可表示为:A∩B≡A-(A-B)

注:  参与并、差操作的两个关系的元组必须限制为同类型的,即具有相同的目,且对应的属性的域相同——并兼容(union compatibility);  关系专用操作优先级高于集合操作;  一元操作(单目)优先级高于二元操作。

仓库A 仓库A ∪ 仓库B 仓库B 仓库号 城市 面积 WH1 北京 370 WH2 上海 500 WH3 广州 200 仓库号 城市 面积 武汉 180 仓库A 仓库号 城市 面积 WH2 上海 500 WH3 广州 200 WH4 武汉 180 仓库A ∪ 仓库B 仓库B

仓库A ∩ 仓库B 仓库A - 仓库B 仓库号 城市 面积 WH2 上海 500 WH3 广州 200 仓库号 城市 面积 WH1 北京 370 仓库A - 仓库B

设有两个关系R和S,它们的目分别为nr和ns;它们的元组数分别为|R|和|S|,则R和S的笛卡尔乘积为: R × S={<t,g>|t  R and g  S} <t,g>为t和g的拼接,即R × S仍为一个关系,它的目为nr+ns、元组数为|R|×|S|。 若R和S中有相同的属性名,在这些属性名前加 上关系名作为限定词,进行区别。

连接操作 连接操作是双目(二元操作)操作。 按给定条件,把满足条件的两个关系所有元组,按一 切可能的拼接后形成的新关系,记为R∞S。 即 R∞<连接条件>S=σ<连接条件>(R  S) 连接条件为两关系中对应属性的比较,对应属性不一定同名,但要有相同的域。其普遍表示形式为: <条件1>and<条件2>and…and<条件k> 每个条件的普遍形式为:Aiθ Bj Ai为R的一个属性,Bj为S中与Ai对应的属性。

连接条件θ为:=,<, ≤,>,≥,≠ 当所有连接条件中的θ都为“=”时,称为等连接,在等连接结果中,对应属性的值是相同的,不用重复。 消除冗余属性的等连接称为自然连接,它是“连接”操作的一个重要特例,实用价值很大,它要求被连接的关系有相同的两个属性名。 注:自然连接完成三件事:  作R  S;(笛卡儿积)  在R  S上选择同时满足R.Ai=S.Ai的所有元组。  去掉重复属性;

仓库 职工 自然连接产生的新关系 仓库号 职工号 工资 WH2 E1 1220 WH1 E3 1210 E4 1250 WH3 E6 1230 E7 仓库号 城市 面积 WH1 北京 370 WH2 上海 500 WH3 广州 200 WH5 合肥 130 仓库 职工 仓库号 城市 面积 WH2 上海 500 WH1 北京 370 WH3 广州 200 职工号 工资 E1 1220 E3 1210 E4 1250 E6 1230 E7 自然连接产生的新关系

GRADE∞GRADE.课称号=COURSE.课称号(课程名、课程号、学分(COURSE)) 上式可以生成一个学生成绩表,它具有学号、课程号、课程名、学分和成绩等属性。

可以证明:关系代数操作集{σ、、∪、-、×}是完备的,{σ、、∪、-、∞}也是完备的。 完备指任何其它关系代数操作都可以用这5种操作来表示。 若一个关系DBMS支持{σ、、∪、-、∞},称此DBMS是完备的(relationally complete)。 事实上,当前关系DBMS还增加了不少关系代数不支持的操作,例如排序、分组等等。

设有关系 R(X,Y)和 S(Y),X,Y为属性组, S(Y) Φ ,则 RS = X(R)-X((X(R)  S)-R) 除操作 双目运算(二元),用“”表示。 设有关系 R(X,Y)和 S(Y),X,Y为属性组, S(Y) Φ ,则 RS = X(R)-X((X(R)  S)-R) 可能有R不含元组  R中相应Y值集合不能包含S(Y)的X值集合  R中相应Y值集合能包含S(Y)的X值集合  R-(RS)S可以看成“余数”。

示例  = 商关系 除关系(S) 被除关系(R) 仓库号 供应商号 WH1 S1 S2 S3 WH2 WH3 WH5 S4 WH6 仓库号

给定一个供应商号,如果它在被除关系上的映象集 包含除关系,则这个供应商号是商关系中的一个元组。 在这个例子中,除法运算决定了至少向列在除关系中的 那些仓库供应(器件)的那些供应商的编号。

X(R)  S X(R)  S - R X(R) S 仓库号 供应商号 WH1 S1 S2 S3 S4 WH3 WH5 仓库号

RS = X(R)-X((X(R)  S)-R) 供应商号 S4 S3 X(X(R)  S)-R) RS = X(R)-X((X(R)  S)-R) 供应商号 S1 S2

 外连接(outer join) 对连接操作的扩展. 与连接的区别:连接操作时,只有符合连接条件的匹配元组才能保留在结果中。外连接操作时,同时也 保留不匹配的那些元组,空缺部分填NULL。 NULL b b 外连接 a a NULL

有三种外连接: l  左外连接,连接结果中,只保留左关系的所有元组; l  右外连接,连接结果中,只保留右关系的所有元组; l  全外连接,连接结果中,保留左右关系的所有元组;

例:要求生成一个表,列出所有课程名及其先修课程名。 R= 课程名,先修课程号(COURSE) S= 课程名,课程号(COURSE)  R.课程名,S.课程名(R*∞先修课程号=课程号S) (必须考虑某些课程可能无先修课程的情况)

 外并操作 并操作的扩展。可以对非并兼容的两关系进行并操作。 结果等于两关系的属性集的并。 在进行外并操作时,对于那些元组中没有的属性,填以Null。

2.3.4 关系演算(relational calculus) 用关系代数表示的操作,需标明关系操作的序列,因而以关系代数为基础的DB语言是过程性语言(procedural language)。 用谓词演算来表达关系的操作称为关系演算。用关系演算表示关系的操作,只要说明所要得到的结果,而不必标明操作的过程,因而以关系演算为基础的数据库语言是说明性语言(declarative language)。 目前,面向用户的关系数据库语言基本上都以关系演算为基础。

关系代数表示关系的操作,用户必须指出运算方法步骤,而关系演算用谓词公式表示查询条件,指出“做什么”,而“怎么做”则由系统去完成。 以关系代数为基础的数据库语言是过程性语言,以关系演算为基础的数据库语言是说明性语言。

根据所用变量不同,关系演算分为:  元组关系演算  域关系演算

1.元组关系演算 以元组为变量。一般形式为: {t[〈属性表〉]|P(t)} 其中:t是元组变量,既可以用整个t作为查询对象,也可查询t中的某些属性。如查询整个t,则可省去<属性表>。P(t)是t应满足的谓词。 利用元组关系演算,可以表示关系代数操作,因此,元组演算与关系代数具有同等表达能力,是关系完备的。

关系代数的几种基本运算可以用元组表达式表示如下: 关系代数的几种基本运算可以用元组表达式表示如下: (1)投影:设有关系模式R(ABC),r为R的一个值,则 AB(r)={t[AB]|tr} (2)选择:σF(r)={t|tr and F} F是以t为变量的布尔表达式。

(3)R∪S:可用{t|R(t) S(t)}表示; 或{t|tR OR tS} (4)R-S:可用{t|R(t) S(t)}表示; 或{t|tR AND tS}

(5)连接(实际指自然连接) 设有两个关系模式R(ABC)和S(CDE),r、s分别为其值: R∞S={t(ABCDE)|t[ABC]R and t[CDE]S} 注意:谓词中两个t[C]同值,隐含等连接。

用谓词演算表示关系操作时,只有结果是有限集才有意义。 一个表达式的结果如果是有限的,称此表达式是安全的,否则是不安全的。 否定常常会导致不安全的表达式,例如 {t|¬(tSTUDENT)}是不安全的。

若限制t取值的域,使tDOM(P),可将上式改写成{t| t DOM(P) and ¬(tSTUDENT)}= DOM(P)– STUDENT,成为安全表达式。

2.3.5 域关系演算 域关系演算是以域为变量,一般形式为: {〈X1,X2,……Xn>|P(X1,X2,……Xn, Xn+1,……,Xn+m) } 其中:X1,X2,……Xn,Xn+1,……,Xn+m为域变量。且X1,X2,……Xn出现在结果中,其它m个域变量不出现在结果中,但出现在谓词P中。

对关系GRADE(学号,课程号,成绩),如果要查询须补考的学生的学号和补考的课程号,此时查询表达式: {<x,y>|(z)(GRADE(x,y,z) AND z<60)} GRADE(x,y,z)是一个谓词,如果〈x,y,z>是GRADE中的一个元组,则该谓词为真。 与元组变量不同的是域变量的变化范围是某个 值域而不是一个关系。

传统数据模型有层次数据模型、网状数据模型、关系数据模型。 2.4 对传统数据模型的评价 传统数据模型有层次数据模型、网状数据模型、关系数据模型。 特点: ●都继承了文件中的记录、字段等概念。 ●物理级也借鉴了文件的索引、散列等存取方法。 ●向用户提供了统一的数据模型和相应的数据库语言。 ●都在记录的基础上定义了数据的基本结构、约束和操作。

传统数据模型的不足: ● 以记录为基础,不能很好地面向用户和应用。记 录和实体不一定相对应。 ● 不能以自然的方式表示实体间联系。 ● 语义贫乏。 ● 数据类型少,难以满足应用需要。

2.5 E-R 数据模型 1976年由P.Chen提出: 建立一种统一的数据模型,来概括层次、网状和关系三种传统数据模型; 作为3种数据模型间相互转换的中间模型; 作为超脱DBMS的一种概念数据模型,用比较自然的方式模拟现实世界。

E-R数据模型用的最成功和最广泛的是作为数据库概念设计的数据模型。

2.5.1 基本概念 E-R(实体联系数据模型)与传统数据模型的区别在于:E-R不是面向实现,而是面向现实世界的,因此,它能比较自然地描述现实世界。 E-R中有三个重要的抽象概念: 实体:可以相互区别,且可被人们识别的事、物、概念等统统抽象为实体。

例如,学生的全体,就是一个实体集。其中的每一个学生是实体集的一个实例或值。因此,实体集通常作为型来定义(E-R中有型与值之分)。 如:Es={e|e是学生} 其中:Es是学生实体集, e是学生实体。 注:E-R中,大写字母表示实体集,小写字母表示实体。

属性:反映实体特征的称之为实体的属性,每个属性都有其取值的范围,称值集。 同一实体集中,每个实体的属性及其域是相同的,但值可不同,属性可以是单域的简单属性,也可以是多域的组合属性(如通信地址是个组合属性,由省、市、区、街道等组成)。

实体键:能唯一识别实体的属性或属性组。一个实体的键可能有多个,选定一个作为实体的键。 与传统数据模型比,E-R对属性的限制较少,故有利于自然地模拟现实世界。

联系:表示实体与实体之间的关系。参与联系的实体数=2,称为二元联系。参与联系的实体数>2,称为多元联系。 在E-R模型中,联系的类型有三种: (1)1:1(一对一联系) (2)1:n(一对多联系) (3)m:n(多对多联系)

  实体参与度:表示实体参与联系的最小次数和最大次数,通常用(m:n)表示。 例如,规定每个学生最少应选三门课,最多可选六门课。则学生在选课联系中的参与度可表示为(3:6).

注:m=0,表示非强制性,即实体不一定参与联系。 如果一门课可以无人选,但最多只能允许100人选则课程在选课联系中的参与度为(0,100)。 m>0,表示强制性的,即实体一定要参与联系。 在E-R模型中,实体和联系均可有属性,如选课联系的属性可有成绩、选课时间等。

现实世界中还有一种特殊的实体,称为弱实体,这种实体不能单独存在,总是依附某个实体,如亲戚是依赖于职工这个实体,家属是依赖于某一职工。这一类实体通常取其所依附的实体的Key作为本身的Key的一部分。

2.5.2 E-R图 用E-R数据模型对一个单位的模拟,称为一个单位的E-R数据模式。 全部参与 部分参与

E-R模型提供了实体、属性和联系三个抽象概念。这三个概念简单、明了、直观易懂,用以模拟现实世界比较自然,且可方便地转换关系、层次、网状数据模式。

用E-R表示数据模式时,我们只关心有哪些数据(即有哪些实体以及属性)以及数据间的关系(实体关系),而不必关心这些数据在计算机内如何表示和用什么DBMS。

2.5.3 扩充E-R数据模型 该模型中引入了下列抽象概念: 1、特殊化和普遍化 l 特殊化:从普遍到特殊的过程。如把研究 生实体集分为博士生、硕士生等子集的过程。 l 普遍化:从特殊到普遍的过程。如把研究 生、本科生、大专生三个实体概括为学生实体 集的过程。

注:子实体继承其父实体集的所有属性和联系,且又可有自己的属性和联系。见图2-30。 重叠特殊化 不相交重叠化 特殊化

2. 聚集 在EER中,可把联系看成由参与联系的实体组合而成的新的实体,其属性为参与联系的实体的属性和联系的属性的并。这种新的实体称为参与联系的实体的聚集。见图2-31。

由不同类型的实体组成的实体集,称之为范畴见图2-32。 3.范畴 由不同类型的实体组成的实体集,称之为范畴见图2-32。 范畴 并操作

范式概念 构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。

例如:职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成为1NF有三种方法: (1) 重复存储职工号和姓名。 关键字只能是电话号码。 (2) 职工号为关键字,电话号码分为单位电话和住宅电话两个属性。 (3) 职工号为关键字,但强制每条记录只能有一个电话号码。 以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。

第二范式(2NF):如果关系模式R中的所有非主属 属于第二范式的。 例:选课关系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号,CNO为课程号,GRADE为成绩,CREDIT为学分。由以上条件,关键字为组合关键字(SNO,CNO)。 在应用中使用以上关系模式存在什么问题?

在应用中使用以上关系模式有以下问题: a.数据冗余 假设同一门课由40个学生选修,学分就 重复40次。 b.更新异常 若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。 c.插入异常 如果计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。

原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。 解决方法:分成两个关系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,需要时再进行自然联接,恢复了原来的关系。

第三范式(3NF):如果关系模式R中的所有非主属 属于第三范式的。 例如:S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号,姓名,所在系,系名称,系地址。 关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在系的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。

原因:关系中存在传递依赖造成的。即SNO -> DNO,DNO -> LOCATION, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 DNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION,每个关系模式中不能留有传递依赖。 解决方法:分为两个关系S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)。 注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系。