공통 코드는 왜 필요한가?

DB를 설계하다 보면 비슷한 종류의 데이터가 여러 테이블에 걸쳐 반복되는 상황을 볼 수 있다.

실제 사례로 보자.

CREATE DATABASE IF NOT EXISTS my_shop4;
USE my_shop4;

실습용 DB를 만든다.

image.png

문제상황 - 하드코딩된 상태값

쇼핑몰을 운영한다고 해보자. 주문 테이블에는 주문 상태가 필요하다. 주문 상태를 표현하는 가장 단순한 방법은 상태값을 문자열로 직접 저장하는 것이다.

테이블을 하나 예시로 만든다.

DROP TABLE IF EXISTS orders;

CREATE TABLE orders (
	order_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    member_id BIGINT NOT NULL,
    order_status VARCHAR(20) NOT NULL,
    total_amount INT NOT NULL,
    created_at DATETIME NOT NULL
);

주문 데이터를 입력해보자.

INSERT INTO orders (member_id, order_status, total_amount, created_at) VALUES
(1, '주문완료', 50000, '2026-01-15 10:30:00'),
(2, '결제완료', 75000, '2026-01-15 11:00:00'),
(3, '배송중', 30000, '2026-01-15 12:00:00'),
(1, '배송완료', 120000, '2026-01-14 09:00:00'),
(4, '주문취소', 45000, '2026-01-13 15:00:00');

조회해보면 이런 데이터가 나온다.

image.png

이게 뭐가 문제인걸까?