关系代数中的八种基本运算

关系代数中的八种基本运算

1. 选择(Selection)

定义:从一个关系中选择满足特定条件的元组(行)。

符号:σ (sigma)

形式:σ_condition®

例子

  • 关系 ( Employees ):

    | emp_id | name  | age | dept_id |
    |--------|-------|-----|---------|
    | 1      | Alice | 35  | 10      |
    | 2      | Bob   | 28  | 20      |
    | 3      | Carol | 42  | 10      |
    
  • 操作:σ_age > 30 (Employees)

  • 结果

    | emp_id | name  | age | dept_id |
    |--------|-------|-----|---------|
    | 1      | Alice | 35  | 10      |
    | 3      | Carol | 42  | 10      |
    

作用:过滤数据,只保留满足条件的元组。

2. 投影(Projection)

定义:从一个关系中提取出特定的属性(列),形成一个新的关系。

符号:π (pi)

形式:π_attribute1, attribute2,…®

例子

  • 关系 ( Employees ):

    | emp_id | name  | age | dept_id |
    |--------|-------|-----|---------|
    | 1      | Alice | 35  | 10      |
    | 2      | Bob   | 28  | 20      |
    | 3      | Carol | 42  | 10      |
    
  • 操作:π_name, age (Employees)

  • 结果

    | name  | age |
    |-------|-----|
    | Alice | 35  |
    | Bob   | 28  |
    | Carol | 42  |
    

作用:提取感兴趣的列,去除不需要的列,并且自动去重。

3. 并(Union)

定义:将两个关系中的所有不同元组合并在一起,形成一个新的关系。

符号:∪

形式:R ∪ S

例子

  • 关系 ( R ):

    | emp_id | name  |
    |--------|-------|
    | 1      | Alice |
    | 2      | Bob   |
    
  • 关系 ( S ):

    | emp_id | name  |
    |--------|-------|
    | 2      | Bob   |
    | 3      | Carol |
    
  • 操作:R ∪ S

  • 结果

    | emp_id | name  |
    |--------|-------|
    | 1      | Alice |
    | 2      | Bob   |
    | 3      | Carol |
    

作用:合并两个关系的元组,去除重复元组。

4. 交(Intersection)

定义:得到两个关系的交集,即两个关系中共同存在的元组。

符号:∩

形式:R ∩ S

例子

  • 关系 ( R ):

    | emp_id | name  |
    |--------|-------|
    | 1      | Alice |
    | 2      | Bob   |
    
  • 关系 ( S ):

    | emp_id | name  |
    |--------|-------|
    | 2      | Bob   |
    | 3      | Carol |
    
  • 操作:R ∩ S

  • 结果

    | emp_id | name  |
    |--------|-------|
    | 2      | Bob   |
    

作用:找出两个关系中共有的元组。

5. 差(Difference)

定义:从一个关系中减去另一个关系,得到仅存在于第一个关系中的元组。

符号:−

形式:R − S

例子

  • 关系 ( R ):

    | emp_id | name  |
    |--------|-------|
    | 1      | Alice |
    | 2      | Bob   |
    
  • 关系 ( S ):

    | emp_id | name  |
    |--------|-------|
    | 2      | Bob   |
    | 3      | Carol |
    
  • 操作:R − S

  • 结果

    | emp_id | name  |
    |--------|-------|
    | 1      | Alice |
    

作用:去除第二个关系中的元组,保留第一个关系中的其他元组。

6. 笛卡尔积(Cartesian Product)

定义:得到两个关系的笛卡尔积,即所有可能的元组组合。

符号:×

形式:R × S

例子

  • 关系 ( R ):

    | emp_id | name  |
    |--------|-------|
    | 1      | Alice |
    | 2      | Bob   |
    
  • 关系 ( S ):

    | dept_id | dept_name |
    |---------|-----------|
    | 10      | HR        |
    | 20      | Finance   |
    
  • 操作:R × S

  • 结果

    | emp_id | name  | dept_id | dept_name |
    |--------|-------|---------|-----------|
    | 1      | Alice | 10      | HR        |
    | 1      | Alice | 20      | Finance   |
    | 2      | Bob   | 10      | HR        |
    | 2      | Bob   | 20      | Finance   |
    

作用:生成两个关系的所有可能组合,通常与选择运算配合使用以形成有意义的连接。

7. 连接(Join)

定义:通过共享属性将两个关系组合在一起。

符号:⋈

形式:R ⋈_condition S

例子

  • 关系 ( Employees ):

    | emp_id | name  | dept_id |
    |--------|-------|---------|
    | 1      | Alice | 10      |
    | 2      | Bob   | 20      |
    | 3      | Carol | 10      |
    
  • 关系 ( Departments ):

    | dept_id | dept_name |
    |---------|-----------|
    | 10      | HR        |
    | 20      | Finance   |
    | 30      | IT        |
    
  • 操作:Employees ⋈_Employees.dept_id=Departments.dept_id Departments

  • 结果

    | emp_id | name  | dept_id | dept_name |
    |--------|-------|---------|-----------|
    | 1      | Alice | 10      | HR        |
    | 2      | Bob   | 20      | Finance   |
    | 3      | Carol | 10      | HR        |
    

作用:合并两个关系中的相关元组,形成新的关系。

8. 除(Division)

定义:得到一个关系,其中包含的元组是在另一个关系中出现的所有属性值的集合。

符号:÷

形式:R ÷ S

例子

  • 关系 ( R ) (已登记学生):

    | Student | Course   |
    |---------|----------|
    | Alice   | Math     |
    | Alice   | Physics  |
    | Bob     | Math     |
    | Bob     | Physics  |
    | Bob     | Chemistry|
    | Carol   | Math     |
    
  • 关系 ( S ) (课程):

    | Course   |
    |----------|
    | Math     |
    | Physics  |
    
  • 操作:R ÷ S

  • 结果

    | Student |
    |---------|
    | Alice   |
    | Bob     |
    

作用:查找在所有特定值(如课程)中都存在的元组。

这些基本运算构成了关系代数的基础,支持关系数据库的查询和操作。这些运算可以组合使用,以实现复杂的数据检索和操作。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 20:54:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 20:54:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 20:54:04       58 阅读
  4. Python语言-面向对象

    2024-07-11 20:54:04       69 阅读

热门阅读

  1. Oracle 确认被锁对象

    2024-07-11 20:54:04       19 阅读
  2. 【思考Spring Security框架的相关问题】

    2024-07-11 20:54:04       24 阅读
  3. 在SpringBoot使用AOP防止接口重复提交

    2024-07-11 20:54:04       22 阅读
  4. Spring AOP的几种实现方式

    2024-07-11 20:54:04       19 阅读
  5. pytorch 模型保存到本地之后,如何继续训练

    2024-07-11 20:54:04       23 阅读
  6. 【Spring】springSecurity使用

    2024-07-11 20:54:04       17 阅读
  7. 力扣682.棒球比赛

    2024-07-11 20:54:04       18 阅读
  8. STM32学习历程(day4)

    2024-07-11 20:54:04       21 阅读
  9. C# 装饰器模式(Decorator Pattern)

    2024-07-11 20:54:04       21 阅读
  10. 代码随想录-DAY⑦-字符串——leetcode 344 | 541 | 151

    2024-07-11 20:54:04       21 阅读
  11. FastAPI+SQLAlchemy数据库连接

    2024-07-11 20:54:04       19 阅读
  12. 关于vue监听数组

    2024-07-11 20:54:04       18 阅读
  13. SQL 自定义函数

    2024-07-11 20:54:04       22 阅读
  14. linux内核访问读写用户层文件方法

    2024-07-11 20:54:04       21 阅读