728x90
Primary Key 를 1개가 아닌 다중 PK 를 사용해야할 경우가 있다.
여러가지 예제가 있을 수 있다. 아래의 자동차 예제가 아닌, 학생과 수강과목에 대한 예시로도 들수 있다.한 학생이 A 과목을 듣는데 동시에 A 과목을 들을 수는 없다. 하지만 조건( "F 학점을 받아 재수강을 해야해서, 수강 날짜가 다르면 insert 가 가능하다" ) 에 따라서 A 과목을 추가로 수강해야할 수 있다.
가령 아래와 같은 상황이라고 해보고 예제로 알아보자.
- 자동차구매고객 테이블에는 같은 고객이 같은 자동차를 같은 시간에 구매하는 데이터가 들어올 수 없다.
제약조건 중 중복되지 않아야 하는 값은 고객, 자동차, 시간 이다.
이럴 때는 컬럼 마다 PK 를 주어 제약조건을 만족 시킬 수 있다.
PK 가 설정되지 않았을 때 예제를 들어보면, 아래와 같이 중복된 데이터가 들어가는 것을 확인할 수 있다.
제약조건을 만족시키기 위해 PK 값을 cusotmerId, carId , 구매일자에 적용시켜본다.
이전에 데이터를 미리 지워주어야한다. 아니면 중복된 데이터가 이미 들어가 있기 때문에 적용이 되지 않는다.
변경 후, 데이터를 하나 추가해보고, 동일한 cusotmerId , carId, date 는 insert 오류가 나는것을 볼 수 있다.
동일한 데이터가 아닌 3가지 조건 중 하나라도 다른 값이 들어가면 정상적으로 insert 가 된다.
728x90
'DATABASE' 카테고리의 다른 글
Centos mysql 비밀번호 재설정 방법 (0) | 2023.01.13 |
---|---|
ec2 linux mysql8 설치하기 (0) | 2023.01.12 |
mysql - case when then end (조건문) (0) | 2023.01.02 |
데이터베이스(DB) 병행 제어 (0) | 2022.11.01 |
데이터베이스(DB) 장애와 회복 (0) | 2022.10.29 |
댓글