관계형 DB, 즉 "Relational" DB의 Relation은 수학에서의 Relation에서 유래함
Relation in Mathematics의 2가지 정의
1] subset of Catesian Product
2] set of tuples
-> 위 내용을 아래에서 자세히 알아 보자.
set
set : 중복 없는 elements를 가지는 collection이며, 순서는 중요하지 않다.
e.g.{1,3,4,5} == {1,5,4,3}
Cartesian Product
Catesian Procut의 수학적 표기 : X_1 x X_2 x .... X_n = {(x_1,x_2,...x_n) | x_1 < X1 and x_2 < X_2,....x_n < X_n}
-> Set X_1,Set X_2,Set X_n, 즉 n개의 Set에서 하나씩의 elements를 골라 만들 수 있는 모든 쌍의 집합
Cartesian Product와 수학에서의 Relation의 관계
위에서 Relation의 정의 중 하나로 " subset of Catesian Product "라고 언급을 하였다.
즉, Relation이란 Cartesian Product의 부분집합인 것이다.
n-ary relation <= X_1 x X_2 x .....X_n
Ex) binary Relation <= A x B
Tuple과 Relation의 관계
Tuple : Relation의 구성 요소이며 list 형태이다.
각각의 Set는 순서를 중요시 하지 않는다.
그러나 Cartesian Product의 부분 집합(Relation)을 구조를 보자.
{X_1의 elemetns, X_2의 elements, .... X_n의 elements}의 구조를 가지고 있다.
즉 순서가 보장돼 있다.
고로, tuple은 순서가 보장되는 list 형태를 띈다.
* n - tuple : n 개의 집합에서 만들어지는 Relation의 구성 요소.
Relation in Mathematics to Relational data model
위에서 우리는 수학에서의 relation의 개념들을 배웠다. 그럼 이제 이 수학적 개념인 relation이 relational data model에서
어떻게 사용되고 있는지 STUDENT 테이블을 예시로 알아 보자.
* SET이 Relational data model에서는 Domain(도메인)의 개념으로 사용된다는 점을 먼저 기억하자.
* 도메인(domain)에 대한 개념은 다음 사이트 참조(https://jbluke.tistory.com/624)
relation을 도메인을 기준으로 표현하려고 하니 한 가지 걸리는 부분이 있다.
위 그림 중 빨간색 부분을 보면 Phone_numbers라는 도메인 Set이 중복해서 존재한다.
개발자가 도메인 Set을 보았을 때 중복된 이름의 도메인이 있을 경우 혼동스럽다.
그러나 하나의 Phone_numbers 도메인은 STUDENT 본인의 연락처이고, 다른 하나의 Phone_numbers 도메인은 친구/부
모 연락처와 같은 비상 연락처를 용도로 사용하고 있다.
이렇게 같은 도메인이더라도 목적이 다를 수가 있다.
이때 도메인 Set이 중복되는 문제를 해결하기 위하여 attribute라는 개념을 DB에서는 만들어서 같은 도메인이더라도 그것
의 용도와 목적을 구분할 수 있게 하였다.
Relation은 Table로 표현된다.
이와 같이 수학적 개념에서의 tuple의 표현 방법은 컴퓨터 개발자에게는 불편한 지식 표현이다.
고로 수학에서의 tuple(Relation의 구성요소)를 1x1의 Table로 표현한다.
정리
SET -> 도메인 or Attribute
tuple -> 1x1 Table
relation -> Table
'CS 과목(CS科目) > 데이터 베이스(データベース)' 카테고리의 다른 글
create database vs create schema (0) | 2025.02.05 |
---|---|
key(Feat. superKey, candidate key, foreign key) (0) | 2025.02.05 |
database 기본 개념(Feat. data models, conceptual level, logical level, physical level, three schema architecture etc) (0) | 2025.01.31 |
internal schema (0) | 2025.01.31 |
Inner Join과 Cross Join(세타 Join)의 차이 (0) | 2023.04.22 |