DBMS 수업정리

DBMS(6)-제약조건에 대한 설정

IT 참다랑어 2020. 9. 17. 16:12

제약조건  : 데이터의 무결성을 지키기 위해 제한된 조건을 의미한다. 중복을 허용하지 않거나, NULL 값을 허용하지 않거나 등의 데이터를 입력받는 것에 있어 실행되는 검사 규칙을 의미한다. 

 

제약조건의 종류

  • PRIMARY KEY : 중복 X, NULL X.   

  • UNIQUE KEY : 중복 x, NULL o, 

  • FOREIGN KEY : 중복 o, 타 자료를 참조(references)하여 사용하는 key. 예를 들어 학생정보 테이블에 수강 정보가 같이 들어있다면 여러 과목을 수강할 때 학생정보를 기본키로 사용할 수 없다(학생 정보가 중복으로 들어가기 때문). 이럴 때는 수강 정보 테이블을 따로 두어 중복을 허용할 수 있다.)

  • NOT NULL : Null을 허용하지 않음

  • Default

  • CHECK

 

PRIMARY KEY(기본키) 

  • 중복과 Null값을 허용하지 않는 제약조건이다.

  • 회원가입 아이디, 닉네임, 주민등록번호, 학번 등 다양한 곳에 이용된다.

  • 다음과 같은 방법을 통해서 학번을 PRIMARY KEY 로 가지는 Student 테이블을 만들 수 있다.

create table Student(

ID int PRIMARY KEY,

Name varchar(10),

Major varchar(20),

Grade int);

  • 중복을 허용하지 않기 때문에 만약 이미 존재하는 ID를 가진 자료를 입력하면 오류가 발생할 것이다.

Insert into Student(ID, Name, Major, Grade) Values(20180001, ‘Tom’, ‘Mathematics’, 3);

Insert into Student(ID, Name, Major, Grade) Values(20180001, ‘Jerry’, ‘English’, 3);

-> ERROR 1062 (23000): Duplicate entry '20180001' for key 'student.PRIMARY' //중복 비허용 에러

 

FOREIGN KEY(외래키) 

  • 말 그대로 다른 테이블의 기본키를 참조하는 열을 말하며, 외부의 자료를 가져온다고 하여 외래키, 참조키라고 이야기한다.

  • 원본파일에 대한 보호, 정보에 대한 관계 파악에 대한 편리성으로 사용하나 실제로 forenign key를 사용함에 있어서 자료 편집등에 불편함이 있어 잘 사용하지 않는다. 

  • 수강 정보, 주문 정보 등 한 사람이 여러개의 정보를 가지고 있을 경우에는 학번이나 ID는 중복을 할 수 없으니 처리할 수 없는 경우가 생긴다. 이럴 경우 학생정보테이블에서 수강정보테이블을 새로 만들어 관리하거나, 회원 정보테이블에서 주문정보테이블을 만들어 관리하는 등의 관리가 필요한데, 이럴 때 외래키를 사용하기로 한다.

  • 외래키를 사용하는 테이블의 생성은 다음과 같다.

create table univ_camp(

CampName varchar(20),

CampID int,

FOREIGN KEY(CampID) references Student(ID),

Name varchar(20),

Major varchar(20),

Grade int);

 

  • 외래키의 입력은 다음과 같이 사용할 수 있다.

Insert into univ_camp(CampName varchar(20), CampID, Name, Major, Grade) Values(‘IT취업 캠프’, 2018001, ‘Tom’, ‘Mathematics’, 3);

  • 다만 외래키는 참조하는 대상인 기본키에 있는 대상만을 입력할 수 있다. 예를 들어 

Insert into univ_camp(CampName, CampID, Name, Major, Grade) 

Values('IT취업 캠프', 20180010, 'Tom', 'Mathematics', 3);

이런 입력을 했다면 에러가 발생한다.

그 이유는 20180010이라는 학번은 Student의 ID에 존재하지 않는 학번이기 때문이다.

  • 또한 중복을 허용하기 때문에 같은 자료에 대한 정보를 여러번 입력할 수도 있다.

 

'DBMS 수업정리' 카테고리의 다른 글

DBMS(5)-ALTER 사용법  (0) 2020.09.16
DBMS(4)-단순한 자료조회연습3  (0) 2020.09.14
DBMS(3)-단순한 자료조회연습2  (0) 2020.09.14
DBMS(2)-단순한 자료조회연습  (0) 2020.09.14
DBMS(1)-CRUD 연습  (0) 2020.09.13