Multiple Primary Key (다중 PK)

2023. 3. 15. 17:44·DB
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
반응형

'DB' 카테고리의 다른 글

[DB] 테이블 컬럼 조회하기  (0) 2023.07.20
[DB] delete문 사용법 (완전 간단)  (0) 2023.07.20
[DB] SQL(관계형 데이터베이스)과 NosSQL(비관계형 데이터베이스)의 특징과 차이  (0) 2023.06.11
[DB] ORM의 특징과 장단점  (0) 2023.06.07
window에서 mariaDB, MySQL 서버 껐다 켜기  (0) 2023.03.07
'DB' 카테고리의 다른 글
  • [DB] delete문 사용법 (완전 간단)
  • [DB] SQL(관계형 데이터베이스)과 NosSQL(비관계형 데이터베이스)의 특징과 차이
  • [DB] ORM의 특징과 장단점
  • window에서 mariaDB, MySQL 서버 껐다 켜기
JongTachi
JongTachi
    반응형
  • JongTachi
    JongTachi의 개발 블로그
    JongTachi
  • 전체
    오늘
    어제
    • 분류 전체보기 (162)
      • Network (10)
      • Server (19)
        • Web (12)
        • WAS (6)
      • Java (8)
        • JVM (1)
        • Java Syntax (16)
        • IDE (5)
        • Lombok (2)
        • Util (1)
      • FrameWork (8)
        • Spring&SpringBoot (4)
        • MyBatis (4)
      • JSP (3)
      • JavaScript (12)
        • jQuery (3)
        • JSON (3)
      • APM (1)
      • Android (5)
      • VCS(Version Control System) (5)
        • Git (4)
        • SVN (1)
      • IT_Tools (15)
        • Jenkins (2)
        • MobaXterm (2)
        • Jeus (1)
        • DBeaver (3)
      • Certificate (1)
      • Linux (3)
      • DB (14)
        • MariaDB (0)
        • Oracle (8)
        • Redis (2)
      • IT Information (19)
      • Text Editor (2)
        • NotePad (2)
      • 비밀의방 (0)
      • 헬파티 여행 (1)
      • 경제 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    oracle
    JSON
    디비버
    java
    자바스크립트
    자바
    HTTP
    JQuery
    오라클
    Javascript
    Tomcat
    DBeaver
    마이바티스
    보안
    Eclipse
    톰캣
    Redis
    이클립스
    svn
    Linux
    db
    Server
    SQL
    IntelliJ
    WAS
    상태코드
    git
    Web
    인텔리제이
    mybatis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JongTachi
Multiple Primary Key (다중 PK)
상단으로

티스토리툴바