본문 바로가기
DATABASE

mysql 다중 기본키(Multi PK) 설정

by YoonJong 2023. 1. 6.
728x90

Primary Key 를 1개가 아닌 다중 PK 를 사용해야할 경우가 있다.

 

여러가지 예제가 있을 수 있다. 아래의 자동차 예제가 아닌, 학생과 수강과목에 대한 예시로도 들수 있다.한 학생이 A 과목을 듣는데 동시에 A 과목을 들을 수는 없다. 하지만 조건( "F 학점을 받아 재수강을 해야해서, 수강 날짜가 다르면 insert 가 가능하다" ) 에 따라서 A 과목을 추가로 수강해야할 수 있다. 

 

가령 아래와 같은 상황이라고 해보고 예제로 알아보자.

 

- 자동차구매고객 테이블에는 같은 고객이 같은 자동차를 같은 시간에 구매하는 데이터가 들어올 수 없다.

 

제약조건 중 중복되지 않아야 하는 값은 고객, 자동차, 시간 이다.

이럴 때는 컬럼 마다 PK 를 주어 제약조건을 만족 시킬 수 있다.

 

PK 가 설정되지 않았을 때 예제를 들어보면, 아래와 같이 중복된 데이터가 들어가는 것을 확인할 수 있다.

 

제약조건을 만족시키기 위해 PK 값을 cusotmerId, carId , 구매일자에 적용시켜본다.

이전에 데이터를 미리 지워주어야한다. 아니면 중복된 데이터가 이미 들어가 있기 때문에 적용이 되지 않는다.

 

 

변경 후, 데이터를 하나 추가해보고, 동일한 cusotmerId , carId, date 는 insert 오류가 나는것을 볼 수 있다.

 

동일한 데이터가 아닌 3가지 조건 중 하나라도 다른 값이 들어가면 정상적으로 insert 가 된다.

728x90

댓글