数据库复习(1)关系模型与关系代数(待补充)

一、 关系模型

  • 关系模型顾名思义由一系列关系(relation)组成,它们基于关系模型(relational model)建立联系。
  • 关系模型的基本单位是表(table),由行和列组成
  • 关系模型的主要优点是能够简化数据表示,并且压缩复杂查询以降低其难度
  • 它的各种操作基于SQL语言

二、 基本结构

给定属性集合 D 1 , D 2 , . . . , D n D_1,D_2,...,D_n D1,D2,...,Dn,一个关系(relation)r就是所有属性值集合笛卡尔积(Cartesian product)的子集,也就是说,关系r其实就是由若干不相同的属性排列组合而来

2.1 属性类型

对某个属性值集合,所有可取的值的集合被称为该属性的值域(domain),它常常被要求为是原子(atomic)的:

多值属性、复合属性不具有原子性

  • null值属于所有属性的值域,它的存在会带来一系列特殊情况

2.2 关系概念

关系概念包含两部分:关系模式(relation schema)和关系实例(relation instance)

  • 关系模式是对关系结构的描述,类似于SQL语言中的定义部分
    E.g. Instructor-schema = (ID: string, name:string, dept_name: string, salary: int)
  • 关系实例在给定的关系中与数据快照(snapshot)相关联

2.3 关系的乱序性

关系表中的每行被称为一条元组(tuple),元组在没有特殊声明的关系模式中以任意方式存储

2.4 键/码(key)

可以被称为关系的键的属性集合可以被由宽松到严格进行以下划分:
假定K是R的子集,那么:

  • K是R的超键(superkey):当且仅当K 能够充分地鉴别出每一个独立的元组。这意味着不会有对某条元组,不存在K下的属性与它相同,且R-K下的属性与它不同的元组。
  • K是R的候选键(candidate key):K应当满足超码定义并且应当是最小(minimal)的,这意味着任意K的真子集都不是超键。
  • K是R的主键(primary key):主键必须从候选码中选取,由用户显式定义

2.5 外键(foreign key)

外键声明了一种参照关系,即一个关系中的某些属性依赖于另一个关系中的某些属性,例如r1(A,B,C)中的B属性参照了r2(B,D)中的B属性,这构成了一种参照关系。此时,r1应当声明B为参照r2的B的外键。
基于参照关系的定义,参照关系中外键的值必须在被参照关系中实际存在或为null

三、 关系代数

关系代数抽象地体现了关系运算与关系处理,是SQL语言的基础。
基础的关系代数包括6个基本运算符:

选择(select)

基本模式: σ p ( r ) \sigma _p(r) σp(r)
其中p是选择谓词(selection predicate),这样的表达式含义为 { t ∣ t ∈ r   a n d   p ( t )   h o l d s } \{t|t\in r\ and\ p(t)\ holds\} {ttr and p(t) holds}

投影(project)

并(union)

差(set difference)

笛卡尔积(Cartesian product)

重命名(rename)

重命名操作允许对关系的名称和属性的名称进行重命名: ρ X ( A 1 , A 2 , . . . , A n ) ( E ) \rho_{X(A1,A2,...,An)}(E) ρX(A1,A2,...,An)(E)将关系重命名为X并将属性名称重命名为A1,A2,…,An。

以及四个由基本类型衍生的应用较广的双目运算:

集合的交(intersection)

自然连接(natural join)

除法(division)

赋值(assignment)

使用赋值运算符 ← \leftarrow 可以将查询结果重新表示

四、 扩展关系代数操作

广义投影(Generalized Projection)

广义投影允许在投影列表中使用算术方程表示: ∏ F 1 , F 2 , . . . ( E ) \prod_{F1,F2,...}(E) F1,F2,...(E)
其中Fi可以是关系E中属性名的合理的算数方程式

聚集函数(Aggregate Functions)

聚集函数的功能就是从一个集合的数据中计算出一个结果,因此常用的聚集函数有求均值(avg),求最大/最小值(max/min),求和(sum)。求元组个数(count)等等,不同数据库软件对高阶的聚集函数支持不尽相同。
聚集函数的表示式 G 1 , G 2 , . . . , G n g f 1 ( A 1 ) , f 2 ( A 2 ) , . . . , f n ( A n ) ( E ) _{G1,G2,...,Gn}g_{f1(A1),f2(A2),...,fn(An)}(E) G1,G2,...,Gngf1(A1),f2(A2),...,fn(An)(E)
其中:

  • Gi表示用于生成聚集类的属性列表,声明后每一个用于计算一个聚集函数值的组合(collection)中的G属性都是相同的。当然,G可以为空,这样聚集函数将以整个关系生成1个聚集函数值。
  • Fi表示聚集函数值
  • Ai表示聚集函数接受的属性值

外连接(Outer Join)

是连接操作的扩展,一定程度上防止数据损失

  • null值的使用:
    在这里插入图片描述
    与自然连接不同的三种链接:
  • 左外连接:连接左侧的数据为准,为右侧数据补null
  • 右外连接:同上,以右侧为准
  • 全外连接:保留左右两侧的数据,为所有空值补null

对null值的处理

null值表示不存在的值或未知的值,它具有以下性质

  • 任何包含null的算术表达式的结果都是null
  • null不会被计算入聚集函数中(也即会被它忽视)
  • 布尔操作结果如下
    在这里插入图片描述

用关系代数表示对关系的修改操作

delete: r ← r − E r\leftarrow r-E rrE,其中E是关系代数表达式
insert: r ← r ∪ E r\leftarrow r\cup E rrE
update: r ← ∏ F 1 , F 2 , . . . , F n ( r ) r\leftarrow\prod_{F1,F2,...,Fn}(r) rF1,F2,...,Fn(r)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值