데이터베이스 설계

yuns_u·2021년 9월 10일
0

💛 관계형 데이터베이스(Relational DataBase)

구조화된 데이터는 하나의 테이블로 표현된다.
이처럼 사전에 정의된 테이블을 relation이라고 한다.

즉, 관계형 데이터베이스는 테이블을 사용하는 데이터베이스를 뜻한다.

🗝 keywords

  • 데이터 : 각 항목에 저장되는 값
  • 테이블(or relation) : 사전에 정의된 행과 열로 구성되어 있는 체계화된 데이터
  • 필드(or column) : 테이블의 열을 가리킨다.
  • 레코드(or tuple) : 테이블의 한 행의 저장된 정보
  • 키 : 테이블의 각 레코드를 구분할 수 있는 값. 각 레코드마다 고유값이어야하며 기본키(Primary Key)와 외래키(Foreign key)등이 있을 수 있다.

💛 관계 종류

테이블 간의 관계는 아래처럼 구분할 수 있다.

  • 1:1 관계
  • 1:N 관계
  • N:N 관계
  • 테이블 자체 관계
  • self referencing 관계

1:1 관계(One-to-one relationship)

테이블의 레코드 하나당 다른 테이블의 한 레코드와 연결되어 있는 경우.

위의 그림에서 User 테이블과 Phonebook 테이블의 관계를 보자.
유저 테이블에는 유저 아이디, 유저 이름, 핸드폰 아이디라는 외래키를 가지고 있다.

전화번호부 테이블에는 전화번호를 보관하고 있다.

한 개의 전화번호당 한 명의 유저를 가지고 그 반대도 동일하다면 이것은 1:1 관계이다.

하지만 이러한 경우는 흔하지 않는데 왜냐하면 어차피 1:1 관계라면 한 테이블에 같이 적는 것이 더 나을 수도 있기 때문이다.

1:N 관계

테이블의 레코드 하나당 다른 테이블의 여러 개의 레코드와 연결되어 있는 경우.

한 유저가 여러 개의 전화번호를 가질 수 있지만 한 전화번호가 여러 명의 유저를 가질 수 없는 경우이다.

이러한 일대다 관계는 관계형 데이터베이스에서 제일 많이 사용된다.

N:N 관계

여러 개의 레코드가 여러 개의 레코드를 가지는 관계이다.
해당 관계의 경우에는 따로 '조인 테이블'을 만들어 관리를 하게 된다.


양방향에서 다수를 가질 수 있는 경우로 위의 예를 통해 살펴보자.
여행 상품이 있다고 하자. 여러 개의 여행 상품이 있고 여러 명의 고객들이 있을 때 한 고객은 여러 개의 여행 상품을 사용할 수 있다.

이러한 다대다 관계는 두 개의 일대다 관계라고 볼 수 있다. 즉, 양 테이블에서 일대다 관계를 만들어줄 수 있는 새로운 테이블을 만들어서 관리를 해줄 수 있다.

이러한 테이블을 조인 테이블이라고 한다.
조인테이블을 통해 양 테이블의 관계를 아래와 같이 정리할 수 있다.

조인 테이블인 'customer_package'테이블의 역할은 그저 customer_id와 package_id를 묶어주는 역할이다.

이 테이블을 통해서 어떤 고객이 어떤 여행상품페키지를 가지고 있는지, 혹은 어떤 여행 상품이 어떤 고객들을 가지고 있는지 등을 확인할 수 있다.

이 때, 이 조인테이블을 따로 테이블로 생성했을 때에도 동일하게 기본키가 있어야 한다.

자기참조관계(Self Referencing Relationship)

테이블 내에서의 관계이다.
예를 들자면 추천인이 누구인지, 혹은 조직 내에 상하관계를 표현하기 위할 때 사용할 수 있다.

유저 한 명 당 한 명의 추천인을 입력할 수 있다.
즉, 한 유저당 하나의 추천인을 가질 수 있는 것이다. 하지만 추천인 입장에서는 여러 명의 유저를 추천할 수 있다. 이는 1:N 관계와 유사하다고 할 수 있다.

profile
💛 공부 블로그 💛

0개의 댓글