230323(목) 모각코 제3회 DB술사의 진지한 DB 리뷰

장수미2023. 3. 22. 23:04

 

안녕하세요 세계최강 DB술사입니다.

오늘은 웃음기를 싹빼고

3회차만에 DB공부를 해보려합니다.

저는 DB술사가 맞는걸까요?

 

 

 

오늘은 관계 대수에 대해서 정리해볼겁니다.

 

 

1. 대수

 

대수는 수와 그것들 간의 연산을 다루는 수학의 한 분야인데요,

사실 정의보다는 의미하는 바를 알아봐야합니다.

 

A @ B = C

라는 식이 있다면

 

A, B는 피연산자,

@는 연산자입니다.

그리고 

A와 B는 같은 데이터 타입을 가져야합니다!

이것을 폐쇄성질 이라고 합니다.

 

Q. 근데 파이썬에서는 int랑 float끼리 연산 되던데용?

A. 그건 파이썬이 알잘딱 했기 때문입니다...

(하지만 이런 경우

예기치않은 오류가 생길 수 있으니

지양하는 게 맞습니다.

디버깅도 개힘듦)

 

 

2. 관계 대수

 

그럼 '관계' 대수는 무엇일까요?

 

A @ B = C

에서

A, B, C가

릴레이션(테이블, 튜플의 집합)

인 경우 입니다.

 

수업을 제대로 안들어서

릴레이션이 먼지 모른다고요?

제가 친히 알려드리겠습니다.

 

테이블(표)끼리 서로 연산하는 거라

생각하면 됩니다...

 

관계대수에서도

폐쇄성질이 적용됩니다.

 

폐쇄성질 내용에 한가지 덧붙이자면

중첩된 수식의 표현 또한 가능합니다!

대수학에서도 가능한게

관계 대수에서도 똑같이 적용됩니다.

이런거 관계 대수에서도 가능!

 

3. 연산자 분류

 

피연산자의 개수에 따라

1개 - Unary operator

2개 - Binary operator

로 분류합니다.

 

사칙연산은 Binary operator입니다.

 

1+2=3

 

+ 연산을 위해서 1과 2,

2개의 피연산자가 필요합니다.

 

-2

 

마이너스 2처럼

음수를 나타내는 -의 경우는

피연산자가 1개 필요한

Unary operator입니다.

 

C언어에서

a++와 같은연산 또한

Unary operator 입니다.

 

 

4. 관계 대수 연산자의 종류

 

더 있는데

오늘 다룰 연산자만

들고왔습니다.

 

?. 하지만 여러분...

 

님들

고등학교 나왓잔아요.

대학 왓잔아요.

 

합집합 교집합 차집합 모르면...

대학 어케 오신거죠?

네? 확통 안배웠다고요?????

저는 19학번이라 그런거 몰라요...

물론 이건 릴레이션에 적용되는 개념이지만

그 정도의 응용, 할 수 잇잔아?

 

생.략.하.겠.습.니.다.

 

 

5. 카티션 프로덕트

 

고등교육을 받은 우리는

프로덕트가 곱셈인것을 알 수 있습니다.

 

그런데...

최강 DB술사는

Cartesian Product를 데카르트 곱이라고 부르는

문서를 여럿 발견하게 되는데...

설마 미친 영어가 드디어 돌아버려서

저걸 데카르트라고 읽기로 한걸까요?

 

.

.

.

노파심에 찾아본 결과

 

데카르트를 라틴어로

Renatus Cartesius라고 해서

Cartesian이 나왔다고 합니다.

 

진짜 알다가도 모르겠는 영어

진알모영

 

 

 

자 보면 딱 느낌이 옵니다.

칼럼은 이어 붙이고

내용들은

요래저래해서

3 X 5 = 15개의 행

가 됐군요.

이게 카티션 프로덕트입니다.

 

 

6. 합병가능한 릴레이션

 

합집합, 교집합, 차집합의 경우

연산의 피연산자들은

 

i. 차수가 같아야 함

ii. 대응 속성 별로 도메인이 같아야 함

 

이 두가지 조건을 충족해야

합병이 가능합니다.

 

얘넨 될까요?

차수는 3으로 같네요

하지만 도메인이 다르군요...

 

Q. 도메인이 뭔가요?

A. 당신 수업을 안들으셨군요.

속성의 데이터 타입 정도로 알아두시면 됩니다.

예를 들어,

교수번호는 string(혹은 char),

학수번호는 int입니다. 다르지요?

 

상식적으로

쓸 수 있는 칸 수가 같고

데이터 타입이 같아야

합치든 말든 할거 아님!

 

정수 적는 칸에

문자 적을 수 없잔아!

 

 

7. 교집합, 합집합, 카티션 프로덕트의 속성

 

결합법칙 되고

교환법칙 됩니다.

된다는데...

더 할말이 없네요.

 

 

8. 셀렉트와 프로젝트

 

이 중요한 걸 두 개를

묶었습니다.

더 적기 싫어하는 모습입니다...

 

이렇게

을 택하는 것이

셀렉트입니다.

수평적 부분집합이라고 합니다.

 

이것은 을 택했습니다.

프로젝트입니다.

수직적 부분집합이라고 합니다.

 

그러면

학생 테이블에서 CS학과 3학년의 학번과 이름을 검색하라.

학생테이블

해당하는 가로줄을 먼저 찾고 -> 셀렉트

그 뒤 해당하는 칼럼을 찾으면 -> 프로젝트

4 라

5 마

6 라

 

이렇게 찾으면 되겠네요!

 

 

상식적으로

프로젝트를 먼저하면

학과와 학년을 알 수 없게 됩니다.

그러면 안됩니다.

 

오늘도

쩔었다.

찢었다.

세상이 날 찍었다.

 

모각코 담당자님 저 육회비빔밥값 했지요?

호호