<aside> 📖

학습 목표

1. 제약조건 검증 실습

1-1. 흔히 발생하는 제약조건 오류 사례

1-1-1. ✅ 외래키 누락으로 인한 데이터 정합성 깨짐

-- FK 없는 경우: 에러 없이 유령 데이터 삽입
CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    member_id INT,
    order_date TIMESTAMP DEFAULT now()
);

INSERT INTO orders (member_id, order_date)
VALUES (9999, now()); -- members에 9999 없음

문제점:

1-1-2. ✅ 잘못된 CASCADE 설정으로 인한 의도치 않은 삭제

CREATE TABLE members (
    member_id SERIAL PRIMARY KEY
);

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    member_id INT REFERENCES members(member_id) ON DELETE CASCADE
);

-- 주문이 있는 회원 삭제 시
DELETE FROM members WHERE member_id = 1;
-- 연결된 orders 자동 삭제됨 (예상하지 못한 데이터 손실)

문제점:

1-1-3. ✅ NULL 제약조건 오설정

-- NOT NULL 누락 예시
CREATE TABLE members (
    name VARCHAR(100), -- NULL 허용
    email VARCHAR(100)
);

INSERT INTO members (name, email)
VALUES (NULL, '[email protected]'); -- 허용됨

문제점: