Relational Algebra(관계 대수)
- Relation
- 이름을 가지고 있는 2D 데이터
- ex) Empolyee(EMP_ID, Name, Dept_Name, Salary)
- Relational Data Model
- Data Structure: 어디에 어떻게 저장을 하는 지
- Data Integrity: 어떻게 무결성을 지키는 지
- Data Manipulation: 어떻게 데이터를 가져다가 사용하는 지
- Relational Algebra
- 어떻게 데이터를 끄집어 내서 사용하는지에 대한 연산
- 연산들의 집합, SQL의 바탕
- relation들로 부터 데이터들을 꺼내서 사용하는지에 대한연산
- SELECT, PROJECT, Mathematical Set Operation 연산이 있음
1. SELECT Operation
- relation의 튜플에서 selection 조건을 만족하는 값들을 가져오기 위해 사용
- 결과를 새로운 relation에 저장
- 표현식
- 시그마가 오고 아래 첨자에 selection condition이 오고 ()안에 relation을 씀
- Select condition
- 표현식의 결과가 true/false로 나옴
- 각각의 relation의 튜플 하나하나에 적용
- 만약 각각의 튜플의 결과가 true가 되면 result relation에 나타남
- 가령 EMPLOYEE1에 selection condition으로 salary > 50000인 select operation을 하면 EMPLOYEE1_RESULT relation에 그 값들이 들어감
- "attribute 이름, 비교연산자, attribute 값" 또는 "attribute 이름, 비교연산자, attribute 이름"으로 select condition이 들어갈 수 있음
- Select condition이 2개 이상이면 AND, OR 연산자를 추가함
- (Select condition1) AND (Select condition2)
- TRUE AND TRUE = TRUE
- TRUE AND FALSE = FALSE
- FALSE AND FALSE = FALSE
- (Select condition1) OR (Select condition2)
- TRUE AND TRUE = TRUE
- TRUE AND FALSE = TRUE
- FALSE AND FALSE = FALSE
- NOT 연산자를 사용할 수 있음
- Select Operation은 오직 한 개만 사용이 가능함
- Relation의 자리에 Select Operation이 올 수 있음
- Select Operation의 결과값이 relation이라 가능함
2. PROJECT Operation
- Relation에서 column의 결과를 보고싶을 때 사용
- 결과를 새로운 relation에 저장
- 표현식
- 파이가 오고 아래 첨자에 column 이름이 오고 ()안에 relation을 씀
- Relation의 자리에 SELECT Operation이 올 수 있음
- 먼저 select operation이 실행되어서 원하는 레코드들을 relation으로 남기고 project operation해서 원하는 column들을 결과로 받음
- 결과 relation(원하는 column이름)을 통해 column 이름을 바꿀 수 있음
3. Mathematical Set Operation
- 수학적 집합 연산을 적용할 수 있음
- 순서가 없음
- 중복은 카운트되지 않음
- 수학적 집합 연산이 있음
- Union
- Intersection
- Difference
- Union
- 결과 relation에는 2개의 relation의 모든 튜플들이 들어감
- 중복은 없애줌
- column의 개수가 같고 column에 해당하는 domain이 같아야 union이 가능함
- Intersection
- 결과 relation에는 2개의 relation에서 공유되는 튜플들이 들어감
- Difference
- 결과 relation에는 하나의 relation에서 다른 하나의 relation과 중복되는 값들을 제외한 튜플들이 들어감
4. Cartesian Product Operation
- R, S 2개의 relation이 있을 때 R X S로 나타냄
- 결과 relation에는 R, S에 있는 모든 attribute들이 모두 들어감
- 결과 relation의 각각의 튜플들은 R과 S에서 온 튜플들의 조합
- Join 연산은 cartesian product의 select 연산과 같음
5. Join Operation
- 결과 relation에는 R, S에 있는 모든 attribute들이 들어감
- 결과 relation의 각각의 튜플들은 join condition을 만족하는 R과 S에서 온 튜플들의 조합
- 나비 넥타이 모양의 연산 기호를 사용
- Join Operation은 EQUIJOIN, NATURAL JOIN 2개
- EQUIJOIN
- 가장 일반적인 Join 연산
- =, join condition이 포함
- NATURAL JOIN
- 추가적인 액션과 요구가 필요한 특별한 EQUIJOIN
- 추가적인 액션: 불필요한 attribute를 제거함
- 추가적인 요구: join condition의 join attribute의 이름이 같아야 함
- 양쪽에서 join codition에 사용되는 attribute가 같을 때 사용
- *를 사용
6. Outer Join Operation
- 넥타이 모양의 한쪽이 나와있는 연산자를 사용
- LEFT OUTER JOIN은 왼쪽이 나와있는 넥타이
- RIGHT OUTER JOIN은 오른쪽이 나와있는 넥타이
- LEFT OUTER JOIN
- 결과 relation에는 R, S에 있는 모든 attribute들이 들어감
- 결과 relation에는 S가 join condition을 만족하면, R쪽에서 온 튜플과 S의 튜플을 붙임
- 결과 relation에는 S가 join condition을 만족하지 않으면, R쪽에서 온 튜플과 null을 붙임
- RIGHT OUTER JOIN