logo

Транзитивна залежність у СУБД

Розглянемо співвідношення R(A B C). Тут A, B і C відомі як атрибут відношення R. Коли виникає така умова; тоді в СУБД виникає транзитивна залежність. Умови A → B, B → C. Отже, умова стає A → C. Іншими словами, ми можемо сказати, що коли залежності створюються двома функціональними залежностями, тоді функціональні залежності стають транзитивними залежностями.

Що таке транзитивна залежність?

Розглянемо співвідношення R(A B C). Тут A, B і C відомі як атрибут відношення R. Коли виникає така умова; тоді в СУБД виникає транзитивна залежність. Умови A → B, B → C. Отже, умова стає A → C. у транзитивних функціональних залежностях залежна напряму залежить від детермінанта.

Давайте розберемося з транзитивними залежностями за допомогою наступного прикладу.

Author_ID автор книга Автор_Національність
A1 Арундаті Рой Бог дрібниць Індія
A1 Кіран Десаї Успадкування втрати Індія
A2 Р. К. Нараян Людожер Малгуді Індія

У наведеній вище авторській таблиці ми отримуємо це.

    Книга → Автор:Тут атрибут автора визначається атрибутом книги. Якщо хтось знає назву книги, він також може дізнатися ім’я автора.Автор → Автор_Національність:Якщо хтось знає ім'я автора, він також може дізнатися національність автора.Книга → Автор_Національність: Якщо хтось знає назву книги, він також може дізнатися національність автора.

Якщо ми уважно подивимося на розглянуті вище функціональні залежності, то виявимо наступну закономірність.

  • A → B і B → C B→C; отже, A → CA → C.
  • A → Книга, B → Автор B → Автор і C → Автор_Національність C→Author_Nationality

Припустимо, ми застосували третю нормальну форму (3NF) у наведеній вище авторській таблиці. У цьому випадку транзитивну залежність авторської таблиці потрібно видалити, а процес видалення транзитивних залежностей бази даних називається процесом нормалізації.

Як уникнути транзитивних залежностей?

Давайте ще раз розглянемо наведену вище авторську таблицю та побачимо, який тип проблеми виникає під час створення таблиці.

Таблиця авторів:

Author_ID автор книга Автор_Національність
A1 Арундаті Рой Бог дрібниць Індія
A1 Кіран Десаї Успадкування втрати Індія
A2 Р. К. Нараян Людожер Малгуді Індія

Аномалії даних (наприклад, аномалії оновлення, вставки та видалення) і невідповідність можуть бути спричинені авторською таблицею. Якщо в базі даних занадто багато надмірностей, у даних виникають аномалії. Аномалії даних також виникають, коли виникає проблема з оновленням, видаленням і вставленням нових даних. Наприклад, в авторській таблиці-

  • Ми не можемо додати нового автора, поки не зможемо додати книгу до таблиці.
  • Ми не можемо видалити автора, поки повністю не видалимо книгу з бази даних.
  • Якщо ми хочемо видалити книгу «Бог дрібниць», ідентифікатор автора, автор і національність також були видалені.

Зазначені вище проблеми виникають у будь-якому зв’язку, який містить перехідні залежності.

Третя нормальна форма шляхом видалення транзитивної залежності

Давайте розглянемо Авторський стіл з трьома атрибутами (Author_ID, Author, Author_Nationality) і спробуйте знайти та усунути транзитивну залежність із цієї таблиці,

Таблиця авторів:

Author_ID автор книга Автор_Національність
A1 Арундаті Рой Бог дрібниць Індія
A1 Кіран Десаї Успадкування втрати Індія
A2 Р. К. Нараян Людожер Малгуді Індія

Наведена вище авторська таблиця не входить до 3NF, оскільки вона має Транзитивну залежність. Давайте подивимось як

конвертувати об'єкт java в json
  • Автор → Автор_Національність Автор → Автор_Національність
  • Author_ID → Автор

Тому також існує наступна функціональна залежність:

  • Authir_ID → Author_Nationality формує шаблон, подібний до того, що ми обговорювали вище.

Тепер, щоб усунути транзитивну залежність, все, що нам потрібно зробити, це розділити таблицю Author's таким чином, щоб Author_ID більше не залежав функціонально від Author_Nationality.

Давайте створимо дві таблиці: одна містить лише { Author_ID, Author}, а інша — {Author_Nationality}. Нові таблиці виглядатимуть так,

Авторська таблиця

Author_ID автор
A1 Бог дрібниць
A2 Успадкування втрати
A3 Людожер Малгуді

Таблиця національності автора

автор Автор_Національність
Арундаті Рой Індія
Кіран Десаї Індія
Р. К. Нараян Індія

Тепер нова таблиця Author і Author Nationality не містить транзитивних залежностей, а відношення тепер у 3NF.