[DB] 제약조건(constraints)

박정현·2023년 10월 26일
0

💽 데이터베이스

목록 보기
7/11
post-thumbnail

1. 제약조건이란?

제약조건은 테이블에 입력되는 데이터가 사용자가 원하는 조건을 만족하는 데이터만 입력되는 것을 보장하는 것을 말한다.

제약조건(constraint)이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미한다.

이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 컬럼을 추가할 때도 설정할 수 있다.

Oracle SQL Developer에서 주로 쓰이는 제약조건의 종류와 그 특성을 요약하면 다음과 같다.

2. 무결성 제약조건이란?

관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련한 무결성 제약조건(Integrity constraint)입니다. 무결성은 데이터에 결함이 없는 상태, 즉 데이터를 정확하고 유효하게 유지하는 것입니다.

무결성 제약조건의 주요 목적은 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것입니다. 그래서 이를 위해 필요한 세부 규칙도 정의하고 있습니다. 데이트베이스가 삽입, 삭제, 수정, 연산으로 상태가 변하더라도 무결성 제약조건은 반드시 지켜져야 합니다.

3. 무결성 제약조건 종류

1) 개체 무결성 : 기본키는 null 값이 될 수 없음

개체 무결성 제약조건은 기본키를 구성하는 모든 속성은 널 값을 가지면 안된다는 규칙입니다. 관계 데이터 모델에서는 릴레이션에 포함되는 튜플들을 유일하게 구별해주고 각 튜플에 쉽게 접근할 수 있도록 릴레이션마다 기본키를 정의하는 기본키를 구성하는 속성 전체나 일부가 널 값이 되면 튜플의 유일성을 판단할 수 없기 때문에 본래의 목적을 상실하게 됩니다.

2) 참조 무결성 : 외래키는 참조할 수 없는 값을 가질 수 없음

참조 무결성 제약조건은 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙입니다. 외래키는 다른 릴레이션의 기본키를 참조하는 속성이고 릴레이션 간의 관계를 표현하는 역할을 합니다. 그런데 외래키가 자신이 참조하는 릴레이션의 기본키와 상관없는 값을 가지게 되면 두 릴레이션을 연관시킬 수 없으므로 외래키 본래의 의미가 없어집니다.

3) 도메인 무결성 : 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 함

도메인 무결성은 데이터 베이스에 삽입되는 데이터들에 제약조건을 의미합니다. 각각의 속성은 숫자, 문자 등의 도메인을 가지면 해당 도메인에 맞는 데이터를 삽입해야 합니다. 그 뿐만 아니라 삽입되는 데이터를 제한하거나, 삽입되지 않을 경우 기본값, null 제한 등의 기능을 제공합니다. 예를 들어 "성"에 대한 속성의 경우 입력되는 데이터를 "남", "여"로 제한하여 그 외의 데이터가 삽입되는 경우를 제한할 수 있습니다.

4) 키 무결성 : 릴레이션에는 최소한 하나의 키가 존재해야 함

5) null 무결성 : 특정 속성은 null 값을 가질 수 없음

null 무결성은 특정 속성값에는 null 값을 가질 수 없다는 규칙입니다. 기본적으로 속성값으로 null 값을 가질 수 있는데 만약 "유저 아이디"처럼 중요한 정보에는 스키마를 정의할 때 해당 속성을 null 데이터가 올 수 없음을 미리 정의할 수 있습니다.

6. 고유 무결성 : 특정 속성값은 서로 달라야 함

고유 무결성은 특정 속성에 삽입되는 데이터는 고유한 값을 가져야 한다는 규칙입니다. 이말은 즉, 각 튜플에서 하나의 속성값은 중복된 값이 없는 각각 서로 다른 값을 가져야 한다는 의미입니다. 예를 들어 이름, 나이, 사는 곳과 같은 속성은 튜프들이 서로 같은 값을 가질 수 있지만 고객 아이디의 경우 각 튜플을 서로 다른 값을 가져야 합니다.


Reference

이 글은 백연호의 개발블로그 https://kosaf04pyh.tistory.com/202 를 참고하여 작성된 포스팅입니다.

profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글