DBMS关系代数
精华
小牛编辑
171浏览
2023-03-14
关系代数是一种过程查询语言,它提供了一步一步的过程来获取查询的结果。 它使用运算符来执行查询。
关系操作的类型
1. 选择操作
- 选择(select)操作选择满足给定谓词的元组。
- 它由西格玛(σ)表示。
符号: σ p(r)
其中:
σ
用于选择预测r
用于关系p
用作命题逻辑公式,可以使用以下连接符:AND OR
和NOT
。这些关系可以用作关系运算符,如:=
,≠
,≥
,<
,>
和≤
。
例如 : LOAN关系
BRANCH_NAME | LOAN_NO | AMOUNT |
---|---|---|
Downtown | L-17 | 1000 |
Redwood | L-23 | 2000 |
Perryride | L-15 | 1500 |
Downtown | L-14 | 1500 |
Mianus | L-13 | 500 |
Roundhill | L-11 | 900 |
Perryride | L-16 | 1300 |
输入:
σ BRANCH_NAME="perryride" (LOAN)
输出:
BRANCH_NAME | LOAN_NO | AMOUNT |
---|---|---|
Perryride | L-15 | 1500 |
Perryride | L-16 | 1300 |
2.项目操作
此操作显示希望在结果中显示的那些属性的列表。其余属性从表中消除。
它用Π
表示。
符号 : ∏ A1, A2, An (r)
其中,
A1
,A2
,A3
用作关系r
的属性名称。
示例 : 客户关系
NAME | STREET | CITY |
---|---|---|
Jones | Main | Harrison |
Smith | North | Rye |
Hays | Main | Harrison |
Curry | North | Rye |
Johnson | Alma | Brooklyn |
Brooks | Senator | Brooklyn |
输入 -
∏ NAME, CITY (CUSTOMER)
NAME | CITY |
---|---|
Jones | Harrison |
Smith | Rye |
Hays | Harrison |
Curry | Rye |
Johnson | Brooklyn |
Brooks | Brooklyn |
3.联合操作
假设有两个元组R
和S
。并集操作包含R
或S
中的所有元组或R&S
中的两个元组。
它消除了重复的元组。它使用∪
表示。
符号 : R ∪ S
联合操作必须符合以下条件:
R
和S
必须具有相同数量的属性。- 自动消除重复的元组。
示例:存款人关系
CUSTOMER_NAME | ACCOUNT_NO |
---|---|
Johnson | A-101 |
Smith | A-121 |
Mayes | A-321 |
Turner | A-176 |
Johnson | A-273 |
Jones | A-472 |
Lindsay | A-284 |
借款人关系
CUSTOMER_NAME | LOAN_NO |
---|---|
Jones | L-17 |
Smith | L-23 |
Hayes | L-15 |
Jackson | L-14 |
Curry | L-93 |
Smith | L-11 |
Williams | L-17 |
输入:
∏ CUSTOMER_NAME (BORROW) ∪ ∏ CUSTOMER_NAME (DEPOSITOR)
输出 -
CUSTOMER_NAME
----------------------------------------
Johnson
Smith
Hayes
Turner
Jones
Lindsay
Jackson
Curry
Williams
Mayes
4. 集合交集
假设有两个元组R
和S
,集合交集操作包含R&S
中的所有元组。
它用交叉∩
符号表示。
R ∩ S
示例: 使用上面的存款人(DEPOSITOR
)表和借款人(BORROW
)表
输入:
∏ CUSTOMER_NAME (BORROW) ∩ ∏ CUSTOMER_NAME (DEPOSITOR)
输出:
CUSTOMER_NAME
--------------------------------
Smith
Jones
5. 集合差集
假设有两个元组R
和S
。集合交集操作包含R
中但不在S
中的所有元组。它由交叉减号( -
)表示。
R - S
示例: 使用上面的存款人(DEPOSITOR
)表和借款人(BORROW
)表
输入:
∏ CUSTOMER_NAME (BORROW) - ∏ CUSTOMER_NAME (DEPOSITOR)
输出结果:
CUSTOMER_NAME
---------------------------
Jackson
Hayes
Willians
Curry
6. 笛卡尔积
笛卡尔积用于将一个表中的每一行与另一个表中的每一行组合。 它也被称为交叉产生。
它用X
表示。
E X D
示例:EMPLOYEE
表
EMP_ID | EMP_NAME | EMP_DEPT |
---|---|---|
1 | Smith | A |
2 | Harry | C |
3 | John | B |
DEPARTMENT
表
DEPT_NO | DEPT_NAME |
---|---|
A | Marketing |
B | Sales |
C | Legal |
输入:
EMPLOYEE X DEPARTMENT
输出:
EMP_ID | EMP_NAME | EMP_DEPT | DEPT_NO | DEPT_NAME |
---|---|---|---|---|
1 | Smith | A | A | Marketing |
1 | Smith | A | B | Sales |
1 | Smith | A | C | Legal |
2 | Harry | C | A | Marketing |
2 | Harry | C | B | Sales |
2 | Harry | C | C | Legal |
3 | John | B | A | Marketing |
3 | John | B | B | Sales |
3 | John | B | C | Legal |
7. 重命名操作
重命名操作用于重命名输出关系,它由rho(ρ)
表示。
示例: 使用重命名运算符将STUDENT
关系重命名为STUDENT1
。
ρ(STUDENT1, STUDENT)
注意:除了这些常见操作之外,可以在连接(join)操作中使用关系代数。