ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库 — 关系数据库

2022-02-03 21:03:47  阅读:167  来源: 互联网

标签:关系 数据库 beta 运算符 关系数据库 alpha null gamma


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 用户定义完整性
  • 用户定义的关系属性要完整

标签:关系,数据库,beta,运算符,关系数据库,alpha,null,gamma
来源: https://www.cnblogs.com/wudaojiuxiao/p/15861984.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有