2026/06/08 3

Ch08. 데이터 무결성 - Check 제약 조건

데이터의 "내용" 자체에 대한 규칙은 어떻게 적용할까?상품의 가격(price)이나 재고 수량(stock_quantity)은 절대 음수일 수 없다.할인율(discount_rate)은 "0%"에서 "100%" 사이의 값이어야 한다.`NOT NULL` 제약 조건은 가격에 `-5000` 이라는 값이 들어오는 것을 막지 못한다. "UNIQUE" 제약 조건은 할인율이 "200"이 되는 것을 막지 못한다. 이런 값들은 형식적으로는 유효하지만, 비즈니스 논리상으로는 명백한 "쓰레기 데이터"다.이처럼 특정 컬럼에 들어갈 수 있는 값의 범위나 조건을 직접 지정하여, 한층 더 강화된 비즈니스 규칙을 적용하고 싶을때 사용하는 것이 바로 CHECK 제약 조건이다. CHECK 제약 조건의 역할과 문법"CHECK" 제약 조건은 ..

Ch08. 데이터 무결성 - 외래 키 제약 조건

참조 무결성이란, 두 테이블의 관계가 항상 유효하고 일관된 상태를 유지해야 한다는 원칙이다. 예를 들어, orders 테이블의 user_id 컬럼은 반드시 users 테이블에 실제로 존재하는 "user_id" 값만을 참조해야 한다. 만약 존재하지도 않는 유령 회원의 주문이 있다면, 이 관계는 깨진 것이다. 이러한 테이블 간의 관계 무결성을 강제하는 가장 강력한 제약 조건이 바로 외래 키(Foreign Key)다. 외래 키(FK)의 역할: 유령 데이터를 막아라자식 테이블(orders)에 INSERT, UPDATE 할 때: 부모 테이블(users)에 존재하지 않는 "user_id" 값을 자식 테이블(orders)의 "user_id" 컬럼에 넣으려는 시도를 막는다. (유령 주문 생성 방지)부모 테이블(user..

Ch08. 데이터 무결성 - 기본 키 제약 조건

NOT NULL: NULL 값 방지역할: 해당 컬럼에 NULL 값(값이 없는 상태)이 저장되는 것을 허용하지 않는다.반드시 필요한 정보가 누락되는 것을 막는다.문법 예시: "email VARCHAR(255) NOT NULL" "회원 가입 시 필수 정보인 이메일을 실수로 "NULL"로 입력하려고 시도해 보자.insert into users(name, email) values('냐옹이', null); insert into users(name, email) values('냐옹이', null) Error Code: 1048. Column 'email' cannot be null 0.00076 sec데이터베이스는 email 컬럼은 NULL일 수 없다는 명확한 에러 메시지를 반환하며, 이 INSERT 명령을 거부한..