CONSTRAINT(제약조건)

AnHyunDong·2022년 9월 2일
0

Database

목록 보기
3/6

CONSTRAINT(제약조건)

  • 데이터 무결성을 유지하기 위한 데이터베이스의 보편적인 방법
  • 테이블의 특정 칼럼에 설정하는 제약

제약 조건의 종류

구분설명
PRIMARY KEY(기본키)테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키
하나의 테이블에 하나의 기본키 제약만 정의 가능
기본키 제약을 정의시 DBMS는 자동으로 UNIQUE 인덱스를 생성하며 기본키를 구성하는 칼럼에는 NULL 입력 불가능
기본키 제약 = 고유키 제약 & NOT NULL 제약
UNIQUE KEY(고유키)테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의
NULL은 고유키 제약의 대상이 아니므로 NULL 값을 가진 행이 여러 개 있더라도 고유키 제약 위반이 되지 않음
NOT NULLNULL 값의 입력을 금지
디폴트 상태에서 모든 칼럼에서 NULL을 허가하고 있지만 이 제약을 지정함으로써 해당 칼럼은 입력 필수
CHECK입력할 수 있는 값의 범위 제한
CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식으로 지정
FOREIGN KEY(외래키)관계형 DB에서 테이블 간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성
외래키 지정시 참조 무결성 제약 옵션을 선택할 수 있음
  • NULL
    • NULL(ASCII 코드 00번)은 공백(BLANK, ASCII 코드 32번)이나 숫자 0(ZERO, ASCII 48)과는 전혀 다른 값이며, 조건에 맞는 데이터가 없을 때의 공집합과도 다름
    • NULL은 정의되지 않은 미지의 값이거나 현재 데이터를 입력하지 못하는 경우를 의미
  • DEFAULT
    • 데이터 입력시 칼럼의 값이 지정되어 있지 않은 경우 기본값(DEFAULT)를 사전에 설정 가능
    • 데이터 입력시 명시된 값을 지정하지 않는 경우에 NULL값이 입력되고, DEFAULT 값의 정의했다면 해당 칼럼에 NULL 값이 입력되지 않고 사전에 정의된 기본 값이 자동으로 입력

예제

테이블명 : TEAM 
테이블 설명 : K-리그 선수들의 소속팀에 대한 정보를 가지고 있는 테이블 
칼럼명 : TEAM_ID (팀 고유 ID) 문자 고정 자릿수 3자리,
        REGION_NAME (연고지 명) 문자 가변 자릿수 8자리,
        TEAM_NAME (한글 팀 명) 문자 가변 자릿수 40자리,
        E-TEAM_NAME (영문 팀 명) 문자 가변 자릿수 50자리 ,
        ORIG_YYYY (창단년도) 문자 고정 자릿수 4자리,
        STADIUM_ID (구장 고유 ID) 문자 고정 자릿수 3자리,
        ZIP_CODE1 (우편번호 앞 3자리) 문자 고정 자릿수 3자리,
        ZIP_CODE2 (우편번호 뒷 3자리) 문자 고정 자릿수 3자리,
        ADDRESS (주소) 문자 가변 자릿수 80자리,
        DDD (지역번호) 문자 가변 자릿수 3자리,
        TEL (전화번호) 문자 가변 자릿수 10자리,
        FAX (팩스번호) 문자 가변 자릿수 10자리,
        HOMEPAGE (홈페이지) 문자 가변 자릿수 50자리,
        OWNER (구단주) 문자 가변 자릿수 10자리,
제약조건 : 기본 키(PRIMARY KEY) → TEAM_ID 
        (제약조건명은 TEAM_ID_PK) NOT NULL → REGION_NAME, TEAM_NAME, STADIUM_ID 
        (제약조건명은 미적용) 
  • ORACLE
CREATE TABLE TEAM (
TEAM_ID CHAR(3) NOT NULL,
REGION_NAME VARCHAR2(8) NOT NULL,
TEAM_NAME VARCHAR2(40) NOT NULL,
E-TEAM_NAME VARCHAR2(50),
ORIG_YYYY CHAR(4),
STADIUM_ID CHAR(3),
ZIP_CODE1 CHAR(3),
ZIP_CODE2 CHAR(3),
ADDRESS VARCHAR2(80),
DDD VARCHAR2(3),
TEL VARCHAR2(10),
FAX VARCHAR2(10),
HOMEPAGE VARCHAR2(50),
OWNER VARCHAR2(10),
CONSTRAINT TEAM_PK PRIMARY KEY (TEAM_ID),
CONSTRAINT TEAM_FK FOREIGN KEY (STADIUM_ID) REFERENCES STADIUM(STADIUM_ID)
);
  • SQL Server
CREATE TABLE TEAM ( 
TEAM_ID CHAR(3) NOT NULL,
REGION_NAME VARCHAR(8) NOT NULL,
TEAM_NAME VARCHAR(40) NOT NULL,
E_TEAM_NAME VARCHAR(50),
ORIG_YYYY CHAR(4),
STADIUM_ID CHAR(3) NOT NULL,
ZIP_CODE1 CHAR(3),
ZIP_CODE2 CHAR(3),
ADDRESS VARCHAR(80),
DDD VARCHAR(3),
TEL VARCHAR(10),
FAX VARCHAR(10),
HOMEPAGE VARCHAR(50),
OWNER VARCHAR(10),
CONSTRAINT TEAM_PK PRIMARY KEY (TEAM_ID),
CONSTRAINT TEAM_FK FOREIGN KEY (STADIUM_ID) REFERENCES STADIUM(STADIUM_ID) 
); 
profile
사진은 남아 추억이 메모는 남아 스펙이 된다

0개의 댓글