AqueryTool(ERD)을 활용한 Database 모델링

eunji hwang·2020년 4월 8일
2

BACKEND-PYTHON-DJANGO

목록 보기
7/28

ERD

ERD : 개체-관계-다이어그램
"구조"화된 데이터를 저장하기 위해 데이터베이스를 쓴다. 이 데이터의 "구조" 및 그에 수반한 제약 조건들은 다양한 기법에 의해 설계될 수 있다. 그 기법 중 하나가 개체-관계 모델링(Entity-Relationship Modelling)이다. 줄여서 ERM이라고 한다. ERM 프로세스의 산출물을 가리켜 개체-관계 다이어그램(Entity-Relationship Diagram)이라 한다. 줄여서 ERD라 일컫는다. 데이터 모델링 과정은 데이터 모델을 그림으로 표현하기 위해 표시법을 필요로 한다. ERD는 개념적 데이터 모델 혹은 시맨틱 데이터 모델의 한 타입이다.
(출처 : wikipedia)

AqueryTool

무겁고 복잡, 불편한 기존 ERD 프로그램을 가볍고 깔끔, 간결 이쁘고 쓰기 좋게 만든 ERD 프로그램이다.

AqueryTool 사이트

  • 로그인 없이 사용가능(저장하려면 로그인필요)
  • 무료
  • 깔끔 ui
  • 간결한 사용법 : AqueryTool 공식 문서
  • 웹기반(html5)서비스 : 모든 디바이스에서 접근가능

2~3년전 한빛미디어에서 추최하는 MySQL Workbench 세션에 참가 한 적이 있는데 그때 사용해본 ERD는 너무 어려워서 이건 무슨말인고~ 하면서 들었던 기억이 있다(물론 개발잘모르는 디자이너 시절이었지만)
그때 기억에 데이터베이스는 너무 어렵고, 보기좋게 해준다는 ERD 조차 너무 어렵구나 생각했었다. 하지만 AqueryTool을 사용해보니 이해도 쉽고, 간편하고, 깔끔한 ui에! 지금까지 알던 DB, ERD 어려워! 하는 생각이 바꼈다.
나와같이 기존 ERD 사용이 너무 어렵게 느껴졌다면 AqueryTool을 사용해보기 바란다.

연습

어제 과제로 주어졌던 스타벅스 음료카테고리의 DB모델링을 AqueryTool와 MySQL을 사용하여 진행했다. 이리저리 DB 기초지식을 보고 AqueryTool의 정말 간결한 공식문서를 읽고 시작했다.

테이블(table = entity)

테이블은 총 8개로 아래 목록과 같다.

  • 카테고리
  • 음료
  • 영양정보
  • 알레르기정보
  • 알레르기음료중간테이블
  • 이벤트
  • 이벤트음료중간테이블
  • 음료사진

관계

1) 영양정보:음료 = 1:1

2) 카테고리:음료 = 1:다

하나의 카테고리에 여러개의 음료가 들어간다 & 음료는 하나의 카테고리를 갖는다.
음료가 여러카테고리를 갖는다면 관계가 변했겠지만, 스타벅스 음료페이지에서는 중복을 허용하지 않고있다.

3) 사진:음료 = 다:1

하나의 음료는 여러 사진을 갖을수 있다 & 하나의 사진은 하나의 음료를 갖는다.

4) 이벤트:음료 = 다:다

하나의 이벤트는 여러 음료를 갖는다 & 하나의 음료는 여러 이벤트를 갖을수 있다.

5) 알레르기:음료 = 다:다

하나의 알레르기는 여러 음료를 갖을 수 있다 & 하나의 음료는 여러 알레르기 성분을 갖을 수 있다

중간테이블

다:다 일때는 중간역할을 해주는 테이블이 필요하다. A 테이블에서 FK(Foreign key)를 연결/ B테이블에서 FK 연결이 필요하다.

위 사진에서 중간테이블은 beverage테이블의 id에 beverage-id 컬럼의 FK를 연결하였고, event테이블의 id에 event-id 컬럼의 FK를 연결하여 중간 테이블을 형성했다.

JOIN or null colums

음료와 음료사진의 관계를 생각하다 보니 하나의 테이블에 음료+음료사진을 넣을 것인지, 테이블을 분리하여 작업할지에 대해 고민하게 됬다. 어떤것이 더 효율적일까? 내 나름 정리해 봤다(틀릴수 있다~)

JOIN

  • 여기저기서 사용하는 테이블

테이블을 합치려면 JOIN 명령을 사용한다. JOIN 명령은 처리할때 비용이 발생하기 때문에 데이터모델링을 할때 잘 생각해야 한다.

null colums

  • 음료사진 테이블이 음료테이블에서만 사용한다면 (다른테이블에서 사용X)
  • 음료당 사진 수가 정해져 있다.
  • 메모리가 많다.
  • 로직이 단순하길 바란다(조인, 여러 테이블 없데이트 X)

일반 쇼핑몰의 경우 단순한 구조를 위해 상품별 이미지 또한 하나의 테이블로 작성하는 경우가 많다고 한다.


공부하기!

field는 어떻게 설정해야 하는지 잘 모르겠다. MySQL에서 boolean은 설정이 안된다는 말과, 몇버전 이후로 된다는 말이 있는데..
지금의 나는 TINYINT(1) 로 0,1로 값을 받고 T/F로 변환해서 사용한다 이해해, 이 방식으로 진행했다. 허허 아직 잘 모르겠다. 더 공부해야할 부분이 너무 많구만

profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

0개의 댓글