외래 키 지정은 필수가 아닌 건가요?
안녕하세요. 강의 끝까지 다 들었는데 갑자기 외래 키 부분에서 궁금한 점이 생겼습니다.
DB 설계할 때 테이블끼리 관계를 맺기 위해 외래 키를 지정하잖아요?
그런데 외래 키로 지정을 안 하는 경우도 있나요? 조인 등에 사용될 속성은 있지만, 외래 키 지정은 안 해서 외래 키 제약 조건이 없도록 하는 경우도 있나요?
回答 2
1
안녕하세요 11 1님! 질문 잘 해주셨어요~!!
외래키를 지정하지 않는 경우도 있습니다!
외래키의 제약 조건이 구현을 함에 있어서 발목을 붙잡는 경우에는 외래키를 사용하지 않기도 합니다.
가장 대표적인 예시로 MSA와 같이 DB를 분리해서 사용하는 경우,
서로 다른 DB끼리 외래키를 연결시킬 수 없기 때문에 외래키를 설정하지 않고 DB를 설계하기도 합니다.
참고 : https://waspro.tistory.com/730
이 외로 궁금하신 점 있으시면 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다.
11 1님께서 질문하신 외래 키 지정에 관한 부분에 대해 설명드리겠습니다.
외래 키(Foreign Key)란?: 데이터베이스 설계 시, 두 테이블 간의 관계를 정의하고 데이터 무결성을 보장하기 위해 외래 키를 지정합니다. 이는 한 테이블의 특정 필드가 다른 테이블의 기본 키를 참조하여 두 테이블 간의 관계를 유지하게 해주는 방식입니다.
외래 키 지정이 필수는 아닙니다: 실제 운영 환경에서는 반드시 모든 관계에 외래 키를 설정하지 않기도 합니다. 이는 주로 성능 향상이나 특정 비즈니스 로직의 유연성을 추구할 때 사용됩니다. 외래 키 제약 조건은 데이터의 무결성을 보장하지만, 이로 인해 삽입 및 삭제 시 부가적인 연산 비용이 발생할 수 있습니다. 따라서, 고성능이 요구되는 시스템에서는 필요한 경우 외래 키를 사용하지 않기도 합니다.
필요한 경우: 외래 키를 사용하지 않더라도, 테이블 간 조인이 필요한 경우 해당 키로 조인할 수 있습니다. 이 경우에도 데이터 일관성을 수동으로 관리해야 하므로, 외래 키 제약이 없을 때보다 더 신중한 접근이 필요합니다.
이런 내용들이 더 잘 이해될 수 있도록 관련된 게시물도 확인해 보시는 것을 추천드립니다:
이 링크들은 외래 키의 필요성 및 사용하지 않아도 되는 상황에 대해 더 깊이 있는 설명을 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
진짜중복/가짜중복을 나누는데 있어서
0
33
2
규칙 1에 대해서
0
53
2
강사님도 실제로 구글 시트에 이런식으로 적으면서하는걸까요?!
0
56
2
만약 신고사유가 객관식 다운드롭형태일때는 테이블을 따로 분리하는건가요??
0
56
2
설문 후속강의 쿠폰 제공 이벤트에 대해서
0
76
2
FK 값 중복과 규칙 3 질의
0
76
2
7-42. 역정규화 섹션에 나온 참고글 링크
0
44
2
[JSCODE 쇼핑몰 (2)] 상품 테이블의 등록한 사람 질문 입니다.
0
48
1
몽고DB 강의 계획
0
80
2
프론트단에서 고정 저장 / 백엔드에서 조회 저장
0
90
1
게시글 작성자 Id(사용자 FK) 숫자가 맞나요?
0
96
2
UI를 보고 저장해야할 데이터인지 파악하는 팁이 있을까요?
0
97
2
안녕하세요 강사님 문의 사항이 있습니다
0
108
2
실제 개발에 들어가거나 서비스 운영 중에도 DB설계를 바꾸나요?
0
233
2
관리자 테이블
0
227
2
게시판 닉네임, 아이디 관련질문
0
126
2
개발자 및 DB 설계 관련 질문
0
155
1
중복데이터 질문 있습니다.
0
104
2
db 컬럼에 JSON 박아도 되나요?
0
311
2
erd 진짜 안그려도 되나요
0
276
2
그냥 하나씩 만들어나가면서 DB 설계를 그때그때 하는건 틀린건가요?
0
104
2
JSCODE 게시판에서 댓글 관련하여 설계
0
128
2
주문수량과 재고량 관련하여 테이블 분리시
0
197
2
todo데이터 테이블 설계 강의 질문있습니다.
0
115
2

