inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복

일대일(1:1) 관계 - 주 테이블에 FK

일대일 fk 위치

5

tjrans303

작성한 질문수 15

0

 

안녕하세요.

JPA 강의를 듣다가 궁금한 점이 생겨 질문드립니다.

JPA 강의에서는 일대일 관계를 설명하면서 Member가 FK를 가지고 있는 방식이 더 좋다고 설명하셨고 김영한님께서도 주 테이블에 FK를 두는 방식을 더 선호한다고 말씀하신 것으로 해했습니다.

그래서 저는 일반적으로 주 테이블이 FK를 가지고 있는 방식이 더 편리하다고 생각하고 있었습니다.

JPA 강의에서 해당 이미지로 설명하셨어요.

image.png

 

 

그런데 이번 강의에서는 보조 테이블이 FK를 가지고 있는 방식이 더 좋다고 설명되어서 조금 헷갈립니다.

저는 화면의 예시에서 Member가 주테이블,

Locker를 보조 테이블이라고 이해했는데 강의마다 설명이 반대되는 것처럼 느껴졌습니다.

혹시 제가 잘못 이해한 부분이 있을까요?

sql mysql dbms/rdbms 소프트웨어-설계 SQLD

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. tjrans303님.

JPA나 데이터베이스 설계에서 일대일 관계를 다룰 때 FK(외래키)를 주 테이블에 둘지 대상 테이블에 둘지는 상황에 따라 다르게 선택할 수 있습니다.

기본적인 이해의 포인트:

  1. 주 테이블에 외래키 두기:

    • 장점: 주 테이블만으로 조회가 가능하며 대상 테이블의 데이터 유무를 쉽게 확인할 수 있습니다. 주 테이블과 명확하게 연관된 데이터를 다룰 때 유리합니다.
    • 예시: Member가 주 테이블로 Locker의 외래키를 가지고 있는 구성.
  2. 보조 테이블에 외래키 두기:

    • 장점: 보조 테이블에서 데이터 유무에 따라 주 테이블의 데이터를 신속하게 참조 가능하며, 연관된 데이터를 좀 더 유연하게 구성할 수 있습니다.
    • 예시: LockerMember를 참조하는 형태로, Locker가 주 사용빈도가 높은 경우 이 방식이 편리할 수 있습니다.

강의에서의 내용 차이:

  • 김영한님의 설명은 일반적인 패턴과 사용하는 경우에 대한 것을 설명한 것으로 이해할 수 있습니다. 주 테이블에 FK를 두는 방식이 더 직접적이고 이해하기 쉬운 구조를 제공할 수 있지만, 상황에 따라 테이블 관계를 유연하게 설계해야 할 필요도 있습니다.

  • 강의에서 주 테이블과 보조 테이블의 구분은 사용 사례에 따라 설명이 달라질 수 있습니다. 즉, 특정 케이스에서는 보조 테이블에 외래키를 두는 것이 효율적일 수 있다는 점을 이해하시면 좋습니다.

각 강의와 수업에서 특정 사례에 적합한 데이터베이스 설계 방법을 제시하기 때문에, 전체적인 맥락과 목표 시스템 설계를 파악하고 적절한 방식을 채택하시면 됩니다.

이미지와 관련 설명:

  • 클래스 다이어그램 및 테이블 연관 관계를 참고하여, MEMBER와 LOCKER 간의 관계에서 외래키의 위치가 어떻게 설계되었는지 시각적으로 확인하실 수 있습니다. 클래스 구조와 데이터베이스 테이블 구조 간의 매핑을 이해하는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

제 3 정규형 vs BCNF 정규형 차이점?

0

27

2

BCNF 질문

0

57

2

연관 엔티티 네이밍 규칙

0

45

1

진짜 강의 듣는거 너무 고문

0

120

1

28강 sql 파일 어딨나여?

0

79

1

2NF의 엄밀한 정의

0

66

1

comment 채번을 사용해야 하는 이유에 대한 설명이 필요합니다.

0

106

3

학습중인 수업자료를 받아볼 수 있을까요??

0

94

2

수업자료 pdf파일관련 건의 - 제목 링크위치 개선

0

80

2

서비스 운영 중 잘못된 테이블 설계 발견시 수정 시점에 대한 질문

1

97

2

실무적인 설계로 접근했을 때 제 2정규형 항상 만족?

0

73

1

슈퍼/서브 타입 joined 전략

0

66

2

created_at 관련 구현과 DB ENUM에 대해

0

67

1

M:N 관계의 연관 엔티티 설계 순서

0

69

2

데이터 역사성 훼손 문제

0

62

2

실무팁 - 등록자,수정자 컬럼 관리 관련 질문입니다.

0

80

1

구글이 이메일 변경을 허용하는 이유

0

118

1

order_item 테이블 (order_id, product_id) 유니크 제약조건 누락

0

99

2

BCNF 정규화에 대한 질문

0

119

2

주문, 결제 엔티티의 분류

1

115

1

실무에서의 복수 항목에 대한 관리 방법이 궁금합니다.

0

87

1

역할 및 발생 시점에 따른 엔티티 분류

0

83

1

대리키의 외부 노출에 대한 질문을 하고 싶습니다.

0

105

2

소프트 딜리트 정책에서 유니크 컬럼 중복 방지 전략

0

94

1