책 내용 질문하기
정규화 과정의 제3정규형에 대해서
도서
2018 시나공 컴퓨터활용능력 1급 필기
페이지
303
조회수
278
작성일
2019-01-15
작성자
탈퇴*원
첨부파일

인강에서의 설명이 잘 이해가 가지 않아 질문 드립니다

 

릴레이션 R이 2NF이고, 키가 아닌 모든 속성이 기본키에 대해 이행적 종속 관계를 이루지 않도록 제한한 릴레이션

이 제3정규형의 정의입니다

 

이행적 종속 관계를 설명하시면서

"'A->B, B->C 이면 A->C 이다' 라는 수학적 개념에서

이('~')를 삭제함으로써 이행적 종속 관계를 이루지 않도록 한다" 하셨는데

 

이를 삭제한다고 릴레이션에 어떤 변화가 생긴다는 것인지 잘 모르겠습니다

 

 

'A->B, B->C 이면 A->C 이다' 라는 문장 자체에 이미

B가 두 번이나 들어가서 프로그램 상 오류를 일으킬 확률이 조금이나마 있다는 점에서

이를 삭제하면 정규화가 된다는 것인지요...

 

 

감사합니다 

답변
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 = ‘이름’->‘학과명’)을 제거한

<학생> 테이블 -> ‘이름’, ‘학과코드’

<학과> 테이블 -> ‘학과코드’, ‘학과명’

이렇게 말이죠.

 

위와 같이 분리할 경우 학과코드마다 불필요하게 중복되어 표시되던 ‘학과명’이 분리되어 중복성이 최소화됩니다.

 

행복한 하루 되세요.

  • 관리자
    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 = ‘이름’->‘학과명’)을 제거한

    <학생> 테이블 -> ‘이름’, ‘학과코드’

    <학과> 테이블 -> ‘학과코드’, ‘학과명’

    이렇게 말이죠.

     

    위와 같이 분리할 경우 학과코드마다 불필요하게 중복되어 표시되던 ‘학과명’이 분리되어 중복성이 최소화됩니다.

     

    행복한 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.