2025-08-16 01:44

Tags:SQL

참조

  • 정규화테이블 분리 해놓고 참조가 없으면? 데이터 불일치, 데이터 무결성 파괴
  • 참조 무결성 제약 조건 = 외래키 도입(like 부모-자식 관계)
  • 기본키(PK): 테이블각 행 유일하게 식별 가능. 부모 역할
  • 외래키(FK): 한 테이블의 열이 다른 테이블의 기본 키 참조하는 값
-- 부모 테이블
CREATE TABLE Customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
 
-- 자식 테이블
CREATE TABLE Orders (
    order_id INT PRIMARY KEY,
    book_name VARCHAR(100),
    customer_id INT,
    CONSTRAINT fk_customer -- 제약조건의 이름을 지정 (관리를 위해 권장)
    FOREIGN KEY (customer_id) -- Orders 테이블의 customer_id를 외래 키로 지정
    REFERENCES Customers(customer_id) -- Customers 테이블의 customer_id를 참조
);

ON UPDATE와 ON DELETE 옵션

옵션장점주의점
CASCADE데이터의 완전한 동기화를 보장.의도치 않은 대량의 데이터 삭제가 발생할 수 있어 신중하게 사용해야 함.강력한 종속 관계 (게시글과 댓글)
SET NULL자식 데이터는 보존하면서 연결만 끊음.데이터의 의미가 모호해질 수 있음 (주인 없는 주문). 외래 키 열이 NULL 허용이어야 함.느슨한 관계 (직원과 부서)
RESTRICT데이터 손실을 막는 가장 안전한 방법.데이터를 삭제하려면 반드시 자식 데이터를 먼저 처리해야 하는 번거로움이 있음.대부분. 이후 어플리케이션에서 명시적 처리