개발 학습일지(TIL)

내배캠 16일차 TIL : DB의 제약조건(constraint)

Veams 2022. 11. 29.

내일배움캠프 Today I Learned

 

 

@ 학습한 내용

미니프로젝트로 팀 및 팀원 소개 웹페이지를 제작할 때 방명록을 제작하면서 몇 가지 수정할 사항이 있었다.

1) 대표적으로 데이터의 ID 고유값에 대한 고민을 하지 않아, (id 값 재사용) 추후 게시글 수정 및 삭제시에 오류가 발생할 우려가 있던 점.(PRIMARY KEY 이슈)

2) 방명록 작성시 사용자가 데이터 값을 입력하지 않아도 글이 작성되는 점.(NOT NULL의 이슈)

 

아직 DB를 본격적으로 배우지 않은 상태여서 무엇이 문제인지 몰랐던 상태라 좀 막막했는데. 위 사항을 개선하기 위하여 검색을 해보니, DB의 테이블을 구성할 때 제약 조건이라는 것이 있다는 것을 알게 되었다.

 

DataBase의 테이블과 제약조건 [MySQL]

데이터를 입력할 떄 옵션으로 사용할 수 있는 문법이다.

제약 조건(constraint)란 데이터가 무결성을 갖출 수 있도록, 사용자로부터 데이터를 입력받을 때 지정하는 검사 규칙이다.

다시 말해, 테이블 내에 원치 않은 자료가 입력되는 것을 방지하기 위해 어떤 규칙을 정하여 데이터의 성격을 규정하는 것이다.

 

MySQL 에서 사용할 수 있는 제약 조건은 다음과 같다.

 

1. NOT NULL 조건

- 컬럼을 필수 필드화하여, 해당 컬럼에 반드시 데이터를 입력해야함

- 이러한 제약 조건은 테이블을 생성할 때나, 추가할 때도 설정할 수 있음

 

2. UNIQUE 조건

- 조건이 적동된 필드는 서로 다른 값을 가져야 한다. 중복된 값을 저장할 수 없어 데이터의 유일성을 보장

- 데이터 미입력 null은 컬럼내 여러번 허용한다.   cf)PRIMARY KEY는 null을 허용하지 않음

- 하나의 테이블에 UNIQUE 조건이 여러 개가 올 수 있다. cf) PRIMARY KEY는 하나만 존재

 

3. DEFAULT 지정

- 해당 필드의 기본값을 설정할 수 있게 해줌

- 레코드 입력 시 해당 필드 값을 전달하지 않으면, 설정된 기본값을 자동으로 저장함


4. PRIMARY KEY 지정

- NOT NULL과 UNIQUE 조건의 특성을 모두 가짐

- 테이블을 대표하는 컬럼에 적용, 테이블에 1번 사용 가능.

- 데이터 미입력, 중복 값 모두를 허용하지 않음

 

5. FOREIGN KEY(외래키) 지정

- 한 테이블을 다른 테이블과 연결하는 역할을 가진다.

- 외래 키가 설정된 테이블에 레코드를 입력할 경우, 의존하는 테이블 내용을 참조하여 레코드가 입력됨.

- 참조되는 테이블의 필드는 반드시 UNIQUE 혹은 PRIMARY KEY가 아니면 생성에 제약이 존재

 

 

내용 참조

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

 

댓글