MySQL 데이터 무결성
MySQL 데이터 무결성
기본 제약 조건
NOT NULL: 컬럼에 NULL 값이 저장되는 것을 허용핮; 않아 필수 정보의 누락을 방지UNIQUE: 해당 컬럼의 모든 값이 테이블 내에서 고유해야 함을 보장하여 중복 데이터가 쌓이는 것을 막음PRIMARY KEY: 테이블의 각 행을 고유하게 식별하는 데표 키로,NOT NULL과UNIQUE제약 조건의 특징을 모두 포함DEFAULT: 특정 컬럼에 값을 명시적으로 입력하지 않았을 경우, 자동으로 설정될 기본 값을 지정
외래 키 제약 조건
- 참조 무결성은 두 테이블 사이의 관계가 항상 유효하고 일관된 상태를 유지해야 한다는 원칙
- 외래 키는 이러한 테이블 간의 관계 무결성을 강제하는 가장 강력한 제약 조건
- 외래 키는 자식 테이블에 존재하지 않는 부모 키 값을 입력하는 것을 막고, 자식 테이블에서 참조하고 있는 부모 데이터를 함부로 삭제하거나 수정하지 못하게 함
ON DELETE/ON UPDATE옵션을 통해 부모 데이터가 변경 될 때 자식 데이터가 어떻게 동작할지 정책을 설정 할 수 있음RESTRICT(기본 값): 자식 행이 있으면 부모 행의 변경/삭제를 막음CASCADE: 부모 행이 변경/삭제 되면, 이를 참조하는 자식 행도 함께 자동 변경/삭제 됨SET NULL: 부모 행이 변경/삭제 되면, 자식 행의 해당 외래 키 컬럼 값을 NULL로 설정
CASCADE옵션은 편리하지만 의도치 않은 대량 데이터 변경을 유발할 수 있으므로, 비즈니스 로직을 명확히 이해하고 신중하게 사용해야 함
CASCADE 추가 방법
1
ALTER TABLE child_table ADD FOREIGN KEY (parent_key) REFERENCES parent_table (parent_key) ON DELETE CASCADE;
CHECK 제약 조건
INSERT/UPDATE시 CHECK 조건식이참(true)이 아니면 DB는 해당 작업을 거부하고 에러를 발생 시킴CHECK제약 조건은 애플리케이션 레벨에서 놓칠 수 있는 데이터 유효성 검사를 DB가 직접 수행하여 데이터 무결성을 강화하는 최후의 수단
정말 필요한 곳이 아니라면 애플리케이션 레벨에서 처리하고 잘 사용하지 않음
참고
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.