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. 나라얀 | 맬구디의 식인종 | 인도 |
위의 작성자 테이블에서 우리는 그것을 얻습니다.
위에서 설명한 기능적 종속성을 자세히 살펴보면 다음과 같은 패턴을 찾을 수 있습니다.
- 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입니다.