티스토리 뷰

DB

9. 데이터 무결성과 제약 조건

prprme 2020. 11. 23. 01:22

데이터 무결성과 제약 조건

데이터 무결성(Data Integrity)

- 관리하는 데이터 베이스에 부적절한 데이터가 유입되어 결점이 생기지 않도록 해야 하며, 이를 위한 기본 규칙을 데이터 무결성이라고 함.

- 종류

유형 설명
개체 무결성 (Entity Integrity) Primary Key로 선택된 열은 Unique 하고 Not null 해야 함
참조 무결성 (Reference Integrity) Primary Key와 Foreign Key의 관계에서 Foreign Key로 부터 참조되는 행은 삭제될 수 없으며 변경될 수 없음
영역 무결성 (Domain Integrity) Data Type, 범위, 기본값에 관한 제한
비즈니스 무결성 (Business Integrity) 사용자의 업무 규칙에 따른 비즈니스적인 제약 조건

 

참조 무결성 예시

ko.wikipedia.org/wiki/%EC%B0%B8%EC%A1%B0_%EB%AC%B4%EA%B2%B0%EC%84%B1

- 아티스트 테이블의 artist_id 와 앨범 테이블의 artist_id가 primary / foreign 관계

- 앨범 테이블의 두번째 행과 관계 변수를 갖는 아티스트 테이블의 행(artist_id : 4, artist_name : Aerosmith)이 삭제되면서 참조 무결성이 깨지고 있음

 

영역 무결성 예시

- 나이 Column에 음수값이 입력

- 성별 Column에 정의되지 않은 값이 입력

 

제약 조건(Constraint)

- 데이터 무결성을 지키기 위해, 테이블을 설계할 때 규칙(제약)을 정해놓는 방법

- 종류

이름

설명

기본 키 (Primary Key)

UNIQUE + NOT NULL 만족, 테이블의 각 행의 식별자

외래 키 (Foreign Key)

부모 테이블의 참조 열 값을 반드시 참조해야 하며, 참조되는 열은 UNIQUE한 값 or PRIMARY KEY

고유값 (Unique)

UNIQUE한 값 (NULL허용)

NOT NULL

NULL 불허

범위 (CHECK)

범위나 조건에 지정된 값만 허용

기본값 (DEFAULT)

기본값 설정

 

기본 키 설정

1. CREATE TABLE 테이블이름

(
    필드이름 필드타입 PRIMARY KEY,
    ...
)

2. CREATE TABLE 테이블이름

(
    필드이름 필드타입,
    ...,

    [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
)

- 기본 키 설정의 두가지 방법

http://www.tcpschool.com/mysql/mysql_constraint_primaryKey

 

외래 키 설정

CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    [CONSTRAINT 제약조건이름]
    FOREIGN KEY (필드이름)
    REFERENCES 테이블이름 (필드이름)
)

- Foreign Key로 설정할 칼럼명과 참조할 테이블과 해당 테이블의 칼럼명을 입력

http://www.tcpschool.com/mysql/mysql_constraint_foreignKey

 

고유값 설정

1. CREATE TABLE 테이블이름
(
    필드명 필드타입 UNIQUE,
    ...
)

2. CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    [CONSTRAINT 제약조건이름] UNIQUE (필드이름)
)
http://www.tcpschool.com/mysql/mysql_constraint_unique

 

NOT NULL 설정

CREATE TABLE 테이블이름
(
    필드이름 필드타입 NOT NULL,
    ...
)
http://www.tcpschool.com/mysql/mysql_constraint_notNull

 

범위 설정

CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    CHECK (필드이름과 조건)
)

- 예시

   = 나이가 7세 이상, CHECK(age >= 7)

   = 성별값은 'M' or 'F'로 구분, CHECK(gender IN ('M', 'F'))

 

기본값 설정

CREATE TABLE 테이블이름
(
    필드이름 필드타입 DEFAULT 기본값,
    ...
)
http://www.tcpschool.com/mysql/mysql_constraint_default

 

'DB' 카테고리의 다른 글

11. DDL  (0) 2020.11.29
10. 트랜잭션  (0) 2020.11.24
8. DML (Data Manipulation Language)  (0) 2020.11.23
7. 서브 쿼리  (0) 2020.11.18
6. 집합 연산자  (0) 2020.11.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함