데이터 모델링 순서
1. 업무파악(요구사항 수집 및 분석)
2. 개념적 데이터 모델링(ERD 작성)
3. 논리적 데이터 모델링
4. 물리적 데이터 모델링

ERD
ERD (Entity Relationship Diagram)는 단어에서 의미하는 그대로 'Entity 개체'와 'Relationship 관계'를 중점적으로 표시하는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램이다. 개체 관계도라고도 불리며 요구분석사항에서 얻은 엔티티와 속성들의 관계를 그림으로 표현한 것이다.

Entity: 객체, 개체, 테이블, 엔티티
MySQL
MySQL을 설치하는 방법은 Docker를 사용하여 설치하였다. 설치하는 과정이 약간 오래걸리긴 하지만, 사용하거나 삭제할 때 편리하여 많이 사용하는 방법이다. 설치한 MySQL은 DBeaver라는 프로그램으로 실행시켰다. DBeaver는 MySQL의 편집기라고 생각하면 된다.
MySQL에서는 root계정이 존재하는데 이건 모든 권한이 있는 관리자 계정이기에 이 계정으로 바로 편집하는 것은 추천되지 않고, user계정을 만들어서 편집하는 것을 추천한다.
MySQL에는 크게 3개의 언어가 있다
DDL(Data Definition Language)
DCL(Data Control Language)
DML(Data Manipulation Language)
DCL은 관리자가 하는 영역으로 데이터의 보안, 무결성, 회복 등을 제어하는 구문이다. DDL은 데이터의 테이블을 정의 수정 삭제하는 부분이다. DML은 테이블의 데이터를 삽입, 조회, 수정, 삭제하는 구문으로 가장 많이 사용하게 될 부분이다.
auto_increment가 있다면 자동으로 값이 증가하며 넣어지기 때문에 입력을 주면 안된다. 자동으로 index가 먹어진다고 생각하면 된다.
쿼리문에서 조건을 만들때, 같은 지를 비교하는 = 연산이 가장 빠르므로 먼저 쓰는 것이 좋다
간단한 예제 코드
# Shipped, Resolved, Cancelled인 경우이면서
# 주문수가 5개 이상인 경우에서
# 주문별(orderNumber) 총 금액이 큰 city 순서로 정렬하자!!
SELECT
c.city,
o.orderNumber,
SUM(od.quantityOrdered * od.priceEach) AS totalAmount
FROM
orders o
JOIN
orderdetails od ON o.orderNumber = od.orderNumber
JOIN
customers c ON o.customerNumber = c.customerNumber
WHERE
o.status IN ('Shipped', 'Resolved', 'Cancelled')
AND od.quantityOrdered >= 5
GROUP BY
c.city, o.orderNumber
ORDER BY
totalAmount DESC, c.city;
같은 코드인데 다중 쿼리문을 사용한 경우이다.
# Shipped, Resolved, Cancelled인 경우이면서
# 주문수가 5개 이상인 경우에서
# 주문별(orderNumber) 총 금액이 큰 city 순서로 정렬하자!!
select
t1.city
, t3.order_sum
from customers t1,
(
select
orderNumber
, customerNumber
from orders
where 1=1
# Shipped, Resolved, Cancelled인 경우이면서
and status in ('Shipped', 'Resolved', 'Cancelled')
) t2,
(
select
orderNumber
, count(orderLineNumber) as order_cnt
# 주문별(orderNumber) 총 금액이
, sum(quantityOrdered * priceEach) as order_sum
from orderdetails
where 1=1
group by orderNumber
# 주문수가 5개 이상인 경우에서
HAVING order_cnt >= 5
) t3
where 1=1
and t1.customerNumber = t2.customerNumber
and t2.orderNumber = t3.orderNumber
# 총 금액이 큰 city 순서로 정렬하자
order by t3.order_sum desc
;
출처: https://inpa.tistory.com/entry/DB-📚-데이터-모델링-1N-관계-📈-ERD-다이어그램#erd_entity_relationship_diagram_그리기 [Inpa Dev 👨💻:티스토리]