数据库 — 关系数据库

2022/2/4 2:14:07

本文主要是介绍数据库 — 关系数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 关系语言的分类

关系语言分为三种:

  • 关系代数语言
  • 关系演算语言
  • SQL 语言

2 关系代数语言

  • 定义:关系代数是一种抽象的查询语言,它用对关系的运算来表达查询

  • 三大要素

    • 运算对象(关系)
    • 运算符(集合运算符和专门的关系运算符)
    • 运算结果(关系)
  • 关系代数运算符

运算符类型 符号表示 含义
集合运算符 \(\cup\)
集合运算符 \(-\)
集合运算符 \(\cap\)
集合运算符 \(\times\) 笛卡尔积
关系运算符 \(\sigma\) 选择
关系运算符 \(\prod\) 投影
关系运算符 连接
关系运算符 \(\div\)
2.1 关系运算举例

以两个关系 R 和 S 为例,集合之间的运算如下:
R 关系如下:

A B C
\(a_1\) \(b_1\) \(c_1\)
\(a_1\) \(b_2\) \(c_2\)
\(a_2\) \(b_2\) \(c_1\)

S 关系如下:

A B C
\(a_1\) \(b_2\) \(c_2\)
\(a_1\) \(b_3\) \(c_2\)
\(a_2\) \(b_2\) \(c_1\)
1 并集(\(R \cup S\))
A B C
\(a_1\) \(b_1\) \(c_1\)
\(a_1\) \(b_2\) \(c_2\)
\(a_2\) \(b_2\) \(c_1\)
\(a_1\) \(b_3\) \(c_2\)
2 交集(\(R \cap S\))
A B C
\(a_1\) \(b_2\) \(c_2\)
\(a_2\) \(b_2\) \(c_1\)
3 差集(\(R - S\))
A B C
\(a_1\) \(b_1\) \(c_1\)
4 笛卡尔积(\(R \times S\))
R.A R.B R.C S.A S.B S.C
\(a_1\) \(b_1\) \(c_1\) \(a_1\) \(b_2\) \(c_2\)
\(a_1\) \(b_1\) \(c_1\) \(a_1\) \(b_3\) \(c_2\)
\(a_1\) \(b_1\) \(c_1\) \(a_2\) \(b_2\) \(c_1\)
\(a_1\) \(b_2\) \(c_2\) \(a_1\) \(b_2\) \(c_2\)
\(a_1\) \(b_2\) \(c_2\) \(a_1\) \(b_3\) \(c_2\)
\(a_1\) \(b_2\) \(c_2\) \(a_2\) \(b_2\) \(c_1\)
\(a_2\) \(b_2\) \(c_1\) \(a_1\) \(b_2\) \(c_2\)
\(a_2\) \(b_2\) \(c_1\) \(a_1\) \(b_3\) \(c_2\)
\(a_2\) \(b_2\) \(c_1\) \(a_2\) \(b_2\) \(c_1\)
5 选择(\(\sigma\))

例如:查询关系 R 中 A 属性值等于 \(a_1\) 的集合: \(\sigma_{A='a_1'}(R)\)

  • 条件表达式中的运算符
运算符类型 运算符符号 含义
比较运算符 \(>\) 大于
比较运算符 \(\geq\) 大于等于
比较运算符 \(<\) 小于
比较运算符 \(\leq\) 小于等于
比较运算符 \(=\) 等于
比较运算符 \(◇\) 不等于
逻辑运算符 ¬
逻辑运算符 Ʌ
逻辑运算符
6 投影(\(\prod\))

例如:对关系 R 中属性 A 和 B 进行投影:\(\prod _{A,B}(R)\) ,结果如下

A B
\(a_1\) \(b_1\)
\(a_1\) \(b_2\)
\(a_2\) \(b_2\)
7 连接
  • 四种连接符号

    四种连接

  • 悬浮元组:两个关系 R 和 S 在做自然连接时,关系 R 中某些元组有可能在 S 中不存在公共属性上值相等的元组,从而造成 R 中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组

例:有两个关系 R 和 S ,其属性值分别如下:
R 关系如下:

A B C D
\(\alpha\) \(1\) \(\alpha\) \(a\)
\(\beta\) \(2\) \(\gamma\) \(a\)
\(\gamma\) \(4\) \(\beta\) \(b\)
\(\alpha\) \(1\) \(\gamma\) \(a\)
\(\theta\) \(2\) \(\beta\) \(b\)

S 关系如下:

B D E
\(1\) \(a\) \(\alpha\)
\(3\) \(a\) \(\beta\)
\(1\) \(a\) \(\gamma\)
\(2\) \(b\) \(\theta\)
\(3\) \(b\) \(\mu\)

1 自然连接

  • 定义:将共同属性进行等值连接
A B C D E
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\gamma\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\gamma\)
\(\theta\) \(2\) \(\beta\) \(b\) \(\theta\)

2 外连接

  • 定义:把悬浮元组也保存在结果关系中,而在其他属性上填入空值(\(null\))就叫做外连接
A B C D E
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\gamma\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\gamma\)
\(\theta\) \(2\) \(\beta\) \(b\) \(\theta\)
\(\beta\) \(2\) \(\gamma\) \(a\) \(null\)
\(\gamma\) \(4\) \(\beta\) \(b\) \(null\)
\(null\) \(3\) \(null\) \(a\) \(\beta\)
\(null\) \(3\) \(null\) \(b\) \(\mu\)

3 左外连接

  • 定义:只保留左边关系 R 中的悬浮元组
A B C D E
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\gamma\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\gamma\)
\(\theta\) \(2\) \(\beta\) \(b\) \(\theta\)
\(\beta\) \(2\) \(\gamma\) \(a\) \(null\)
\(\gamma\) \(4\) \(\beta\) \(b\) \(null\)

4 右外连接

  • 定义:只保留右边关系 S 中的悬浮元组
A B C D E
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\alpha\) \(a\) \(\gamma\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\alpha\)
\(\alpha\) \(1\) \(\gamma\) \(a\) \(\gamma\)
\(\theta\) \(2\) \(\beta\) \(b\) \(\theta\)
\(null\) \(3\) \(null\) \(a\) \(\beta\)
\(null\) \(3\) \(null\) \(b\) \(\mu\)
8 除 (R \(\div\) S)
  • 定义:保留 R 中满足 S 的,而且 R 中的列要去掉 S 的列

设关系 R 如下:

姓名 选修课程
张三 计算机
张三 数据库
张三 网络
李四 网络
李四 计算机
王五 数据库
王五 网络

设关系 S 如下:

选修课程
数据库
网络

则 \(R \div S\) 为:

姓名
张三
王五
2.2 关系的完整性
1 实体完整性
  • 主码唯一且非空
2 参照完整性
  • 外码要么为空,要么对应另一表的主码
3 用户定义完整性
  • 用户定义的关系属性要完整


这篇关于数据库 — 关系数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程