대리키와 복합키 관련하여 질문 있습니다.
234
작성한 질문수 9
안녕하세요.
ORM 설계를 진행할 때 비식별 관계를 사용하고 기본 키는 Long 타입의 대리 키를 사용하는 것을 추천한다고 책에서 읽었습니다.
장바구니, 위시리스트 테이블을 설계 할때도 대리 키를 사용는 것이 좋을까요?
아니면 사용자 ID, 상품 ID로 복합키를 사용하는 것이 좋을까요?
어떤 상황에서 복합키를 적절하게 사용해야 하는지 판단을 하지 못하겠습니다.
아니면 신규 테이블을 설계할 때는 전부 대리 키를 사용하는 것이 적절 할까요?
그리고 대리 키를 사용할 때 한가지 더 궁금한 부분이 있습니다.
대리 키는 비즈니스와 아무 관련이 없다고 하셨는데, 이 부분이 잘 와닿지 않아서요..
실제 비즈니스와 관련있는 키가 있는건지.. 아니면 비즈니스에서 사용하는 키를 따로 추가로 생성하고
대리 키로는 조회, 수정, 삭제를 진행하면 안되는걸까요?
감사합니다.
답변 1
1
안녕하세요. Anonymous님, 공식 서포터즈 코즈위버입니다.
말씀하신 것처럼 장바구니, 위시리스트는 말씀하신것처럼 복합키를 이용하는 방법도 괜찮습니다.
다만, 상품에 상품옵션이 생길경우 키를 회원번호, 상품번호, 상품옵션번호 등으로 변경해야 하는 문제가 생깁니다. 만약 장바구니에 인조키를 적용하였다면 상품옵션번호 속성을 추가하는 것으로 비교적 쉬운 문제가 됩니다.
이처럼, 장바구니에 회원번호와 상품번호를 키로 잡는 방법(업무키)은 데이터 설계 관점에서 기본적인 접근이며 비지니스 종속 키가 됩니다. 비지니스에 종속되었다는 의미는 비지니스 요구사항이 바뀌면 키 또한 바뀌어야 한다는 의미입니다. 인조키(1씩 증가하는 무의미한 숫자)의 경우 비지니스 요구사항과 무관한 값이기에 비지니스 독립적이라고 표현합니다.
업무키로 데이터를 설계할 경우 테이블만 보고도 업무 프로세스를 파악할 수 있다는 장점이 있습니다. 반면 인조키를 사용하게 되면 업무 프로세스를 알기 힘들다는 단점이 있으나, 업무 변화에 매우 유연한 구조를 갖게 된다는 장점이 있습니다.
필요에 따라 적절히 선택하여 설계하시면 됩니다.
감사합니다.
inheritance startegy 선택시 고려사항
0
11
0
Entity 동등성 비교
0
14
1
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
52
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
48
1
JPQL 메소드와 락
0
53
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
89
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
89
2
연관관계 매핑 질문드립니다.
0
82
2
h2데이터베이스 실행오류
0
105
2
persistence.xml
0
103
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
90
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
84
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
91
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
137
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1





