본문 바로가기
Database

제약조건 (Constraint)

by oncerun 2021. 4. 26.
반응형

 

제약조건은 사용자가 원하는 조건의 데이터를 유지하기 위한 제약으로 데이터 무결성을 유지하기 위한 데이터베이스의 보편적인 방법으로 테이블의 특정 칼럼에 설정한다.

 

종류 

 

Primary Key : PK로 설정된 칼럼은 행의 유일함을 보장하는 행으로 PK제약조건이 걸리게 되면 자동적으로 UNIQUE 인덱스가 생성된다.  이 제약은 UNIQUE 제약과 NOT NULL을 합친 것이다.

 

Unique Key : 행 데이터를 고유하게 식별하기 위한 제약조건이다. 이 행의 데이터는 중복될 시 데이터가 입력/갱신이 되지 않는다. 대신에 NULL값을 허용한다.

CREATE TABLE board(
 
      id VARCHAR(10) UNIQUE NOT NULL,
 
      nickName VARCHAR(20) CONSTRAINT nickName_uq UNIQUE(nickName),
 
      title VARCHAR(10) NOT NULL,
 
      content VARCHAR(1000),
 
      hashtag VARCHAR(100)
 
      /* CONSTRAINT nickName_uq UNIQUE (id,nickName) */
 
 );

Not Null : NULL값을 금지한다.  이것은 공백이랑 빈 문자열과는 다른 종류로 "아직 정해지지 않은 값"이라는 뜻이 있다.

CREATE TABLE member(
	userID CHAR(8) NOT NULL PRIMARY,
  	name VARCHAR(10)
);

CHECK : TRUE or FLASE로 평가할 수 있는 논리식이 필요하며, 값의 범위를 제한한다.

CREATE TABLE member(
	userID CHAR(8) NOT NULL PRIMARY,
  	name VARCHAR(10),
	birthYear INT CHECK (birthYear >= 1900 AND birthYear <= 2023),
    	CONSTRAINT CK_name CHECK (name IS NOT NULL)
);

 

FOREGIN KEY : 단순히 말해서 참조 무결성 제약조건이다.

CREATE TABLE parentTable(
 
      parentPk NUMBER PRIMARY KEY
 
);
 
 
 CREATE TABLE consTest(
 
       parentPk NUMBER,
 
      pkCol1 CHAR(8),
 
      CONSTRAINT fk_code FOREIGN KEY(parentPk)
         REFERENCES parentTable(parentPk) ON DELETE CASCADE
 
 );

CONSTRAINT [제약조건 명] FOREIGN KEY([컬럼명])

REFERENCES [참조할 테이블 이름]([참조할 칼럼])

[ON DELETE CASCADE | ON DELETE SET NULL]

 

CASCADE는 부모의 데이터의 변경이 자식 테이블에도 영향을 미치는 것을 말합니다. 하지만 실무에서 데이터를 삭제하는 경우는 별로 없습니다. 따라서 CASCADE보다는 삭제의 특징을 나타내는 속성을 하나 정의하고 사용하거나, NULL로 변경되는 경우만 존재합니다.

반응형

'Database' 카테고리의 다른 글

내장 함수(BUILT-IN-FUNCTION) - 문자형  (0) 2021.04.27
연산자  (0) 2021.04.27
짧) 인덱스 특성을 통한 DB 성능 향상  (0) 2021.04.24
반정규화와 성능  (0) 2021.04.24
데이터 모델링 정규화(2)  (0) 2021.04.24

댓글