작성
·
28
답변 2
1
안녕하세요 누구게님 ㅎㅎ
일단 질문부터 정리를 하면, 질문주신 강의는 제 3정규형인데, 제 2정규형강의에서 등급이 할인율을 결정하니 -> 등급과 할인율이 분리되어야 하는것 아닌가? 라는 말씀이시죠?
결론부터 얘기를 하면 제 2정규형때 할인율을 분리하지 않아도 됩니다.
제 2정규형(2NF)은 제 1정규형(1NF)을 만족하면서, 부분 함수 종속(partial dependency)을 제거한 형태입니다. 부분 함수 종속은 기본키의 일부에만 종속된 속성이 있는 경우 발생하는데요.
앞의 테이블을 보면 기본키는 (아이디, 이벤트번호)로 설정됩니다. 그러나 일부 속성(이름, 등급, 할인율)은 아이디에만 종속되며 이벤트번호와는 관계가 없습니다. 이런 속성들은 부분 함수 종속을 일으키므로 이를 분리해야 하고 분리한 결과가 다음과 같이 되는 것입니다.
{아이디, 이벤트번호, 당첨여부}, {아이디, 이름, 등급, 할인율}
이렇게 되면 이벤트 테이블에서는 모든 속성이 기본키 (아이디, 이벤트번호)에 완전 종속이 되고 회원 테이블에서는 기본키 아이디에 모든 속성이 완전 종속됩니다.
이로써 부분 함수 종속이 제거되어 제 2정규형을 만족하게 됩니다.
이 때 할인율을 빼야하는 이유는 없습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다. 누구게님.
2 정규형에 대한 질문을 주셨군요. 2 정규형은 모든 비어트리뷰트가 합성 기본키의 부분에 의해 결정되지 않아야 함을 의미합니다. 즉, 비 기본 속성이 기본키에 대해 완전 함수 종속이어야 합니다.
할인율이 기본키에 완전 함수 종속되지 않는다면, 2 정규형으로 정규화하는 과정에서 빠져야 하는 것이 맞습니다.
예를 들어, 만약 기본키가 (상품ID, 주문ID)인 테이블에서 할인율이 상품ID에만 종속된다면, 새로운 테이블로 분리되어야 합니다. 이 경우, 할인율과 상품ID로 테이블을 구성하여 정보의 중복을 줄일 수 있습니다.
유사한 질문과 자세한 설명은 아래 링크를 통해 확인해 보실 수 있습니다.
위 링크에서는 다양한 정규화를 실제로 어떻게 진행하는지와 기본키와의 관계에 대해 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요 강의를 보면 첫번째 테이블을 제2정규화를 거쳐서 두번째 테이블로 분해가 된다고 하셨는데 이름이 할인율을 결정하는것이 아니라 등급이 할인율을 결정하는 것이니 해당 테이블에서 할인율을 빼야하는것 아닌가요?