테이블 키 생성전략 0 2 772

by Atreyu [MySQL] mysql 기본키 외래키 [2022.04.05 15:36:23]


안녕하세요. 

개발을 하면서 문득 궁금증이 생겨서 질문드립니다.

일반적으로 테이블 생성 시 기본키 생성전략을 어떻게 가져가야 하는지에 따른 고민입니다.

현재 제가 협업에서 개발 진행하면서 테이블을 설계할 경우 크게 3가지를 사용합니다.

1. 년원일시분초+난수 조합을 사용한 20자리 랜덤키

2. 해당 테이블 약어 + SEQ

3. LOG성 테이블은 AUTO_INCREMENT

 

현재 위처럼 사용하고 있는데 기존에 사용하던 방식을 그대로 따라가다 보니 1번 방식으로 사용하다가

그래도 키 값에 의미는 있어야하니 2번 방식으로 사용했었습니다

이번에 JPA를 공부하면서 강의내용 중 테이블의 키 값은 비즈니스 로직이 들어가지 않는 

LONG Type Column + 대체키 + 키 생성전략이라고 써있던데 

정확히 이해는 가지 않지만 Mysql이라면 int는 몇 억 row 이상은 데이터가 들어가지 않은 long 타입으로 설정하고 AUTO_INCREMENT를 사용하라

라고 이해했는데 저런식으로 모든 테이블을 사용하면 관계가 있는 테이블과의 외래키 설정이나 이런 부분에서 아예 문제가 없을까요?

 

저 방식이 아닌 다른 좋은 방식의 키 생성 전략이 있을까요?

 

by 신이만든지기 [2022.04.06 09:09:54]

3번을 많이 사용합니다.

주민번호, 이메일 등 같은 것을 PK로 사용하지 않고, 임의키를 만들어 쓰는 경우 굳이 키에 의미를 담을 필요가 있나요?

자릿수가 중요하다면 시작값을 필요한 자릿수에서 시작하면 될테니 말입니다. 예, 1,000,000


by 마농 [2022.04.06 09:41:05]

가능하면 실질식별자를 사용하시는게 좋습니다.
(테이블의 레코드를 유일하게 구별할 수 있는 항목 또는 항목들의 조합)
인조식별자는 딱히 실질식별자가 없을 때 시용하시는 게 좋습니다.
인조식별자를 사용한다면? 식별자 안에 의미를 부여하는 것은 불필요 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입