logo

DBMS의 전이적 종속성

R(A B C) 관계를 생각해 봅시다. 여기서 A, B, C는 관계 R의 속성으로 알려져 있습니다. 다음 조건이 발생하면; 그러면 DBMS에서 전이적 종속성이 발생합니다. 조건은 A → B, B → C입니다. 따라서 조건은 A → C가 됩니다. 즉, 두 가지 기능적 종속성에 의해 종속성이 만들어지면 기능적 종속성은 전이적 종속성이 된다고 말할 수 있습니다.

전이적 의존성이란 무엇입니까?

R(A B C) 관계를 생각해 보세요. 여기서 A, B, C는 관계 R의 속성으로 알려져 있습니다. 다음 조건이 발생하면; 그러면 DBMS에서 전이적 종속성이 발생합니다. 조건은 A → B, B → C입니다. 따라서 조건은 A → C가 됩니다. 전이적 기능 종속에서 종속은 행렬식에 직접 종속됩니다.

다음 예제를 통해 전이적 종속성을 이해해 보겠습니다.

작성자_ID 작가 작성자_국적
A1 아룬다티 로이 작은 것의 신 인도
A1 Kiran Desai 손실의 상속 인도
A2 R. K. 나라얀 맬구디의 식인종 인도

위의 작성자 테이블에서 우리는 그것을 얻습니다.

    도서 → 저자:여기서는 book 속성에 따라 Author 속성이 결정됩니다. 책 이름을 아는 사람은 저자의 이름도 알 수 있습니다.저자 → 저자_국적:누군가 저자의 이름을 알면 저자의 국적도 알 수 있습니다.도서 → 저자_국적: 책 이름을 알면 저자의 국적도 알 수 있습니다.

위에서 설명한 기능적 종속성을 자세히 살펴보면 다음과 같은 패턴을 찾을 수 있습니다.

  • A → B 및 B → C B→C; 따라서 A → CA → C입니다.
  • A → 책, B → 저자 B → 저자 및 C → 저자_국적 C→저자_국적

위의 Author 테이블에 3NF(Third Normal Form)를 적용한다고 가정합니다. 이 경우 작성자 테이블의 전이적 종속성을 제거해야 하며 데이터베이스의 전이적 종속성을 제거하는 프로세스를 정규화 프로세스라고 합니다.

전이적 종속성을 피하는 방법은 무엇입니까?

위의 Author 테이블을 다시 고려하여 테이블 생성 시 어떤 유형의 문제가 발생하는지 살펴보겠습니다.

작성자 테이블:

작성자_ID 작가 작성자_국적
A1 아룬다티 로이 작은 것의 신 인도
A1 Kiran Desai 손실의 상속 인도
A2 R. K. 나라얀 맬구디의 식인종 인도

데이터 이상(예: 업데이트, 삽입 및 삭제 이상)과 불일치는 작성자 테이블에 의해 발생할 수 있습니다. 데이터베이스에 중복성이 너무 많으면 데이터에 데이터 이상이 발생합니다. 새로운 데이터를 업데이트, 삭제, 삽입하는 데 문제가 있는 경우에도 데이터 이상 현상이 발생합니다. 예를 들어 작성자 테이블에서

  • 테이블에 책을 추가할 수 없을 때까지 새 저자를 추가할 수 없습니다.
  • 데이터베이스에서 책을 완전히 삭제할 때까지 저자를 삭제할 수 없습니다.
  • '작은 것들의 신' 책을 삭제하려고 하면 작가 아이디, 작가, 국적도 함께 삭제됐어요.

위의 문제는 전이적 종속성을 포함하는 모든 관계에서 발생합니다.

전이적 종속성을 제거하여 제3정규형

다음을 고려해 봅시다. 작성자 테이블 세 가지 속성(Author_ID, Author, Author_Nationality)을 사용하고 이 테이블에서 전이적 종속성을 찾아 제거하려고 합니다.

저자 테이블:

작성자_ID 작가 작성자_국적
A1 아룬다티 로이 작은 것의 신 인도
A1 Kiran Desai 손실의 상속 인도
A2 R. K. 나라얀 맬구디의 식인종 인도

위의 Author 테이블은 Transitive 종속성을 갖고 있기 때문에 3NF에 속하지 않습니다. 어떻게 되는지 보자

모니터 화면 크기 확인하는 방법
  • 저자 → 저자_국적 저자 → 저자_국적
  • 작성자_ID → 작성자

따라서 다음과 같은 기능적 종속성도 존재합니다.

  • Authir_ID → Author_Nationality는 위에서 논의한 것과 유사한 패턴을 형성하고 있습니다.

이제 전이적 종속성을 제거하기 위해 해야 할 일은 Author_ID가 더 이상 기능적으로 Author_Nationality에 의존하지 않는 방식으로 Author 테이블을 분할하는 것입니다.

두 개의 테이블을 생성해 보겠습니다. 하나는 { Author_ID, Author}만 포함하고 다른 하나는 {Author_Nationality}를 포함합니다. 새로운 테이블은 다음과 같습니다.

작성자 테이블

작성자_ID 작가
A1 작은 것의 신
A2 손실의 상속
A3 맬구디의 식인종

저자 국적표

작가 작성자_국적
아룬다티 로이 인도
Kiran Desai 인도
R. K. 나라얀 인도

이제 새로운 Author 테이블과 Author Nationality 테이블에는 전이적 종속성이 없으며 관계는 이제 3NF입니다.