东北大学软件学院数据库系统概述第二章(关系模型)
数据库第二章(关系模型)
目录
数据库第二章(关系模型)
1、关系数据库的结构:
2、基本关系代数运算
3、其他关系代数运算
4、扩展关系代数运算
5、空值
6、修改数据库
1、关系数据库的结构:
定义:在逻辑层次上,关系数据库是一个称为关系的二维表的集合。关系表示实体集或关系集。关系的行表示实体或关系
关系数据库基本结构:(1)关系的每一行都可以称为元组(tuple)
(2)关系的每一列都有一个名称(关系的命名列称为属性(attributes))
(3)每个属性允许的值集称为属性的域(domain)
属性值(通常)必须是原子的;也就是说,不可分割的。一个元组在属性上的值可以是
一个帐号,但不能是一组帐号。特殊值null是每个域的成员。
关系(relation)的定义:形式上,给定集合D1,D2…,Dn;关系r是 D1 x D2 x…x Dn 的子集,因此,关系是一组n元组(a1,a2,…,an),其中每个ai属于Di
关系模式(relation schema),A1,A2,…An 是属性名字,R = (A1, A2, …, An )是关系模式。
customer_schema = (customer_name, customer_street, customer_city)
r(R)表示关系模式R上的关系r ,
customer (customer_schema)
关系的当前值(关系实例)由表指定。关系是无序的。
关系数据库(relational database):数据库由多个关系组成,有关企业的信息被分解为多个部分,每个关系存储一部分信息
码(key)定义:K是属性的集合,K是R的子集。
超码(super key):如果K的值足以识别每个可能关系R(R)的唯一元组,则K是R的超码。
候选码(candidate key):如果K是最小的超码,则K是候选码
主码(primary key):一种候选码,被选为关系中识别元组的主要方法,应选值从不或者很少改变的属性。例如:邮政地址是唯一的,但可能会改变,所以不适合作为主码。
外码(Foreign Key):关系r1可以具有与另一个关系r2的主码相对应的属性。该属性称为外码。r1是引用关系,r2是被引用关系,外码是相对关系r1来定义的。例如:存款的customer_name和account_number属性分别是customer和account的对应外键,存款是引用关系,customer和account是被引用关系。
引用约束(Referencing Constraint):只有被引用关系的主码属性中出现的值才能出现在引用关系的外码属性中
模式图:
查询语言(query languages):用户从数据库请求信息的语言。语言分为过程性(Procedural)的和非过程性的(Non-procedural(或声明性的(declarative)))。
“纯”语言(pure languages):关系代数(过程性的),元组关系演算(calculus,非过程性的),域关系演算(domain relational calculus,非过程性的)
2、基本关系代数运算
关系代数(relational algebra): 由一组运算符组成,以一个或两个关系作为输入,并产生一个新的关系作为结果。
6种基本的运算符:
选择(select):s
投影(project):Õ
并(union):È
做差(set difference):–
笛卡尔积(cartesian product):X
重命名(rename):r
选择运算的符号:s p(r),p为选择谓语,定义为:sp(r) = {t | t Î r and p(t)}如下例子:
投影运算(project operation):Õ,一元运算,选取某些列,A,C为属性的名字。结果定义为通过删除未列出的列而获得的k列之间的关系(下图为删掉B列)。从结果中删除重复行,因为关系是集合。
并运算(union operation):类似于集合的并运算。合并两个关系,并删掉重复行,因为关系是集合。符号是r È s。定义为:r È s = {t | t Î r or t Î s}。r与s必须有相同的参数(相同数量的属性);属性域必须是兼容的。r的第二列与s的第二列处理相同类型的值。
差运算(set difference operation):类似于集合的差运算。符号:r – s,定义为:
r – s = {t | t Î r and tÏs }。必须在兼容关系之间取集合差,r和s必须有相同的参数。R与s的属性域必须是可兼容的。
笛卡尔积运算(Cartesian-Product Operation): 将一个关系的每个元组与另一个关系的每个元组配对。符号:rXs,定义为r x s = {t q | t Î r and q Î s},假设r和s的属性是不相交的,就是R Ç S = Æ,如果r和s的属性不是不相交的,那么必须使用重命名(rename)
重命名运算(Rename Operation):允许我们命名并引用关系代数表达式的结果,允许我们使用多个名称引用关系,r x (E):返回名为X的表达式E。:返回名为X的表达式E的结果,并将属性重命名为A1、A2、An。
找出和smith住在同一个城市的所有顾客的名字:
3、其他关系代数运算
附加运算(Additional Operations):我们定义了附加的运算,这些运算不会给关系代数增加任何功能,但是可以简化常见的查询。
交运算(Set-Intersection Operation):符号:r Ç s,定义为:r Ç s = { t | t Î r and t Î s },假设r,s具有相同的参数,r,s的属性是可兼容的。注意:r Ç s = r – (r – s)。
自然连接:符号:r s,让r和s分别(respectively)是模式R和S的关系。r s是在R È S上的一个关系,如下:1.考虑r中的每一对元组tr和s中的每一对元组ts,如果tr和ts在R Ç S种的每一个属性有相同的值,在结果种添加一个元组t。
自然连接通过以下方式连接两个关系:
相等于同名属性
并将每对相等属性的一个副本投影出来。
除运算(Division Operation):符号:r ¸ s 。r和s分别是R和S模式上的关系。R=(A1,…Am,B1…Bn) S=(B1…Bn)。r ¸s的结果是关系基于R–S=(A1,…,Am)。
r ¸ s = { t | t Î Õ R-S (r) Ù " u Î s ( tu Î r ) }其中tu表示元组t和u的连接,以生成单个元组。
关于基本代数运算的定义,让r(R)和s(S)是关系,然后S属于R。
r ¸ s =ÕR-S (r ) – ÕR-S ( ( ÕR-S (r ) x s ) – ÕR-S,S(r ))
赋值(assignment operation):提供了一种表示复杂查询的方便方法,将查询写为一个顺序程序,由1.一系列赋值组成2. 后跟一个表达式,其值作为查询结果显示。必须始终为临时关系变量赋值。
右边的结果分配给左边的关系变量。可以在后续表达式中使用变量。
4、扩展关系代数运算
拓展运算:广义投影(Generalized Projection),聚集函数(Aggregate Functions
),外连接(outer-join)。
广义连接:通过允许在投影列表中使用算术函数来扩展投影运算
E是任何一个关系代数表达式,F1,F2,…,Fn中的每一个都是涉及E的模式中的常量和属性的算术表达式。
聚集函数:聚集函数接受值的集合并返回单个值作为结果。
avg:平均值
min:最小值
max:最大值
sum:值的和
count:值的数量
在关系代数中的聚集运算:
聚集的结果没有一个名字,可以使用重命名运算给它一个名字。我们允许将重命名作为聚合操作的一部分。branch_name g sum(balance) (account),变成branch_name g sum(balance) as sum-balance (account)
外连接(Outer Join):联接操作的扩展,可避免信息丢失。计算联接,然后将一个关系中与另一个关系中的元组不匹配的元组添加到联接的结果中。使用空值:1、null表示值未知或不存在;2、根据定义,所有涉及null的比较(粗略地说)都是错误的。
下图为左外连接例子:
下图为右外连接例子:
下图为全外连接例子:
5、空值
空值(Null Values):元组的某些属性可能有一个null值,用null表示。null表示未知值或值不存在。任何涉及null的算术表达式的结果都是null。聚合函数只是忽略空值(如在SQL中)。对于重复消除和分组,null与任何其他值一样对待,并且假设两个null相同。与空值的比较返回特殊的真值:未知(unknown)。如果select谓词的计算结果为未知,则将其视为false。
利用真值未知的三值逻辑:
在SQL中,如果谓词P的计算结果为未知,则“P is unknown”的计算结果为true。
6、修改数据库
数据库的修改(Modification of the Database):可以使用以下操作修改数据库的内容:
- 删除(deletion)
- 插入(Insertion)
- 更新(updating)
所有这些操作都用赋值运算符表示
删除(deletion):delete请求的表达方式与查询类似,不同的是不向用户显示元组,而是从数据库中删除所选元组。只能删除整个元组;不能仅删除特定属性上的值。
删除在关系代数中表示为:
;其中r是关系,E是关系代数查询。
插入(insertion):要将数据插入到关系中,我们可以指定要插入的元组,编写一个查询,查询的结果是要插入的元组集。
在关系代数中,插入由
表示。其中r是一个关系,E是一个关系代数表达式。一个元组的插入表示为E是一个包含一个元组的常数关系。
在数据库中插入信息,说明史密斯在佩里里奇分行的账户A-973中有1200美元:
为Perryridge分行的所有贷款客户提供200美元储蓄账户作为礼品。让贷款号码作为新储蓄帐户的帐号:
更新(updating):更改元组中的值而不向元组中的所有值收费的机制,使用广义投影运算符执行此任务:
。每个Fi要么, r的第I个属性,如果第I个属性没有更新,要么,如果要更新属性,则Fi是一个表达式,只涉及常量和r的属性,从而为属性提供新值。
向所有账户支付5%的利息
支付余额超过10000美元的所有账户6%的利息,并支付所有其他5%的利息
东北大学软件学院数据库系统概述第二章(关系模型)相关推荐
- 数据库系统概念总结:第二章 关系模型介绍
周末无事水文章,期末备考的总结资料 第二章 关系模型介绍 2.1 关系数据的结构 关系数据库由表(table)组成,每个表有唯一的名字.一般来说,表中一行代表了一组值之间的一种联系 表中一行代表了一组 ...
- 数据库系统概述---第二章关系数据库
第二章 关系数据库 1.关系模型三要素:关系数据结构:关系数据操作:关系完整性约束条件 2.关系完整性约束条件:参照完整性:实体完整性:自定义完整性: 3.关系代数 集合操作 并R∪S 交R∩S 差 ...
- 第二章 关系模型和关系运算理论 3类完整性
1.关系模型的基本概念 用二维表格(关系)作为数据结构的数据模型,称为关系模型,其中实体及实体之间的联系均用关系表示. 1.关系模型的三大要素 1)关系模型的结构 -关系 2)关系模型的操作-关系运算 ...
- 东北大学软件学院数据库系统概述——常用的聚合函数
聚合函数(Aggregate Functions)定义:这些函数对关系列的多组值进行操作,并返回一个值 Avg(平均值) Min(最小值) Max(最大值) Sum(值的和) Count(值的个数) ...
- 怎么用matlab画无差别曲线,MATLAB系列第二章初等模型.ppt
<MATLAB系列第二章初等模型.ppt>由会员分享,可在线阅读,更多相关<MATLAB系列第二章初等模型.ppt(68页珍藏版)>请在人人文库网上搜索. 1.第二章 初等模型 ...
- 【分布式计算:原理、算法和系统】第二章 分布式计算模型
[分布式计算:原理.算法和系统]第二章 分布式计算模型 2.1 分布式程序 一个分布式程序由一组nnn个异步进程(asynchronous processes)P1,P2,-,Pi,-,PnP_1,P ...
- 数据库中北大学第二章ppt总结和课后习题详解(小宇特详解)
数据库中北大学第二章ppt总结和课后习题详解(小宇特详解) 第2章 数据模型与系统结构 2.1 数据模型的基本概念 现实世界--具体事物->信息世界--概念模型->机器世界--DBMS支持 ...
- 【高级数据库】第二章 第01讲 数据库索引
[高级数据库]第二章 数据库索引 在第一章我们主要介绍了数据库的基础知识,包括数据库和数据库管理系统的概念,了解了数据库管理系统是如何执行用户命令的.另外还回顾了数据库有关的基础内容,包括三级模式 ...
- 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询
[数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 文章目录 [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 一.基础函数 二.聚合函数 1.COUNT 2.MAX/M ...
最新文章
- sudo提升执行权限
- mysql5.6更改datadir数据存储目录
- 为什么0的补码形式只有一种?
- RabbitMQ单个发布确认
- win7您需要来自计算机管理员的权限,win7需要提供管理员权限才能打开文件怎么解决...
- 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题
- GDB 01 -- 调试信息与调试原理
- PHP中ajax返回xml数据,PHP 实例 AJAX 与 XML | 菜鸟教程
- Android地图跑步项目,通过Weex 300行代码开发一款简易的跑步App
- 没啥用的纯前端打造一个实时 markdown 编辑器
- 2022年最新CPU天梯图 台式机cpu天梯图2022
- AARRR模型——变现:终极目标(下)
- 怎么在电脑上创建一个虚拟机
- 清华大学计算机系女生人数,2013年清华大学在各省市录取人数及男女比例
- 零基础入门,想问一下华为认证的网络工程师证好考吗?
- shell编程,脚本语言
- 何为五笔输入的最高境界?
- Falsehoods Programmers Believe About Names
- 吐血熬夜整理!2020最全web前端面试题!!!你想要的我这都有!!!
- Python番外篇:教你如何编写一个GIF录屏工具