화장품 회사 laka.co.kr를 클로닝하는 프로젝트를 하고 있는 중이다. 모델링에 많은 시간을 쏟아부어야 한다는 이야기가 있다. 기초를 탄탄히 해야 건물이 쭉쭉 잘 올라가듯이 기초작업이기 때문이다. 그래서 많이 힘들다.
일단 모델링을 하기 전에 필요한 것이 있다. 그 클로닝을 할 사이트를 정밀 탐사를 하는 것이 중요하다. 만약 새로운 웹사이트를 만들때라면 제안서를 꼼꼼히 파악하는게 우선이다. 꼼꼼히 살펴 본 결과 몇가지 중요한 포인트를 찾았다.(데이터 모델링에 필요한)
첫번째,
라카의 제품의 카테고리를 두개 가지는 경우가 있다.
두번째,
라카 제품의 칼라는 하나도 안 겹치는 것 같지만 수십개중 두개가 겹친다.(부들부들)
세번째,
각 칼라별로 다른 전성분을 가진다.
네번째,
제품이 다양한 제조사를 가질 수 있으며, 제조사는 다양한 제품만들 수 있다.
다섯번째,
모든 제품이 같은 정보를 가지는 정보가 있고 아닌 것도 있다.
같은 정보 : 교환&환불 정책, 고객 상담, 품질 보증, 유통기한
다른 정보 : 중량, 사용 방법, 주요 사항, 식약처 허가, 주의 사항
등등
홈페이지를 주욱 둘러보며 데이터베이스에 저장시킬 데이터들을 알아보고 필요한 필드들을 생각한다. 그리고 나서 만든 ERD.
ERD를 Aquery Tool을 이용하여 그려봤는데 몇 가지 유의 사항? 지키면 좋을 것들이 있다.
Wecode Mentor's Tips!
- 테이블의 이름은 모두 소문자 복수형으로 맞춰주세요.
ex) products, categories, accounts, colors, ...
- 컬럼 이름은 줄여 쓰지 않고, 모두 풀어 씁니다.
ex ) img ( X ) / image ( O ), en_name ( X ) / english_name ( O )
- Foriegn Key 를 연결한 컬럼 이름에는 **'언더바 id'**를 붙여주세요.
ex ) category_id, user_id, ...
- 테이블이 속한 기능(app)별로 컬러링을 해주면, 나중에도 알아보기가 훨씬 쉬워져요!
나는,
제품관련 테이블 - 검은색
회원관리 테이블 - 노랑색
상품주문 테이블 - 빨간색
위의 첫번째 이유 때문에 main_categories와 Products는 다대다(ManyToMany)관계로 설정된다. 그래서 중간 테이블을 만들어주고 서로 연결한다. 다대다이지만 중간테이블을 가운데 두고 서로 일대다 일대다 하는 것과 같다. 그리고 몇개 겹치는 컬러때문에 컬러와 제품도 다대다관계로 설정된다.
세번째 이유로 그림에는 나와있지 않지만 전성분은 컬러와 일대일(OneToOne)관계를 맺게 된다.
네번째 이유는 위의 첫번째와 두번째 같이 다대다를 설정해줘야하는 이유가 된다. 똑같이 중간 테이블을 주고 제조사와 제품의 관계가 설정된다.
만약,
제품당 하나의 카테고리를 가지고 있고
제품당 다 다른 컬러를 가지고 있고
제품당 다 다른 제조사를 가지고 있다면
관계는 변했을 것이다.
제품당 하나의 카테고리를 가지고 있다면 일대다관계(카테고리가 여러 제품을 가짐)설정
제품당 다 다른 컬러를 가지고 있다면 일대다관계(하나의 제품이 여러 컬러를 가짐)설정
제품당 다 다른 제조사를 가지고 있다면 일대다관계(제품은 하나의 제조사에서 가져옴)설정이 됨
다섯째 이유를 통해 basic_info와 detail_product를 나누었다. 그리고 그것들은 어차피 제품의 정보이기 때문에 products에 귀속되어야 한다. 그래서 일대일 설정을 해주었다. 제품 하나당 하나의 정보를 가질 수 있기 때문이다.
관계는 딱 세가지이다.
- 일대다(OneToMany)
- 다대다(ManyToMany)
- 일대일(OneToOne)
솔직히 서로 참조하는 건데 누가 기준이냐에 따라서 굉장히 의미가 모호해지기 때문에 이해에 어려움이 많다.
이해하려면 본인 마음 속에 테이블마다의 사이즈를 지정해주고 바라보고 참조되어지고 라는 것을 느끼면 된다.
모델링을 하면서 느낀 것이 몇 가지가 있다.
- 엑셀을 활용하여 테이블에 데이터를 쌓아가면서 하면 이해가 좀 더 쉽다.
사실 나의 이해도 있지만 동료의 이해를 돕기에도 좋다.
- 본인이 보고 느끼고 만든 ERD가 다른 사람에게 쉽게 읽히지 않는다. (읽고 분석하고 이해하는데 시간이 걸림)
- PK는 참조되어지지만 참조하진 않는다.
위에서 한 ERD를 보고 하나하나 다 입력을 한다.
아직 shipping_information 이 있는 order앱이 진행중이라 주석처리를 해놓았다.
이상 끝
'Wecode > Project' 카테고리의 다른 글
LAKA-Project-DAY4-Stand-up meeting , ERD 데이터베이스 모델링(Database Modeling)(3) (0) | 2020.05.28 |
---|---|
LAKA-Project-ERD 데이터베이스 모델링(Database Modeling)(2) (0) | 2020.05.27 |
LAKA-Project-프로젝트의 출발, Toy Project with new team (0) | 2020.05.24 |
Project- 토이 프로젝트(Toy Project), 기억하고 싶은 코드, 미니 프로젝트를 하며 느낀점 (0) | 2020.05.23 |
프로젝트 시작하기전에 유의할 것들. (0) | 2020.05.22 |