• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

대리키와 복합키 관련하여 질문 있습니다.

24.04.09 12:14 작성 24.04.09 13:33 수정 조회수 73

0

안녕하세요.

 

ORM 설계를 진행할 때 비식별 관계를 사용하고 기본 키는 Long 타입의 대리 키를 사용하는 것을 추천한다고 책에서 읽었습니다.

 

장바구니, 위시리스트 테이블을 설계 할때도 대리 키를 사용는 것이 좋을까요?

아니면 사용자 ID, 상품 ID로 복합키를 사용하는 것이 좋을까요?

 

어떤 상황에서 복합키를 적절하게 사용해야 하는지 판단을 하지 못하겠습니다.

아니면 신규 테이블을 설계할 때는 전부 대리 키를 사용하는 것이 적절 할까요?

 

그리고 대리 키를 사용할 때 한가지 더 궁금한 부분이 있습니다.

대리 키는 비즈니스와 아무 관련이 없다고 하셨는데, 이 부분이 잘 와닿지 않아서요..

실제 비즈니스와 관련있는 키가 있는건지.. 아니면 비즈니스에서 사용하는 키를 따로 추가로 생성하고

대리 키로는 조회, 수정, 삭제를 진행하면 안되는걸까요?

 

감사합니다.

답변 1

답변을 작성해보세요.

1

codesweaver님의 프로필

codesweaver

2024.04.09

안녕하세요. Anonymous님, 공식 서포터즈 코즈위버입니다.

말씀하신 것처럼 장바구니, 위시리스트는 말씀하신것처럼 복합키를 이용하는 방법도 괜찮습니다.

다만, 상품에 상품옵션이 생길경우 키를 회원번호, 상품번호, 상품옵션번호 등으로 변경해야 하는 문제가 생깁니다. 만약 장바구니에 인조키를 적용하였다면 상품옵션번호 속성을 추가하는 것으로 비교적 쉬운 문제가 됩니다.

 

이처럼, 장바구니에 회원번호와 상품번호를 키로 잡는 방법(업무키)은 데이터 설계 관점에서 기본적인 접근이며 비지니스 종속 키가 됩니다. 비지니스에 종속되었다는 의미는 비지니스 요구사항이 바뀌면 키 또한 바뀌어야 한다는 의미입니다. 인조키(1씩 증가하는 무의미한 숫자)의 경우 비지니스 요구사항과 무관한 값이기에 비지니스 독립적이라고 표현합니다.

 

업무키로 데이터를 설계할 경우 테이블만 보고도 업무 프로세스를 파악할 수 있다는 장점이 있습니다. 반면 인조키를 사용하게 되면 업무 프로세스를 알기 힘들다는 단점이 있으나, 업무 변화에 매우 유연한 구조를 갖게 된다는 장점이 있습니다.

 

필요에 따라 적절히 선택하여 설계하시면 됩니다.

감사합니다.

Anonymous님의 프로필

Anonymous

질문자

2024.04.09

감사합니다.