2020.09.04 업데이트 다차원 데이터
모델링에 사용법에 대해서는 이전에 한번 적은적이 있다.
https://velog.io/@ash3767/%EB%AA%A8%EB%8D%B8%EB%A7%81-Richard-Barker
다시 정리하고 싶어서 또 적습니다.
- DB모델링은 데이터베이스를 만들때 데이터가 시각적으로 보일수 있도록 모델링 하는것
- 모델링이란 우리가 소프트웨어에서 본질적으로 다루고 있는 데이터에 대한 모델을 만드는 과정이다.
시퀀스 다이아그램
이러한 동작순서에 대한 데이터를 시각적으로 볼 수 있습니다.
- 시각화 시킨다는 것은 전체적 설계의 구조를 좀 더 명확하게 이해할 수 있게 된다.
- 남에게 자신의 소프트웨어의 의도를 잘 전달할 수 있다.(혼자서 개발하는것이 아니기 때문에 )
- 자신의 생각을 표현해서 산출물이 나온다는것은 개발자에게 큰 영향을 미친다.
- 데이터를 보다 잘 다루기 위해서 설계가 필요하며 소프트웨어 전체에 영향을 미친다.
- 테이블을 보여주는 것보다 ERD 를 보여주는 것은 처음 개발을 시작하는 사람의 이해력을 높일 수 있다.
- mysqlworkbench 를 툴이 있는데 설치하면 좋다.
- ER-win - Oracle 를 지원 , 대기업에서 자주 사용
- MySQL Workbench - 전세계적으로 유명
- 다른 툴도 많다. ( ERD Tool , DB Design Tool 등등)
동그라미 없는 것과 있는것의 차이 ( 동그란것은 Optional 이라고 한다 )
유저
는 여러개의 주문을 가질 수 있기 때문에 users 와 orders 는 1 : N 관계 입니다.
상품
은 여러개의 주문에 주문되어질 수 있기 때문에 products 와 orders 는 1 : N 의 관계입니다. 그리고 , 주문은 여러개의 상품을 가질수 있기 때문에
orders 와 products 는 N : N 관계로 변경합니다.
Many to Many 의 관계는 직접적인 관계를 연결 할 수 없기때문에 ,
orders_has_products 라는 중간테이블을 만듭니다.
여기까지만 다이어그램을 그려도 쇼핑몰의 윤곽이 잡힌다.
주문을 하기위해서는 유저의 집주소가 필요하다. orders 에 users 의 address 가 있긴 하지만 쇼핑몰에서 주문을 할때 배달장소를 입력받게 한다.
이것을 위해 address_book 테이블을 추가한다.
- 보통 스타트업에서 ORM 을 많이 사용하는데 , ORM 을 사용하지 않게 해보는것도 중요하다
- ORM 을 사용하는 경우에는 최대한 빨리 프로토타입을 생성해야할때 , 아직 사업의 궤도가 오르지 않았을때 빨리 만들기 위해 사용하고 사업이 안정화가 되면 걷어내는것이 좋다고 생각한다.
다른디비 보다 오라클이 좀더 완성도 높은 DB라 성능적인 측면 , 데이터에 대한 안정성 측면에서 오라클 만큼의 성능을 내는 DBMS가 잘 없다.
NoSQL 은 데이터에 대해 DBMS 가 보장하지 않는다. (insert) 그래서 로그를 쌓는다던가 데이터의 통계를 내야하는 데이터를 쌓아야하는 경우에 사용하지 금융정보나 개인정보같은것을 저장해야하는 상황에서 사용하면 안된다 생각한다.
어떤 사람들은 단일 데이터 유형의 복수의 차원에 접근하고자 합니다. 특히 OLAP 데이터베이스에서 말이죠 .
예를들어 , 고객 당 판매량 ( sales by customer ) , 현재 상태 ( state ) 그리고 판매 월( month ) 을 알고자 한다고 합시다.
이런 상황에서는 , 중앙 테이블 (central facet table ) 을 만들어 다른 고객 ( customer ) , 상태 ( state ) , 그리고 판매 월 ( month ) 테이블이 참조 할 수 있도록 합니다.