JongTachi의 개발 블로그

Multiple Primary Key (다중 PK) 본문

DB

Multiple Primary Key (다중 PK)

JongTachi 2023. 3. 15. 17:44
728x90
반응형

요번에 데이터 이관 작업을 하면서 매핑 정의서를 작성하는데 한 테이블에 2개의 PK가 있더라구요. 왜 2개인지 한번 조사해보았는데요. 한번 살펴봅시다!

 

일단 2개 이상의 pk를 설정 하는 경우를 확인해봅시다. 

1. what is Multiple Primary Key?

개발을 하다보면 PK(Primary Key)를 한 개만 가지고 진행할 때도 있지만, 상황에 따라서는 여러 Key가 필요할 수도 있습니다. 이 상황에서 PK를 여러개 설정해야 하는데요. 간단히 예시를 들어보겠습니다.

 

player_team player_id player_name player_goal_cnt
PSG 0001 Messi 20
PSG 0120 Neymar 14
Man city 0541 Foden 8

해당 테이블이 있다고 칩시다. 처음에 pk를 player_team으로 지정한다면, player_id가 달라도 1개의 행만 입력되게 됩니다. 추가로 입력하고 싶어도 에러가나는 것이죠. 이런 상황에서 사용하는 것이 바로 '다중 PK'입니다. player_team과 player_id 이 2개를 pk로 잡으면 두개를 합친 key는 유니크하게 중복되어 입력이 될 것입니다. (정말 간단한 예시입니다.....)

 

2. 다중 PK 설정하기 

다중 PK를 설정하는 방법은 아주 간단합니다.

CREATE TABLE idv_stocks(
	player_team VARCHAR(50),
	player_id VARCHAR(10),
    player_name VARCHAR(30),
	player_goal_cnt int,
	PRIMARY key (player_team, player_id)
);

 

3. pk가 하나 있는 상태에서 추가하고 싶은 경우 

이럴 경우에는 PK인 컬럼에서 PK를 제거 하신 후 원하는 다중 컬럼을 PK로 설정해야합니다.

예를들어 player_team 컬럼에 PK가 설정되어있다면 먼저 PK를 제거해주셔야 합니다.

 

1) pk제거 (테이블의 이름은 SOCCER라고 가정하겠습니다.)

ALTER TABLE soccer DROP PRIMARY KEY;

 

2) 다시 pk 추가 

ALTER TABLE soccer ADD PRIMARY KEY (player_team, player_id);
728x90
반응형