개발자

개인 프로젝트중 DB 복합키 관련 질문입니다!

2023년 09월 25일조회 208

안녕하세요! 개인 프로젝트를 진행하다 궁금증이 생겨 질문드립니다. 우선 저는 Spring Boot, JPA, MySQL로 소모임을 만들고 참여할 수 있는 프로젝트를 진행하고 있습니다. 1. 모임을 등록할 경우 모임 태그를 설정할 수 있고 해당 태그로 검색이 가능하게 구현을 하려고 합니다. 제가 생각했을 때 모임 태그가 굳이 auto_increment로 PK값을 가질 필요가 없다고 생각해서 해당 모임 PK값과, 태그 이름으로 복합키 PK값을 설정하였는데요. 효율을 따졌을 경우 이 경우가 옳은지가 궁금합니다! 2. 모임을 만들 때 지원자들에게 질문을 할 수 있게 지원 양식을 작성하게 되어있습니다. 지원 양식 테이블은 모임 테이블과 다대일 (지원 질문 : 모임) 관계를 가지고 있습니다. 이 경우에도 지원 질문 테이블은 모임 PK값과 orders (질문 순서) 컬럼으로 복합키 PK로 설정하였는데요. 이 경우도 궁금해서 질문드립니다. 저는 굳이 PK값을 따로 두어 해당 PK값을 사용해 질문을 찾거나 할 일이 없기 때문에 PK 값을 따로 설정할 필요가 없다고 생각합니다! (질문을 작성, 수정할 경우 해당 모임의 모든 질문을 제거하고 다시 insert하는 방법) 읽어주셔서 감사합니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

joseph님의 프로필 사진

좀 옛날 게시물이지만 이 링크 참조해보시면 좋을 것 같아요, https://stackoverflow.com/questions/337503/whats-the-best-practice-for-primary-keys-in-tables 이런 것도 있구요, https://dev.mysql.com/doc/refman/8.0/en/primary-key-optimization.html 관련한 게시물이 워낙 다양해서 mysql pk best practice 같은 키워드로 검색해 보시면 좋을 것 같아요 제대로 답변하려고 해보니 내용이 너무 방대할 것 같네요;;; 그리고 mysql이나 mariadb가 oracle이나 postgre등과 다르게 어떻게 데이터를 메모리에 로딩하고 찾아가는지 공부해 보시면 지금 설계하신 방식으로 데이터를 찾아갈 때 어떤 점이 비효율적인지 확인 가능하실 듯… 운영상의 문제도 매우 크구요; 무조건 틀렸다라기 보다 맥락이 모호해서 답을 내리기가 애매하네요;

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!