Inflearn brand logo image

인프런 커뮤니티 질문&답변

11 1님의 프로필 이미지
11 1

작성한 질문수

비전공자도 이해할 수 있는 DB 설계 입문/실전

PK(기본키), FK(외래키)

외래 키 지정은 필수가 아닌 건가요?

해결된 질문

작성

·

167

0

안녕하세요. 강의 끝까지 다 들었는데 갑자기 외래 키 부분에서 궁금한 점이 생겼습니다.

 

DB 설계할 때 테이블끼리 관계를 맺기 위해 외래 키를 지정하잖아요?

그런데 외래 키로 지정을 안 하는 경우도 있나요? 조인 등에 사용될 속성은 있지만, 외래 키 지정은 안 해서 외래 키 제약 조건이 없도록 하는 경우도 있나요?

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 11 1님! 질문 잘 해주셨어요~!!

외래키를 지정하지 않는 경우도 있습니다!

외래키의 제약 조건이 구현을 함에 있어서 발목을 붙잡는 경우에는 외래키를 사용하지 않기도 합니다.

가장 대표적인 예시로 MSA와 같이 DB를 분리해서 사용하는 경우,

서로 다른 DB끼리 외래키를 연결시킬 수 없기 때문에 외래키를 설정하지 않고 DB를 설계하기도 합니다.

참고 : https://waspro.tistory.com/730

이 외로 궁금하신 점 있으시면 질문 남겨주세요~~

11 1님의 프로필 이미지
11 1
질문자

답변 감사합니다!

0

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

11 1님께서 질문하신 외래 키 지정에 관한 부분에 대해 설명드리겠습니다.

  • 외래 키(Foreign Key)란?: 데이터베이스 설계 시, 두 테이블 간의 관계를 정의하고 데이터 무결성을 보장하기 위해 외래 키를 지정합니다. 이는 한 테이블의 특정 필드가 다른 테이블의 기본 키를 참조하여 두 테이블 간의 관계를 유지하게 해주는 방식입니다.

  • 외래 키 지정이 필수는 아닙니다: 실제 운영 환경에서는 반드시 모든 관계에 외래 키를 설정하지 않기도 합니다. 이는 주로 성능 향상이나 특정 비즈니스 로직의 유연성을 추구할 때 사용됩니다. 외래 키 제약 조건은 데이터의 무결성을 보장하지만, 이로 인해 삽입 및 삭제 시 부가적인 연산 비용이 발생할 수 있습니다. 따라서, 고성능이 요구되는 시스템에서는 필요한 경우 외래 키를 사용하지 않기도 합니다.

  • 필요한 경우: 외래 키를 사용하지 않더라도, 테이블 간 조인이 필요한 경우 해당 키로 조인할 수 있습니다. 이 경우에도 데이터 일관성을 수동으로 관리해야 하므로, 외래 키 제약이 없을 때보다 더 신중한 접근이 필요합니다.

이런 내용들이 더 잘 이해될 수 있도록 관련된 게시물도 확인해 보시는 것을 추천드립니다:

이 링크들은 외래 키의 필요성 및 사용하지 않아도 되는 상황에 대해 더 깊이 있는 설명을 제공합니다.

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

11 1님의 프로필 이미지
11 1

작성한 질문수

질문하기