数据库系统概论第二章笔记(2)

关系数据库(2)

1. 专门的关系运算

  • 选择
  • 投影
  • 连接
  • 除运算

2. 选择

  • 在关系R中选择满足给定条件的所有元组(选择行)

  • 表达式

    • t代表元组
    • F代表一个公式
      • 基本形式:X1θY1
      • θ表示比较运算符:>,<,>=…
    • F(t)代表一个命题:可以判读真假的表达式
    • 公式与命题之间的关系

在这里插入图片描述

在这里插入图片描述

示例:使用关系代数实现选择

  • Student表

在这里插入图片描述

  • 选择语法

在这里插入图片描述

  • 结果

在这里插入图片描述

3. 投影

  • 从关系R中选择出若干属性列组成新的关系(选择列)

  • 记作

在这里插入图片描述

  • A为R中的属性列

  • 注意点

    • 投影之后不仅取消了原关系中某些列,还可能取消原关系中的某些元组,因为取消了某些列后,可能出现重复的行

示例

  • Student表

在这里插入图片描述

  • 投影语法

在这里插入图片描述

  • 投影结果
    • 取消了重复的元组

在这里插入图片描述

4. 连接

设有关系R,S,R上有属性组A,B,S上有属性组B

  • F连接:多个θ连接(笛卡儿积+选择)

    • θ连接:两个关系的笛卡儿积中选取属性间满足一定条件的元组

    在这里插入图片描述

    • 等值连接:θ为’='的连接运算,从关系R和关系S中选取A,B属性值相等的那些元组
  • 自然连接(笛卡儿积+选择+投影)

    • 特殊的等值连接
    • 要求进行比较的分量是同名的属性组并在结果中把重复的列去除

示例

在这里插入图片描述

5.除运算

5.1 象集

  • 在关系R(X,Z)中,X,Z为属性组
  • 象集表示X的的取值为x时的元组在Z上分量的集合
  • 通俗理解:某一属性X的所有其他属性

示例

  • 关系R

在这里插入图片描述

  • 取值的象集
    • x1在R中的象集{Z1,Z2,Z3}
    • x2在R中的象集{Z2,Z3}
    • x3在R中的象集{Z1,Z3}

5.2 除运算

  • 设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中
用象集定义除法
  • 给定关系R(X,Y),S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但Y来自同一个域
  • 通俗理解:R除S得到一个新关系,这个**关系中X的取值满足在R关系对应取值的象集包含关系S在Y上投影的集合**
示例

在这里插入图片描述

6.用5种基本运算表示除运算

  • 设有关系R(X,Y),S(Y,Z)
最终结果

在这里插入图片描述

  • 下面这张图片表示在X列上的投影

在这里插入图片描述

分步过程

  1. 使R中X的每个分量x的象集都包含关系S在Y上的投影

在这里插入图片描述

  1. 减去实际的R(如果**某个X的取值的元组记录完全被减去了,说明这个X取值,包含S在Y上的投影集,包含在除法的结果中**)

    在这里插入图片描述

  2. 2步骤中得到的结果集,把**结果集在X上投影这些X的取值就是没有完全包含S在Y上的投影集**,不包含在除法结果中)

在这里插入图片描述

  1. 对**实际的R(最初的R)在X上投影(包含所有的X)-步骤3的投影(这些X没有完全包含S在Y上的投影集)**,得到的结果就是完全包含S在Y上的投影集的X的取值的集合

在这里插入图片描述

示例

  • 选出选了1,3课程学生的学号

    • R/S
  • 关系R :SC学生选课表

学号Sno(X)课程号Cno(Y)
0211
0212
0213
0222
0223
  • 关系S
课程号Cno(Y)课程名Cname(Z)
1离散数学
3数据库
第一步(笛卡儿积)
  • 得到一个笛卡尔积(假设所有学生都选了),注意投影会去除重复的元组(见上文)
XY
0211
0213
0221
0223
第二步(差)
  • 减去实际的R(差运算)
XY
0221
第三步(投影)
  • 在第二步的结果基础上对X投影

X集合={022}

第四步(投影,差)
  • 对最初的关系R在X上投影(所有学生),减去第三步得到的集合(这些学生没有完全包含要求的课程)

{021,022}-{022}={021}

{021} 就是既选择了1,又选择了3课程的学生

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库系统概论第七章主要讨论了关系数据库的设计与规范化。在设计一个关系数据库之前,需要对关系模式进行设计,并对其进行规范化,以消除数据冗余和数据插入异常。 对于关系模式的设计,需要确定关系的名称、属性和主键。属性的选择应该合理,能够准确描述实体的特征,并且尽量避免数据冗余。主键是用来唯一标识关系中的元组,因此应该选择能够保证唯一性的属性作为主键。 规范化是一种将关系模式转化为满足特定要求的标准化过程。常用的规范化方法有1NF、2NF、3NF等。1NF要求每个属性都是不可分割的原子值,即每个属性不能再分解为其他更小的值。2NF要求满足1NF的基础上,非主键属性依赖于整个主键而不是部分主键。3NF要求满足2NF的基础上,消除所有传递依赖。 规范化的目的是为了消除数据冗余和数据插入异常。数据冗余指的是同样的数据在数据库中存储了多次,这不仅浪费了存储空间,也容易导致数据一致性问题。数据插入异常是指在插入新数据时,可能会因为依赖关系的存在而导致插入失败或者引入不正确的数据。 通过规范化的过程,可以有效地设计出高效、合理的关系数据库。但规范化也有一定的局限性,过度规范化可能会导致查询的复杂性增加,影响数据库的性能。因此,在进行规范化设计时,需要根据实际情况进行权衡,并根据具体需求进行灵活的调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值