Database modeling [Wecode][210811]

Jungsoo kim·2021년 8월 12일
0

wecode

목록 보기
11/30

이번에는 데이터베이스 모델링에 관련해서 글을 작성해 보려고 한다.

하나의 테이블 안에 모든 데이터를 한 번에 정리해서 관리하면 테이블을 만들 때는 편할 수 있겠지만, 관리하거나 내가 원하는 데이터만 추출하는 데 있어 어려움이 있을 수 있고 테이블의 크기가 너무 커져서 필요 이상의 용량을 잡아먹을 수 있다. 따라서, 데이터를 관리 할 때 여러 개의 테이블을 생성하여 필요할 때 관련 테이블을 연결해서 출력하는 방식을 활용할 수 있다.

여기서는 하나의 예시(스타벅스 메뉴 카테고리)를 통해 어떤 방식으로 데이터베이스 모델링을 하는지 확인해 보려고 한다.

스타벅스 홈페이지에 들어가면 아주 많은 메뉴 탭이 있지만 모든 데이터를 작성하기에는 무리가 있는 것 같아 메뉴 - 음료 - 각 음료에 있는 자료만 데이터베이스 모델링을 해보자.

https://www.starbucks.co.kr/menu/drink_list.do

위의 스타벅스 코리아 메뉴 페이지에 접속하게 되면 여러가지 음료의 종류가 등록되어 있고, 각 메뉴별로 아래 사진과 같은 메뉴의 설명 페이지를 포함하고 있다.

즉, 메뉴 - 음료 - 각 음료 순서대로 각각 데이터 테이블을 만들고 Forgin key를 활용하여 데이터를 연결시켜 주면 된다. 먼저 결과물 부터 확인해 보자면 아래와 같다.

설명하기에 앞서, 위의 데이터모델링은 Aquerytool을 사용하여 작성하였으며, 따로 데이터 값은 작성하지 않고 테이블 간의 연결 관계만 표시하였다.

위에서 보는 것과 같이 입력할 수 있는 데이터 종류들이 나열되어 있으며, 그 종류로는 PK (primary key), FK(Forgin key), Name, Type등이 있다.

여기서 PK(Primary key)는 데이터의 입력 목록 중에 대표가 되는 것을 나타내며 보통은 데이터의 순서 (1, 2, 3, 4번)등을 PK로 하며, FK(Forgin Key)는 데이터를 연결 시킬 때 연결이 되는 데이터의 목록을 이 FK(Forgin Key)로 한다.

데이터모델링은 위의 사진을 천천히 정독하다보면 어렵지 않게 연결 관계를 알 수 있다.

기본적인 연결 관계를 서술해 보기 전에 데이터 연결 관계에 대해서 알아보자.

총 3개의 연결 관계가 있는데,

  1. one to one 연결
  2. many to one 연결
  3. many to many 연결

첫 번째로, one to one 연결은 하나의 데이터가 다른 테이블의 하나의 데이터와 연결되는 관계를 말한다. 예를 들면 각 음료마다 음료의 설명은 모두 다른 내용이 입력되기 때문에 음료의 이름과 음료의 설명은 one to one 관계라고 볼 수 있다.

두 번째로, many to one 연결은 하나의 데이터가 다른 테이블의 많은 데이터와 연결 되는 관계를 말한다. 예를 들면 메뉴 하나의 항목에 다수의 하위 메뉴 (콜드 브루, 브루드, 에스프레소 등)이 있는 경우는 many to one 관계라고 볼 수 있다.

마지막으로 many to many 연결은 여러개의 데이터가 다른 테이블의 많은 데이터와 연결되는 관계를 말한다. 예를 들면 몇몇 개의 메뉴가 알레르기 성분을 우유 대두 등을 갖고 있다고 치자. 그렇다면 하나의 메뉴가 여러개의 알레르기 성분을 가짐과 동시에 우유, 대두 등의 알레르기 성분도 여러개의 메뉴를 가질 수 있다. 이러한 경우를 many to many 관계라고 생각하면 된다.

one to one 연결은 특별한 경우가 아니고서는 테이블을 나누어서 보관할 경우는 없다.
주의해야 할 것은 many to one 연결 및 many to many연결이다.

many to one 연결의 연결 방식은 아래와 같다.

  1. 하위 테이블 ID, 상위 테이블의 ID, Name(제품명 등)을 갖는다.
  2. 보편적으로는 하위 테이블(many쪽 데이터)가 Forgin key를 갖는다.
  3. 하위 테이블의 상위 테이블 ID목록이 상위 테이블의 ID와 연결되며, 상위 테이블 ID목록이 Forgin key가 된다.

many to many 연결의 연결 방식은 아래의 내용을 추가적으로 고려해주면 된다.

  1. many to many 연결의 경우 상위 테이블과 하위 테이블이외에 중계 테이블을 하나 만들어 주어야 한다.
  2. 중계 테이블은 ID, 상위 테이블의 ID 목록, 하위 테이블의 ID 목록을 목록으로 갖는다.
  3. 중계 테이블의 상위 ID 값은 상위 테이블의 ID와 연결되며, 중계 테이블의 하위 ID 값은 하위 테이블의 ID와 연결이 된다.

이런 방식으로 데이터베이스의 모듈링을 하면 되며, 실제 값이 입력된 데이터 베이스 등의 예시는 앞으로 진행하게 되는 프로젝트가 있으면 덧붙여서 업데이트 할 예정이다.

그럼 이만...

profile
어렵지만 꾸준히 차근차근 해 나가자~!

0개의 댓글