ERD : 개체-관계-다이어그램
"구조"화된 데이터를 저장하기 위해 데이터베이스를 쓴다. 이 데이터의 "구조" 및 그에 수반한 제약 조건들은 다양한 기법에 의해 설계될 수 있다. 그 기법 중 하나가 개체-관계 모델링(Entity-Relationship Modelling)이다. 줄여서 ERM이라고 한다. ERM 프로세스의 산출물을 가리켜 개체-관계 다이어그램(Entity-Relationship Diagram)이라 한다. 줄여서 ERD라 일컫는다. 데이터 모델링 과정은 데이터 모델을 그림으로 표현하기 위해 표시법을 필요로 한다. ERD는 개념적 데이터 모델 혹은 시맨틱 데이터 모델의 한 타입이다.
(출처 : wikipedia)
무겁고 복잡, 불편한 기존 ERD 프로그램을 가볍고 깔끔, 간결 이쁘고 쓰기 좋게 만든 ERD 프로그램이다.
2~3년전 한빛미디어에서 추최하는 MySQL Workbench 세션에 참가 한 적이 있는데 그때 사용해본 ERD는 너무 어려워서 이건 무슨말인고~ 하면서 들었던 기억이 있다(물론 개발잘모르는 디자이너 시절이었지만)
그때 기억에 데이터베이스는 너무 어렵고, 보기좋게 해준다는 ERD 조차 너무 어렵구나 생각했었다. 하지만 AqueryTool을 사용해보니 이해도 쉽고, 간편하고, 깔끔한 ui에! 지금까지 알던 DB, ERD 어려워! 하는 생각이 바꼈다.
나와같이 기존 ERD 사용이 너무 어렵게 느껴졌다면 AqueryTool을 사용해보기 바란다.
어제 과제로 주어졌던 스타벅스 음료카테고리의 DB모델링을 AqueryTool와 MySQL을 사용하여 진행했다. 이리저리 DB 기초지식을 보고 AqueryTool의 정말 간결한 공식문서를 읽고 시작했다.
테이블은 총 8개로 아래 목록과 같다.
하나의 카테고리에 여러개의 음료가 들어간다 & 음료는 하나의 카테고리를 갖는다.
음료가 여러카테고리를 갖는다면 관계가 변했겠지만, 스타벅스 음료페이지에서는 중복을 허용하지 않고있다.
하나의 음료는 여러 사진을 갖을수 있다 & 하나의 사진은 하나의 음료를 갖는다.
하나의 이벤트는 여러 음료를 갖는다 & 하나의 음료는 여러 이벤트를 갖을수 있다.
하나의 알레르기는 여러 음료를 갖을 수 있다 & 하나의 음료는 여러 알레르기 성분을 갖을 수 있다
다:다 일때는 중간역할을 해주는 테이블이 필요하다. A 테이블에서 FK(Foreign key)를 연결/ B테이블에서 FK 연결이 필요하다.
위 사진에서 중간테이블은 beverage테이블의 id에 beverage-id 컬럼의 FK를 연결하였고, event테이블의 id에 event-id 컬럼의 FK를 연결하여 중간 테이블을 형성했다.
음료와 음료사진의 관계를 생각하다 보니 하나의 테이블에 음료+음료사진을 넣을 것인지, 테이블을 분리하여 작업할지에 대해 고민하게 됬다. 어떤것이 더 효율적일까? 내 나름 정리해 봤다(틀릴수 있다~)
테이블을 합치려면 JOIN 명령을 사용한다. JOIN 명령은 처리할때 비용이 발생하기 때문에 데이터모델링을 할때 잘 생각해야 한다.
일반 쇼핑몰의 경우 단순한 구조를 위해 상품별 이미지 또한 하나의 테이블로 작성하는 경우가 많다고 한다.
field는 어떻게 설정해야 하는지 잘 모르겠다. MySQL에서 boolean은 설정이 안된다는 말과, 몇버전 이후로 된다는 말이 있는데..
지금의 나는 TINYINT(1)
로 0,1로 값을 받고 T/F로 변환해서 사용한다 이해해, 이 방식으로 진행했다. 허허 아직 잘 모르겠다. 더 공부해야할 부분이 너무 많구만