Розглянемо співвідношення 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.