패스트캠퍼스 챌린지 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)
);

참조 무결성

참조하고 있는 테이블에 변경사항이 생길 때, 테이블의 무결성을 어떻게 지킬 것인가?

부서 테이블에서 (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
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

좋은 웹페이지 즐겨찾기