Функциональная зависимость в СУБД: типы с примерами.
⚡ Умное резюме
Функциональная зависимость — это ограничение, определяющее, как один атрибут связан с другим в СУБД. Она лежит в основе нормализации, выявляя детерминанты и зависимые элементы, и классифицируется на многозначные, тривиальные, нетривиальные и транзитивные зависимости.

Что такое функциональная зависимость?
Функциональная зависимость (ФД) Функциональная зависимость — это ограничение, определяющее связь одного атрибута с другим атрибутом в системе управления базами данных (СУБД). Она помогает поддерживать качество данных в базе данных и играет важную роль в определении различий между хорошим и плохим проектированием базы данных.
Функциональная зависимость обозначается стрелкой «→». Функциональная зависимость Y от X представлена как X → Y. Давайте разберем функциональную зависимость на примере.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
| Число работников | Имя сотрудника | Заработная плата | Город |
|---|---|---|---|
| 1 | Dana | 50000 | Сан-Франциско |
| 2 | Фрэнсис | 38000 | Лондон |
| 3 | Эндрю | 25000 | Токио |
В этом примере, зная номер сотрудника, мы можем получить имя сотрудника, город, зарплату и так далее. Таким образом, можно сказать, что город, имя сотрудника и зарплата функционально зависят от номера сотрудника.
Ключевые термины
Вот несколько ключевых терминов, обозначающих функциональную зависимость в базе данных:
| Ключевые термины | Описание |
|---|---|
| Axiom | Аксиомы — это набор правил вывода, используемых для определения всех функциональных зависимостей в реляционной базе данных. |
| декомпозиция | Правило, которое предполагает, что если у вас есть таблица, содержащая, по-видимому, две сущности, определяемые одним и тем же первичным ключом, вам следует рассмотреть возможность разделения ее на две разные таблицы. |
| Зависимый | Она отображается в правой части диаграммы функциональных зависимостей. |
| определитель | Она отображается в левой части диаграммы функциональных зависимостей. |
| Союз | Это говорит о том, что если две таблицы разделены, но первичный ключ один и тот же, следует рассмотреть возможность их объединения. |
Правила функциональной зависимости (аксиомы Армстронга)
Ниже приведены три наиболее важных правила функциональной зависимости в базе данных. Они известны как аксиомы Армстронга, и все остальные правила вывода могут быть выведены из них.
- Правило рефлексии: Если X — множество атрибутов, а Y — подмножество X, то выполняется условие X → Y.
- Правило расширения: Если выполняется условие X → Y, и C — набор атрибутов, то выполняется и условие XC → YC. Добавление атрибутов не изменяет основную зависимость.
- Правило транзитивности: Подобно правилу транзитивности в алгебре: если выполняется условие X → Y и условие Y → Z, то выполняется и условие X → Z.
Из этих правил выводятся еще три, которые постоянно используются на практике:
- Правление Союза: Если X → Y и X → Z, то X → YZ.
- Правило разложения: Если X → YZ, то X → Y и X → Z.
- Правило псевдотранзитивности: Если X → Y и WY → Z, то WX → Z.
Многократное применение этих правил к набору зависимостей приводит к следующему результату: закрытиеполный набор зависимостей, которые логически следуют за ним. Замыкание набора атрибутов также используется для поиска потенциальных ключей, что напрямую связано с изучением Ключи СУБД.
Виды функциональных зависимостей в СУБД
В системах управления базами данных (СУБД) существует четыре основных типа функциональных зависимостей:
- Многозначная зависимость
- Тривиальная функциональная зависимость
- Нетривиальная функциональная зависимость
- Транзитивная зависимость
Многозначная зависимость в СУБД
Многозначная зависимость возникает в ситуации, когда в одной таблице имеется несколько независимых многозначных атрибутов. Многозначная зависимость — это полное ограничение между двумя наборами атрибутов в отношении, требующее наличия определенных кортежей. Рассмотрим следующий пример.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
| Модель автомобиля | Maf_year | Цвет |
|---|---|---|
| H001 | 2017 | Металлический |
| H001 | 2017 | Зелёная |
| H005 | 2018 | Металлический |
| H005 | 2018 | Blue |
| H010 | 2015 | Металлический |
| H033 | 2012 | Серый |
В этом примере столбцы Maf_year и Color независимы друг от друга, но зависят от Car_model. Эти два столбца называются многозначными зависимыми от Car_model. Это представляется следующим образом:
модель автомобиля → год выпуска автомобиля
модель автомобиля → цвет
Тривиальная функциональная зависимость в СУБД
Тривиальная зависимость — это набор атрибутов, который называется тривиальным, если этот набор атрибутов включен в данный атрибут. Таким образом, X → Y является тривиальной функциональной зависимостью, если Y является подмножеством X. Рассмотрим пример ниже.
| Эмп_ид | Эмп_имя |
|---|---|
| AS555 | Гарри |
| AS811 | Юрий |
| AS999 | Кевин |
Рассмотрим эту таблицу с двумя столбцами, Emp_id и Emp_name. {Emp_id, Emp_name} → Emp_id — это тривиальная функциональная зависимость, поскольку Emp_id является подмножеством {Emp_id, Emp_name}.
Нетривиальная функциональная зависимость в СУБД
Нетривиальная зависимость возникает, когда выполняется условие A → B, и B не является подмножеством A. Если атрибут B не является подмножеством атрибута A, зависимость считается нетривиальной.
| O компании | CEO | Возраст |
|---|---|---|
| Microsoft | Наделла | 51 |
| Сундар Пичаи | 46 | |
| Apple | Тим Кук | 57 |
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
{Компания} → {Генеральный директор} (если мы знаем компанию, мы знаем и имя генерального директора). Но CEO не является подмножеством компании, и поэтому это нетривиальная функциональная зависимость.
Транзитивная зависимость в СУБД
Транзитивная зависимость — это тип функциональной зависимости, которая возникает, когда атрибут косвенно определяется двумя функциональными зависимостями. Рассмотрим пример ниже.
| O компании | CEO | Возраст |
|---|---|---|
| Microsoft | Наделла | 51 |
| Сундар Пичаи | 46 | |
| Алибаба | Джек Ма | 54 |
Компания → Генеральный директор (если нам известна компания, нам известно и имя её генерального директора).
{Генеральный директор} → {Возраст} (если мы знаем генерального директора, мы знаем и его возраст).
Следовательно, по правилу транзитивной зависимости должно выполняться условие {Компания} → {Возраст}, что логично, поскольку, зная название компании, мы можем определить её возраст.
Примечание: транзитивная зависимость может возникать только в отношении, включающем три или более атрибутов.
Что такое нормализация?
Нормализация — это метод организации данных в базе данных, который помогает избежать избыточности данных, а также аномалий при вставке, обновлении и удалении. Это процесс анализа схем отношений на основе их различных функциональных зависимостей и первичного ключа.
Нормализация является неотъемлемой частью теории реляционных баз данных. Она может привести к разделению данных на дополнительные таблицы, так что каждый факт будет храниться только один раз. Полный процесс описан в руководстве по... нормализация базы данных, которая напрямую основана на указанных выше типах зависимостей.
Преимущества функциональной зависимости
- Функциональная зависимость позволяет избежать избыточности данных, поэтому одни и те же данные не повторяются в нескольких местах. база данных.
- Это помогает поддерживать качество данных в базе данных.
- Это помогает определить значение и ограничения баз данных.
- Это помогает выявлять неудачные проекты.
- Это поможет вам найти информацию о структуре базы данных.
