PK(기본키)
- 테이블에서 각행을 구별하기 위한 키
- 각행을 구별하기 위함이기 때문에 Null 이면 안되고 Unique해야 한다.
- 노란키가 기본키이다.
FK(외래키)
- 타테이블을 참조하기 위한 키
- N:1 관계에서는 N이 FK를 갖는다.
- 파란키가 외래키이다.
각 테이블마다 관계를 설정할 때 외래키를 사용합니다. 외래키를 사용하여 join할 수 잇습니다.외래 키를 사용하여 테이블 간 관계를 정립해 줄 때 사용하는 전략은 크게 식별 관계, 비식별 관계 전략이 있습니다.
식별관계
- 주문상품 테이블에서 파란키인 주문Key, 상품Key가 외래키이자 기본키가 된다.
- 외래키가 기본키도 되었으니, null이 되면 안된다.
- null이 되면 안된다는 소리는 상품과 주문이 있어야 주문 상품을 생성할 수 있다는 것이다.
- 즉, 주문상품의 데이터정합성을 지킬 수 있다.
비식별관계
- 외래키를 따로 갖고 자신만의 기본키를 갖는다.
- 상품과 주문이 없어도 주문상품을 생성할 수 있다.
- 즉, 주문상품의 데이터 정합성이 보장이 안되고 따로 검증해야 한다.
- 요구사항에 따른 쉬운 변화 때문에 식별관계보다는 비식별관계를 추천한다
식별관계와 비식별관계의 장단점
식별 관계의 장점
- 데이터의 정합성 유지를 DB에서 한번 더 할 수 있다
- 자식 테이블에 데이터가 존재한다면 부모 데이터도 반드시 존재한다고 보장할 수 있다
식별 관계의 단점
- 요구사항이 변경되었을 경우 구조 변경이 어렵다
비식별 관계의 장점
- 변경되는 요구사항을 유동적으로 수용할 수 있다
- 부모 데이터와 독립적인 자식 데이터를 생성할 수 있다
비식별 관계의 단점
- 데이터 정합성을 지키기 위해서는 별도의 비즈니스 로직이 필요하다.
- 자식 데이터가 존재해도 부모 데이터가 존재하지 않을 수 있다
- 즉, 데이터 무결성을 보장하지 않는다
'스프링' 카테고리의 다른 글
몰랐던 어노테이션 정리 (0) | 2024.08.07 |
---|---|
Springboot3 + Swagger, Whitelabel 해결 (0) | 2024.06.24 |
Intellij 설정 (0) | 2024.04.16 |
HTTP 메소드 PUT, FATCH 차이점(멱등성) (0) | 2024.04.11 |
Id로 연관관계 짓기(엔티티로 연관관계x) (0) | 2024.04.09 |