Eat Study Love

먹고 공부하고 사랑하라

Data Science/SQL

4. Relational Algebra and Calculus

eatplaylove 2024. 4. 24. 21:03

https://eglife.tistory.com/63

 

3-2 Relation Model

https://eglife.tistory.com/62 3-1 Relation Modelhttps://eglife.tistory.com/61 3. Relational Modelhttps://eglife.tistory.com/60 2. SQL 기초 실습 코드 https://eglife.tistory.com/59 1. Over View of DB Systems DB라는 것을 배우기 위한 뽕주입

eglife.tistory.com

 

 

대충 쿼리는 여타 다른 프로그래밍 언어처럼 복잡완벽한 계산을 제공하진 않지만 그래도 쉽고 효율적인 계산로직을 허용한다는 뜻이다.

 

Relational Algebra ( RA ) : SQL 내부동작을 위해 효율적인 체계이다.

Relational Calculus ( RC ) : User가 원하는 것을 설명하기에 효율적인 체계이다. -> A system of Computation.

 

- Relational Algebra 구성요소

 

1) Operands ( 피연산자 ) : Relations or Variables representing relations.

2) Operator : Most common thing we have to do now

3) Axioms ( 공리 ) :  교환 / 결합 / 분배같이 증명없이 맞다고 보는 것들

 

- Closeness : 쿼리 계산할 때 input은 보통 relation instance인데 이 때 output도 relation instance인 경우가 많다.

 

 

본격적인 대수관계에 대한 탐구

 

- Relational Algebra

 

예시로 쓰일 Tables

 

 

- Basic Operations

 

1) Selection : 원하는 rows = tuples = records 들을 픽한다.

2) Projection : 원하지 않는 columns = fields = attributes 들을 삭제한다.

 

3) Cross Product : 두 Relation을 결합한다. (PK와 FK로 묶여있는 Tables 결합 = Casterian Product

(중복값이 허용되어 나온다. 원하면 Select + Distinct로 중복제거 必)

 

4) Self-difference : R1 - R2 - tuple 차집합

5) Union : R1 + R2 tuple 합집합

--> 교집합은 합 / 차로 표현이 가능하니 Fundamental Operation은 아니다.

 

- Additional Algebra

 

   - Additional operations : intersection / join / division / renaming / aggregation

   - 필수는 아니지만 useful하다. 각 operation은 relation을 return하니까 composed해서 사용이 가능하다.

 

 

- Projection

 

S2 Table에서 원하는 sname / rating col을 걸러내는 것. 나머지는 삭제 -> Projection이다.

 

 

그리고 기본적으로 Projection은 중복제거기능이 Default로 탑제되어있다.

 

- Selection

 

Selection은 tuple을 (ROW) 걸러내는 거라 중복값이 없다. 애초에 tuple엔 중복이 없으니..

그리고 요런 Operation Schema의 in/output은 Relation형태라 위와 같이 Operator Composition이 가능하다.

 

Selection(Sigma)로 가로줄 자르고, Projection(Pi)로 Column을 선택하는 요 느낌

 

- Union, Intersection, Set - Difference

 

요거와 관련된 예제풀이는 잠시 후에 해보기로 하고,

 

 

합/차/교집합을 진행하려면 column 개수가 Table끼리 같아야 한다. 그리고 그 계산결과로 나온 Output Table역시 column 개수가 같은 형태로 나와야 한다.

 

 

Cross - Product ( or so-called Cartesian Product )

 

Join으로 치면 Outer join과 같은 결과가 나온다. 곱에 연관된 모든 relation의 데이터가 출력이 되는 것.

위의 예시의 경우 sid라는 column명은 S1 / R1에 동시에 나타나므로 C(1->sid1 , 5->sid2)요렇게 Renaming 해주는 것이 바람직하다.

 

 

맞네,, 지금껏 쓰던 SQL이 사실 Relation Algebra를 다 대변하고 있었던 것이다.

SELECT = PROJECTION  /  FROM - Cross product = CARTESIAN PRODUCT  /  WHERE = SELECTION

 

기호로 쓸 때에는 Projection ( Select ( Cross product) ) 요런 품는(?) 순서로 쓴다. 위 기호 참고

 

 

(굉장히 자주 나오는 친구)

JOIN

 

 

 Condition Join이란, 사실상 Condition이 붙은 Cross Product다 =( Cartesian Product )

- Theta-join으로 불리우기도 한다.

 

 

Equi Join이란, Condition Join의 특별한 케이스이다. Condition Join(Theta join)의 Condition에서 오로지 같다! 즉, Equivalent하다! 라는 조건만 허락되는 케이스다. 따라서 기호를 봐도 어떤 부등식이 있는 것이 아니라 Col이름만 떡하니 있다. --> 같은 조건이라고 설정된 col은 중복해서 표현하지 않고 결과값에 한 번만 표시된다.

 

Natural Join은 가장 많이 쓰이는 join이다. 이 역시 Equi-join의 특별한 케이스인데, Equi join이 겹치는 한 col을 설정해서 표현한다면, Natural은 모든 겹치는 column에 대해서만 Join연산을 진행하는 것이다. 기호도 점점 단순화된다.

 

즉,

1. Conditional(Theta)
2. Equi
3. Natural

 

오른쪽으로 갈수록 Special Case이고, 전형적이며 기호표시가 간단해진다.

 

쓰다보니 Cross-Product(Cartesian product)과 Join은 좀 다르네..

 

 

Cross Product는 깡그리 곱하는 개념이라 아무 조건 없이 select * from A,B 하면 A, B의 (M*N)형 Table이 만들어진다.

 

 

SQL은 Set가 아닌 Bag Semantic(의미체계?)를 따른다. 그래서 Projection 하다보면 Duplicate한 값이 있다.

Bag에선 순서는 상관 없고(List와 다르다), 중복은 허용이 된다.(Set와 다르다)

 

Product 곱처럼 Division 기능도 있다던데,, Oracle에선 지원이 되지 않는다

 

 

A가 xy column, B가 y column일때, A/B는 A에서 B와 같은 y값을 갖는 것들을 반환한다.

A x B 때리고 A를 뺀다음에(B와 관련이 없는 중복값 제거) X에 대해선 Projection(optional..) 해주면 된다.

 

굉장히 헷갈리는 부분이다.. 나중에 다시 확인해보도록 하자. 지금은 도저히 모르겠다.

 

관련 예제를 풀어보는 시간

 

 

-> color = 'red' || color = 'green' 요런식으로 표현했었는데 그냥 위로/아래로 볼록 꺽쇠표시를 하면 되었다.

합집합모양이 or , ㅅ모양을 교집합 and 로 받아드리면 되겠다.

 

이게 division을 쓰는 방법이다. A / B 면 A에서 B를 다 포함한 것만 건진다는 것

즉 여집합 개념으로 A에서 disqualified를 다 빼어 B를 온전히 다 포함한 것만 남긴다는 것!

 

헷갈린다 헷갈려!!!!!!!!!!

'Data Science > SQL' 카테고리의 다른 글

3-2 Relation Model  (0) 2024.04.24
3-1 Relation Model  (1) 2024.04.24
3. Relational Model  (0) 2024.04.23
2. SQL 기초 실습 코드  (0) 2024.04.23
1. Over View of DB Systems  (0) 2024.04.20