인프런 커뮤니티 질문&답변
FK 값 중복과 규칙 3 질의
작성
·
43
·
수정됨
0
안녕하세요, 강사님덕분에 많이 배웁니다.
공부하면서 궁금한 내용이 있어 질문드립니다.
FK 값 중복은 괜찮은거지?
- 예시 규칙 1의 products(판매 상품) 가게 id(FK) 값
규칙 3 내용 중, 서비스를 중심으로 동사(팔다)를 골라 엔티티간 관계를 설정할 때
예시 2 내용입니다.
가게(stores), 판매상품(products)
- 하나의 가계는 여러 개의 상품을 판다(팔수있다)
여기까지 이해를 했는데, 판매상품과 가게 관계에서 왜 '하나의 상품' 이라는 표현을 하는건가요? 여러개의 상품을 판다. 라고 벌써 정의 했으면서, 왜 하나의 상품이라고 하지? 여러개의 상품은 하나의 가게에 의해 팔린다. 라고 해야 하지 않나?
그래서 1:N 관계가 되는거 아니야? 그런 생각에 질의 드렸습니다.
감사합니다ㅡ
답변 2
1
안녕하세요 ! 질문 잘해주셨어요 !
질문해 주신 내용에 대해 답변드려볼게요 ~
"FK 값 중복은 괜찮은거지?"
-> 네 ! FK 값은 중복이 완전히 괜찮아요 !
오히려 1:N 관계에서는 N쪽 테이블의 FK가 당연히 중복되어야 해요 !
products 테이블에서 가게 id (FK)가 1, 1, 2, 2, 2 이런 식으로 중복되는 게 정상이에요 ~
왜냐하면 하나의 가게(id=1)가 여러 상품을 가질 수 있기 때문이죠! 중복되면 안 되는 건 PK(Primary Key)에요 :)
"판매상품과 가게 관계에서 왜 '하나의 상품' 이라는 표현을 하는건가요?"
-> 우선 관계를 파악할 때는 항상 "하나의 A"와 "하나의 B" 관점에서 각각 상대방 몇 개와 연결되는지를 봐야 해요 !
테이블의 한 행(레코드) 단위로 생각하시면 돼요 !
가게 관점: 하나의 가게는 → 여러 개의 상품을 판다
상품 관점: 하나의 상품은 → 하나의 가게에 의해 팔린다
"여러 개의 상품은 하나의 가게에 의해 팔린다"라고 표현하신 것도 사실은 맞는 말이에요!
다만 관계 파악에서는 양쪽 다 "하나의"로 시작해서 상대방이 "하나"인지 "여러 개"인지를 판단하는 거예요 !
그래야 1:N인지, N:M인지 명확하게 구분할 수 있거든요 :)
추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 타뮤직님께서 질문해주신 “FK 값 중복”과 “규칙 3”에 대한 내용에 대해 설명드리겠습니다.
1. FK 값 중복은 괜찮은 건가요?
최소화된 데이터베이스의 설계에서는 Foreign Key(FK)를 통해 테이블 간의 관계를 표현합니다. 각 상품이 특정 가게에 속할 경우, 동일한 가게 ID가 여러 상품에 할당될 수 있습니다. 이는 FK 값의 중복이 허용된다는 의미이며, 이는 데이터베이스의 참조 무결성을 보장하는 데 문제가 없습니다. 이를 통해 여러 상품이 한 가게와 연결되고, 데이터의 중복 없이 관계를 효율적으로 관리할 수 있습니다.
이미지의 예시를 통해 FK의 작동 방식을 더 잘 이해하실 수 있을 것입니다: 
2. 규칙 3의 예시와 엔티티 관계
여기서 중요한 점은 ‘하나의 상품은 하나의 가게에 의해 팔린다’는 문장입니다. 즉, 특정 상품이 구체적으로 어느 가게에서 판매되는지를 나타낸다는 것입니다. 여러 상품이 있을 수 있지만, 각 상품은 정확히 하나의 가게에만 속할 수 있습니다. 반면, 여러 개의 상품은 하나의 가게에서 팔릴 수 있으므로 이러한 관계가 1:N 관계가 됩니다.
이렇게 생각하시면 됩니다:
- 판매상품과 가게 간의 관계:
- “여러 개의 상품은 하나의 가게에 의해 팔린다.“에서의 ‘하나의 상품’은 각각의 개별 상품을 가리키며, 이러한 표현은 데이터베이스 모델링 시 혼동을 줄이기 위한 것입니다.
이해에 도움이 되셨기를 바라며, 관련 유사한 내용의 게시물도 참고하시면 좋겠습니다. 그러나 현재 직접적인 링크는 제공되지 않네요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변을 드리고자 노력하고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





네ㅡ 감사합니다. 확실히 더 이해가 되었습니다.