패스트캠퍼스 챌린지 27일차
데이터베이스
무결성 제약 조건
not null
- 컬럼 값으로 null을 허용하지 않을 때 지정
name char(10) NOT NULL
⇒ 이름으로 사이즈 10 이내, 필수 입력사항
primary key
- 테이블에서 튜플을 찾는 기본 키
- unique + not null (유일한 값이며 반드시 있어야 함)
- 만약 같은 값이 이미 테이블에 존재하거나 null을 입력하려고 하면 Insert 자체가 되지 않음
unique
- primary key와 같이 튜플에 유일성을 체크하는 대체키(candidate key)를 지정한다.
- null은 허용
check
- CREATE TABLE 시에 특정 컬럼에 check 키워드를 사용해 조건에 맞는 레코드만 받을 수 있도록 함.
CREATE TABLE t1 (
CHECK (c1 <> c2), # c1 != c2
c1 INT CHECK (c1 > 10),
c2 INT CONSTRAINT c2_positive CHECK (c2 > 0),
c3 INT CHECK (c3 < 100),
CONSTRAINT c1_nonzero CHECK (c1 <> 0), # c1 != 0
CHECK (c1 > c3)
);
참조 무결성
name char(10) NOT NULL
⇒ 이름으로 사이즈 10 이내, 필수 입력사항CREATE TABLE t1 (
CHECK (c1 <> c2), # c1 != c2
c1 INT CHECK (c1 > 10),
c2 INT CONSTRAINT c2_positive CHECK (c2 > 0),
c3 INT CHECK (c3 < 100),
CONSTRAINT c1_nonzero CHECK (c1 <> 0), # c1 != 0
CHECK (c1 > c3)
);
참조하고 있는 테이블에 변경사항이 생길 때, 테이블의 무결성을 어떻게 지킬 것인가?
부서 테이블에서 (3, 홍보부) 테이블이 변경(update, delete) 될 때
DELETE
ON DELETE NO ACTION(default)
- 3을 참조하고 있는 튜플이 존재하기 때문에 (사원테이블 (1001, 정소화 , 3)) 삭제 불가
ON DELETE CASCADE
- 사원테이블 (1001, 정소화, 3)을 함께 삭제
ON DELETE SET NULL
- 정소화 사원의 튜플 소속부서를 NULL로 변경
- (1001, 정소화, 3) → (1001, 정소화, null)
ON DELETE SET DEFAULT
- 정소화 사원의 튜플 소속부서를 default 값으로 변경, 만약 default 값이 없을 시 에러 발생
- (1001, 정소화, 3) → (1001, 정소화, default value)
UPDATE
ON UPDATE NO ACTION
- 튜플 변경 불가
ON UPDATE CASCADE
- 외래키 값을 같이 변경
https://bit.ly/3FVdhDa
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
Author And Source
이 문제에 관하여(패스트캠퍼스 챌린지 27일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinny/패스트캠퍼스-챌린지-27일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)