데이터 모델링(Data Modeling)은 데이터 베이스의 설계의 중요한 단계로, 데이터를 구조화 하고 조직화하는 과정입니다. 이 과정에서는 현실 세계의 비즈니스 요구사항을 분석하고 이를 데이터베이스의 테이블, 열, 관계 등으로 표현하는 일을 합니다.
엔티티(Entity):
고객(Customer): 쇼핑몰을 이용하는 사람들.
제품(Product): 쇼핑몰에서 판매되는 물품.
주문(Order): 고객이 쇼핑몰에서 구매하는 행위.
장바구니(Cart): 고객이 구매를 위해 담아둔 제품 목록.
속성(Attribute):
고객(Customer): 고객 ID, 이름, 이메일, 전화번호.
제품(Product): 제품 ID, 이름, 가격, 재고 수량.
주문(Order): 주문 ID, 주문 날짜, 배송 상태.
장바구니(Cart): 장바구니 ID, 생성 날짜.
관계(Relationship):
고객은 여러 주문을 할 수 있다. (1:N 관계)
주문은 여러 제품을 포함할 수 있다. (N:M 관계)
고객은 장바구니를 가질 수 있다. (1:1 관계)
장바구니는 여러 제품을 담을 수 있다. (N:M 관계)
Customer (고객 테이블)
customer_id (Primary Key)
name
email
phone_number
Product (제품 테이블)
product_id (Primary Key)
name
price
stock_quantity
Order (주문 테이블)
order_id (Primary Key)
order_date
shipping_status
customer_id (Foreign Key, Customer와 관계)
Cart (장바구니 테이블)
cart_id (Primary Key)
created_date
customer_id (Foreign Key, Customer와 관계)
Order_Product (주문-제품 관계 테이블)
order_id (Foreign Key, Order와 관계)
product_id (Foreign Key, Product와 관계)
quantity
인덱스(Index):
Customer 테이블에서 email에 인덱스를 추가하여 검색 속도를 높임.
Order 테이블에서 order_date에 인덱스를 추가하여 주문 기록을 시간순으로 빠르게 조회할 수 있게 함.
파티셔닝(Partitioning):
Order 테이블을 주문 날짜를 기준으로 파티셔닝하여, 대규모 데이터를 관리하기 쉽게 함.
데이터 타입 최적화:
phone_number를 VARCHAR(15)로 설정하여 전화번호의 길이를 고려함.
price를 DECIMAL(10,2)로 설정하여 소수점을 포함한 가격을 정확하게 표현함.
쉽게말해, 데이터 모델링은 우리가 데이터를 어떻게 구조화할지 계획하고, 이를 구현하는 과정입니다. 이 과정을 통해 데이터를 보다 효율적으로 관리하고 활용할 수 있습니다.