关系代数中的八种基本运算
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 |
作用:查找在所有特定值(如课程)中都存在的元组。
这些基本运算构成了关系代数的基础,支持关系数据库的查询和操作。这些运算可以组合使用,以实现复杂的数据检索和操作。