강의

멘토링

로드맵

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

쿠키스틱님의 프로필 이미지
쿠키스틱

작성한 질문수

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

진짜중복/가짜중복을 나누는데 있어서

작성

·

16

0

안녕하세요 강사님,

 

강사님 설명이 굉장히 상식적으로 자연스럽게 이해가 되다 보니 따로 이해가 어려운 부분 없이

강의 후반부까지 잘 따라 왔는데, 어딘가 마음속에서 걸려있던 의문점 하나가 터졌습니다.

 

예를 들어 35강 19:46 즈음에 카테고리 테이블에 색깔 컬럼을 진짜중복/가짜중복 을 나누는데

1. HOME의 색을 YELLOW 로 바꾸면 UNIVERSITY 도 YELLOW로 바뀌는가? -> NO

2. HOME의 색인 RED를 '빨강'으로 바꾸면 UNIVERSITY 도 '빨강'으로 바뀌어야 하는가? -> YES

이 두가지 해석이 가능할 것 같습니다..

 

물론 결과론적으로 머리로는 colors 테이블을 따로 만들어 FK로 연결하는 것이 맞다는 생각이 들지만

강사님의 6가지 원칙을 차례로 따라가는데 헷갈림이 있어 질문드립니다.

 

감사합니다.

답변 2

0

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

안녕하세요 ! 질문 너무 잘 해주셨어요 ~

질문해주신 내용에 답변 드려볼게요 !

우선 스스로 두 가지 해석이 가능하다는 걸 발견하신 거 자체가 굉장히 중요한 포인트를 짚으신 거예요!

이 두 질문은 사실 서로 다른 것을 묻고 있어요 ~

1번 질문은 "이 카테고리의 색상을 다른 색으로 교체할 때"를 묻는 것이고, 2번 질문은 "색상의 이름(표기)을 수정할 때"를 묻는 거예요 !

진짜 중복인지 가짜 중복인지를 판단하는 질문은 1번처럼 "A 데이터의 값을 수정하면 B 데이터의 값도 같이 수정되어야 하는가?"예요 ~

이 맥락에서는 HOME 카테고리의 색을 YELLOW로 바꿔도 UNIVERSITY 카테고리의 색이 반드시 YELLOW로 바뀔 필요는 없으니 가짜 중복처럼 보일 수 있죠 !

그런데 2번처럼 "RED라는 색상 자체의 이름 표기를 '빨강'으로 바꿀 때"를 생각해보면, RED라는 값을 공유하는 모든 카테고리가 동시에 '빨강'으로 바뀌어야 하므로 이건 진짜 중복이 돼요 ~

결국 어떤 관점으로 질문을 던지느냐에 따라 달라지는데요, 이 부분이 바로 "서비스에서 데이터를 어떻게 사용하느냐에 따라 판단해야 한다"는 원칙이 적용되는 지점이에요 !

색상 값 자체를 하나의 독립된 데이터로 관리할 필요가 있다면(예: 색상 이름을 통일되게 관리해야 할 때) colors 테이블을 분리하는 게 맞고, 단순히 각 카테고리마다 독립적인 색상 속성 하나를 기록하는 수준이라면 분리하지 않아도 돼요 !

머리로 이미 colors 테이블 분리가 맞다는 감을 잡으셨다면 그 직관이 올바른 방향을 가리키고 있는 거예요:)

추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~

0

안녕하세요, 인프런 AI 인턴입니다. 쿠키스틱님께서 질문하신 “카테고리 테이블에서 색깔 컬럼을 진짜 중복/가짜 중복”으로 나누는 것에 대한 의문을 해결해드리겠습니다.

데이터베이스 설계에서 “진짜 중복”과 “가짜 중복”을 구분하는 것은 보통 데이터의 의존성과 일치성에 따라 달라질 수 있습니다.

  1. 데이터의 독립성과 일관성: 색상과 같은 정보는 특정 엔티티(예: 카테고리)에 독립적으로 적용될 수 있습니다. 하지만 동일한 의미로서 색상이 여러 엔티티에 걸쳐 나타나면서 데이터 변경이 일관성을 갖게 하기 위해서는 별도의 표로 분리하는 것이 일반적입니다. 이를 통해 모든 관련 엔티티에 동시에 변경이 반영됩니다.

  2. 구체적인 예:

    • HOME의 색을 YELLOW로 바꾸면 UNIVERSITY도 YELLOW로 바뀌는가? -> NO: 이는 기본적으로 각 카테고리가 독립적으로 색상을 가지는 경우로 해석됩니다. 즉, 카테고리별로 별도의 색상이 설정될 수 있습니다.
    • HOME의 색인 RED를 ‘빨강’으로 바꾸면 UNIVERSITY도 ‘빨강’으로 바뀌어야 하는가? -> YES: 이는 색상의 의미가 데이터베이스 전반에 걸쳐 일관성을 유지해야 하며, 이는 colors라는 별도의 테이블을 두고 여러 엔티티가 이를 참조하는 구조로 나타낼 수 있습니다.

질문에서의 혼란은 색상이 단순한 속성값인지, 아니면 시스템 전반에서 동일한 의미를 갖는 값으로 사용되는지에 따라 결정됩니다.

추가적인 설명과 함께 비슷한 논의를 다룬 사례를 참고해 보실 수 있습니다:
- 데이터베이스에서 속성의 독립성과 일관성을 관리하는 방법

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

쿠키스틱님의 프로필 이미지
쿠키스틱

작성한 질문수

질문하기