인강에서의 설명이 잘 이해가 가지 않아 질문 드립니다
릴레이션 R이 2NF이고, 키가 아닌 모든 속성이 기본키에 대해 이행적 종속 관계를 이루지 않도록 제한한 릴레이션
이 제3정규형의 정의입니다
이행적 종속 관계를 설명하시면서
"'A->B, B->C 이면 A->C 이다' 라는 수학적 개념에서
이('~')를 삭제함으로써 이행적 종속 관계를 이루지 않도록 한다" 하셨는데
이를 삭제한다고 릴레이션에 어떤 변화가 생긴다는 것인지 잘 모르겠습니다
'A->B, B->C 이면 A->C 이다' 라는 문장 자체에 이미
B가 두 번이나 들어가서 프로그램 상 오류를 일으킬 확률이 조금이나마 있다는 점에서
이를 삭제하면 정규화가 된다는 것인지요...
감사합니다
안녕하세요 길벗 수험서 운영팀입니다.
정확히는 A->C 관계를 제거하는 것입니다.
해당 개념에 대해 예시를 들어 설명드리겠습니다.
3NF(제3정규형)에서는 2NF(제2정규형)에서 이행적 함수적 종속을 제거한 것을 말합니다.
말씀하셨듯이 A->B, B->C와 같은 형태를 이행적 종속 관계라고 말하는데, 예를 들어,
<학생> 테이블에 ‘이름’, ‘학과코드’, ‘학과명’이라는 필드가 있다고 가정해 보겠습니다.
이 때, ‘이름’ -> ‘학과코드’(A->B)를, ‘학과코드’ -> ‘학과명’(B->C)이라는 관계가 발생하기 때문에, ‘이름’ -> ‘학과명’(A->C)이라는 이행적 종속 관계가 발생합니다.
(하나의 학과코드는 하나의 학과명만 가진다고 가정했을 때)
여기서 이행적 종속 관계를 제거하려면 <학생> 테이블을 2개로 나누면 됩니다.
즉, <학생> 테이블에서 이행적 함수적 종속(A->C = ‘이름’->‘학과명’)을 제거한
<학생> 테이블 -> ‘이름’, ‘학과코드’
<학과> 테이블 -> ‘학과코드’, ‘학과명’
이렇게 말이죠.
위와 같이 분리할 경우 학과코드마다 불필요하게 중복되어 표시되던 ‘학과명’이 분리되어 중복성이 최소화됩니다.
행복한 하루 되세요.
-
관리자2019-01-22 15:05:55
안녕하세요 길벗 수험서 운영팀입니다.
정확히는 A->C 관계를 제거하는 것입니다.
해당 개념에 대해 예시를 들어 설명드리겠습니다.
3NF(제3정규형)에서는 2NF(제2정규형)에서 이행적 함수적 종속을 제거한 것을 말합니다.
말씀하셨듯이 A->B, B->C와 같은 형태를 이행적 종속 관계라고 말하는데, 예를 들어,
<학생> 테이블에 ‘이름’, ‘학과코드’, ‘학과명’이라는 필드가 있다고 가정해 보겠습니다.
이 때, ‘이름’ -> ‘학과코드’(A->B)를, ‘학과코드’ -> ‘학과명’(B->C)이라는 관계가 발생하기 때문에, ‘이름’ -> ‘학과명’(A->C)이라는 이행적 종속 관계가 발생합니다.
(하나의 학과코드는 하나의 학과명만 가진다고 가정했을 때)
여기서 이행적 종속 관계를 제거하려면 <학생> 테이블을 2개로 나누면 됩니다.
즉, <학생> 테이블에서 이행적 함수적 종속(A->C = ‘이름’->‘학과명’)을 제거한
<학생> 테이블 -> ‘이름’, ‘학과코드’
<학과> 테이블 -> ‘학과코드’, ‘학과명’
이렇게 말이죠.
위와 같이 분리할 경우 학과코드마다 불필요하게 중복되어 표시되던 ‘학과명’이 분리되어 중복성이 최소화됩니다.
행복한 하루 되세요.