[DE] 관계형 데이터베이스

박경국·2022년 1월 22일
0

Data Engineering

목록 보기
3/16
post-thumbnail

1. 관계형 데이터베이스

  • 데이터베이스의 유형은 계층형, 망형, 관계형, 객체지향형, 객체관계형 등으로 분류됩니다.
  • 현재 사용되는 DBMS(Data Base Management System)의 대부분은 관계형 데이터베이스(RDBMS)입니다.
  • RDBMS는 테이블이라는 단위로 구성되며, 이 테이블은 하나 이상의 열과 행으로 이루어져 있습니다.
  • RDBMS는 이 테이블의 관계로 데이터를 구성하고, 표현하는 DBMS입니다. 테이블 간의 관계는 1:1, 1:N, N:N 관계로 표현됩니다.
  • 데이터 : 각 항목에 저장되는 값입니다.
  • 테이블 (혹은 relation) : 사전에 정의된 행과 열로 구성되어 있는 체계화된 데이터입니다.
  • 필드 (혹은 column) : 테이블의 열을 가리킵니다.
  • 레코드 (혹은 tuple) : 테이블의 한 행의 저장된 정보입니다.
  • 키 : 테이블의 각 레코드를 구분할 수 있는 값. 각 레코드마다 고유값이어야 하며 기본키 (primary key) 와 외래키 (foreign key) 등이 있을 수 있습니다.

2. RDBMS 관계 종류

1) 1:1 관계

  • 테이블의 레코드 하나 당 다른 테이블의 한 레코드와 연결되어 있는 경우입니다.
  • User 테이블에는 user_id라는 기본키와 name, Phone_id라는 외래키를 가지고 있습니다.
  • Phonebook 테이블에는 phone_id라는 기본키와 phone_number라는 필드를 가지고 있습니다. phone_id는 이 테이블에서는 기본키이지만 User 테이블에서는 외래키입니다. User 테이블 입장에서는 외부에서 온 key이기 때문입니다.
  • 두 테이블은 phone_id라는 키로 1:1 관계를 맺고 있습니다.
  • 한 개의 전화번호 당 한 개의 phone_id를 가지고 있고, 한 명의 사용자가 한 개의 phone_id(즉, 한 개의 phone_number)를 가지고 있는 경우입니다.

2) 1:N 관계

  • 테이블의 레코드 하나 당 여러 개의 레코드와 연결되어 있는 경우입니다.
  • 한 명의 user가 여러 개의 phone_id(즉, 여러 개의 phone_number)를 가지는 경우입니다.
  • 그 반대는 성립할 수 없습니다. 즉, 전화번호 하나는 한 명의 유저에게만 할당됩니다.
  • 관계형 데이터베이스에서 제일 많이 사용되는 유형입니다.

3) N:N 관계

  • 여러 개의 레코드가 여러 개의 레코드를 가지는 관계입니다.
  • 1:N 관계와 비슷하지만 양방향에서 다수를 가질 수 있는 경우입니다.

  • 위 이미지를 살펴보면, 한 고객은 여러 개의 상품 패키지를 이용할 수 있고, 한 패키지도 여러 명의 고객을 가질 수 있습니다.
  • 위와 같은 관계를 RDBMS에서 표현하기 위해서는 조인 테이블이 필요합니다.

  • 조인 테이블은 양 테이블에서 1:N 관계를 형성할 수 있도록 관계를 중계하는 테이블입니다. N:N 관계를 두 개의 1:N 관계로 분리시켜주는 테이블이라고 볼 수도 있습니다.
  • Customer와 customer_package의 관계는 1:N 관계입니다.
  • Package와 customer_package의 관계도 1:N 관계입니다.

4) 자기참조관계

  • 테이블 안에서 필드 간 맺는 관계입니다.

  • row에는 한 명의 유저와 있고, 한 명의 추천인이 있습니다. 한 명의 유저는 한 명의 추천인을 갖습니다.
  • 하지만 반대로, 한 명의 추천인은 여러 유저를 가질 수 있습니다. 1:N 관계가 하나의 테이블 안에서 성립하는 경우입니다.
  • 조직 내에 상하 관계를 표현할 때도 많이 사용되는 방법입니다. recommend_id 대신에 상사 필드가 들어오면 됩니다.

2. 스키마 디자인

  • 1:1, 1:N 등 테이블 간의 관계를 지어주는 작업을 스키마 디자인이라고 합니다.

  • 각 테이블이 기본키를 중심으로 연결되어 있는 것을 보실 수 있습니다.
  • 스키마 디자인을 할 때는 기본키와 외래키가 연결됩니다. 외래키는 원래 있던 테이블에서는 기본키여야 합니다. 그렇지 않으면 N:N 관계가 성립될 수도 있습니다.

다음 포스팅에서는 SQL에 대해 정리하도록 하겠습니다.

0개의 댓글