AI & Data를 활용하는 기술경영자

Intro to Relational Model(2) 본문

카테고리 없음

Intro to Relational Model(2)

Data_Lover 2022. 12. 2. 01:15
728x90

Relational Model

Intro to Relational Model(2)

Relational Query Languages

릴레이셔널 쿼리 언어는 사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어로 사용자의 요청을 받아들이고 DB에게 사용자의 요구를 실행하도록 relation algebra를 이용하여 지시한다.

 

Pure language는 실제로 구현되는 언어는 아니고 컴퓨터 시스템에서 실제로 어떤 프로그램을 작성한다거나 하지 않는 이론적인 언어로 relational algebra(절차적 언어)와 relation calculus(non-procedure)가 있다.

 

조금 더 자세히 설명하면, relational algebra는 릴레이션에서 원하는 결과를 얻기 위해서 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 것으로 relation algebra 절차적 언어로 하나 이상의 릴레이션의 연산을 수행하여 결과 릴레이션이 나올 때까지의 절차를 확인할 수 있게 알려줍니다.

 

그래서, 실제 DBMS 내부에선 relation algebra를 기반으로 둔 연산을 수행해서 최종적인 우리가 원하는 릴레이션, 즉 결과 집합을 반환을 하게 됩니다.

 

조금 더 깊게 설명하면, relation algebra는 크게 두 가지의 연산이 있는데 relational operation 과 일반 집합 연산입니다.

 

relational operation는 관계 데이터 모델을 위해서 고안된 것으로 selection, projection, natural join 그리고 cartesian product와 같은 연산자입니다.

 

일반 집한 연산은 수학의 집합이론에서 차용돼서 갖고 온 것으로 union, intersection 그리고 set difference등이 있습니다.

 

관계 대수

릴레이션간 연산을 통해서 결과 릴레이션을 찾는 절차를 기술하는 언어로 수행하기 위한 식을 relation algebra expression입니다.

 

대상이 되는 릴레이션과 연산자로 구성이 되고순서는 수학의 연산과 동일하게 괄호부터 우선 계산하고 왼쪽에서 오른쪽으로 연산을 진행하게 됩니다.

간단한 정리본

Selection of tuples

 

 

위의 표를 가지고 릴레이션 쿼리 언어를 이해하도록 합니다

 

릴레이션 쿼리 언어는 하나의 릴레이션이나 두 개의 릴레이션에 적용할 수 있는 여러 개의 relational operation을 제공하는 것으로 연산들의 결과는 하나의 릴레이션으로 표현이 됩니다.

 

selection

 

첫번 째 사용할 것은 selection으로 릴레이션 모델의 가장 기본이 되는 연산입니다. 왜냐하면, 릴레이션으로부터 원하는 튜플을 가져오는 연산을 수행하고, 우선적으로 튜플을 가져오고 싶은 게 있다면 조건 지정을 해줘야합니다.

위의 예시를 들면, 릴레이션 R에서 A값과 B값이 같고 D의 값이 5보다 큰 튜플을 고르는 것이라고 가정합니다.

 

그러면, selection는 하나의 행들을 하나 하나 가져와서 지정된 조건과 맞는지 확인하면서 값을 찾아낸다고 생각을 하시면 됩니다.

즉, selection는 하나의 릴레이션으로부터 어떤 특정 조건을 만족시키는 튜플을 선택하여서 연산의 결과로 어떤 릴레이션 하나를 돌려받게 됩니다.

 

Projection

 

Projection 연산은 selection 연산처럼 어떤 릴레이션에서 무언가를 선택하는 연산이지만, 릴레이션의 컬럼을 세로 방향의 컬럼 값을 가져오는 연산이고 내가 원하는 컬럼을 선택하는 것입니다.

 

위의 표를 보면, 릴레이션 R에서 A라는 속성 값만 혹은 C라는 속성값만 가져올 수도 있고, B만을 제외해서도 가져올 수 있습니다.

잊지 말아야할 것은 릴레이션이 집합의 개념임으로 같은 값을 가지고 있는 원소는 가져서는 안되므로 중복되는 애들 중에서 중복되는 애들 중에 딱 하나의 값만 최종적인 결과 릴레이션에 포함하게 됩니다.

 

Cartesian Product

 

두 개의 릴레이션을 연결하는 연산자로 각각의 그 튜플들의 쌍을 결합하는 연산자입니다.

즉, 인풋으로 들어온 두 개의 릴레이션의 모든 행들의 페어를 출력하여 속성들의 값이 어떤 것이고, 공통으로 있는 속성들의 값이 같은지 아닌지를 고려하지 않고 가능한 모든 페어들을 만들어 주는 것입니다.

 

예를 들면, 릴레이션 r과 s가 있는데 r은 두 개의 튜플을 갖고 있고 s는 4개의 튜플을 가지고 있습니다.

이때, r에 있는 튜플 하나와 s 릴레이션에 있는 모든 튜플에 대해서 각각 페어를 만들어줍니다.

 

즉, 두 개의 릴레이션을 결합하는데 두 릴레이션에 있는 모두 튜플들의 그 페어가 될 수 있는 모든 가능한 튜플들을 만드는 연산입니다.

 

Set Operation(Union)

 

릴레이션은 집합으로 구성되었기 때문에 set operation을 적용시킬 수 있지만 같은 타입의 값을 가지고 있지 않다면 릴레이션의 집합은 튜플의 집합이기에 의미가 사라집니다.

 

고로, 의미를 갖기 위해선 각 릴레이션이 갖고 있는 튜플의 구조(동일 길이, 동일 튜플, 동일 속성)가 같아야 합니다.

합집합 연산(Union)은 두 개의 입력된 릴레이션의 모든 루프를 가지는 릴레이션을 만드는 것입니다.

 

Set Operation(Difference)

 

한쪽 릴레이션에 다른쪽 릴레이션과 같은 튜플이 있을 경우 튜플을 제거하는 것으로, s릴레이션의 차집합 연산을 하면 이 r 릴레이션에 있는 튜플 중에 릴레이션에 있는 튜플들을 제거하게 되는 것입니다.

 

Set Operation(intersection)

 

집합 연산은 두 개의 입력된 릴레이션에서 공통적인 들어있는 튜플만을 가지는 릴레이션을 결과 릴레이션으로 만들어 주는 것으로 릴레이션 r은 지금 세 개의 튜플을 가지고  릴레이션 s는 두 개의 튜플을 가지고 있습니다.

 

s릴레이션의 첫번째 튜플과 r 릴레이션의 두 번째 튜플이 같은 값을 가지고 있는 것을 볼 수 있고 이 교집합 연산에서 이렇게 값을 가지고 있는 튜플을 가져와서 새로운 결과 릴레이션을 만들어주는 것입니다.

 

이 집합 연산에서는 릴레이션들의 구조가 같아야지만 이 연산의 의미를 가질 수 있고, 또 하나 두 개의 릴레이션을 조인하는 합치는 연산이 있다.

 

Natural join

 

어떤 두 릴레이션을 결합할 때 어떻게 결합해야 하는가에 대해서 생각을 해보는 것으로 두 릴레이션이 공통된 컬럼 즉 속성을 가지고 있다면,

공통된 attribute가 같은 값을 가지고 있는 튜플들끼리 매칭을 시키는 것입니다.

 

두 릴레이션의 공통된 속성이 있을 때, 동일한 값을 가지고 있으면 그 두 튜플들을 결합시키면 되는 것입니다.

 

 

728x90