핵심 정리

테이블 설계는 구조, 타입, 규칙, 운영 비용을 한 번에 결정합니다.

CREATE TABLE 한 문장은 단순한 생성 명령이 아니라 앞으로 저장될 값의 모양, 검증 방식, 변경 난이도까지 함께 고정하는 설계 문서입니다.

1. 구조

DDL로 뼈대를 만든다

CREATE, ALTER, DROP, TRUNCATE는 데이터가 아니라 구조 자체를 다룹니다.

CREATE ALTER DROP TRUNCATE
2. 저장

데이터 타입으로 값의 경계를 정한다

정수, 금액, 문자열, 날짜/시간은 정확도와 저장 공간을 함께 결정합니다.

NUMBER DECIMAL VARCHAR DATE
3. 규칙

제약 조건으로 잘못된 값을 막는다

PK, FK, NOT NULL, CHECK는 앱 실수와 중복 데이터를 DB 단계에서 줄입니다.

PRIMARY KEY FOREIGN KEY CHECK
4. 운영

변경 명령은 서비스 영향을 본다

ALTER, DROP, TRUNCATE는 DBMS별 잠금과 트랜잭션 동작을 확인하고 실행합니다.

LOCK COMMIT ROLLBACK
5. 파생

임시/복사/자동 ID를 목적에 맞춘다

임시 테이블, CTAS, 시퀀스는 처리 흐름을 빠르게 만들지만 제약 복사는 따로 봅니다.

TEMP CTAS IDENTITY
실습 스키마

쇼핑몰 예제는 관계와 시점 보존을 보여줍니다.

주문은 회원, 주문 상세, 상품으로 나뉘고, 주문 당시 단가는 order_items.unit_price에 남겨 가격 변경 영향을 막습니다.

users 1:N orders

한 회원은 여러 주문을 만들 수 있고, 주문은 반드시 한 회원을 참조합니다.

orders 1:N order_items

한 주문은 여러 상품 라인을 가지며, 주문 삭제 시 상세도 함께 정리됩니다.

products 1:N order_items

한 상품은 여러 주문 상세에서 참조되고, 상세에는 주문 당시 단가가 남습니다.

무결성 장치

UNIQUE CHECK ON DELETE CASCADE 자동 ID 발급

최종 이해

좋은 테이블 설계는 나중에 바꾸기 쉬운 모양이 아니라, 처음부터 잘못 저장되기 어려운 모양을 만드는 일입니다.