Функциональная зависимость в СУБД: типы с примерами.

⚡ Умное резюме

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

  • ➡️ Основная идея: В выражении X → Y определитель X фиксирует значение зависимого параметра Y, обозначаемое стрелкой.
  • 🏷️ Ключевые термины: Термины «детерминант», «зависимый», «аксиома», «декомпозиция» и «объединение» описывают, как называются и обрабатываются зависимости.
  • 📐 Аксиомы Армстронга: Рефлексивность, расширение и транзитивность позволяют вывести любую зависимость, которую логически подразумевает множество.
  • 🔀 Четыре типа: Многозначные, тривиальные, нетривиальные и транзитивные зависимости описывают каждое из различных типов взаимоотношений между атрибутами.
  • 🧹 Ссылка на нормализацию: Зависимости обеспечивают нормализацию, которая устраняет избыточность и аномалии обновлений.
  • 🔑 Закрытие: Атрибутное замыкание раскрывает потенциальные ключи и указывает, выполняется ли зависимость.
  • ✅ Преимущество: Наличие корректных зависимостей свидетельствует о хорошем проектировании и отличает качественные схемы от некачественных.

Функциональная зависимость в СУБД

Что такое функциональная зависимость?

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

Функциональная зависимость обозначается стрелкой «→». Функциональная зависимость 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
Google Сундар Пичаи 46
Apple Тим Кук 57

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

{Компания} → {Генеральный директор} (если мы знаем компанию, мы знаем и имя генерального директора). Но CEO не является подмножеством компании, и поэтому это нетривиальная функциональная зависимость.

Транзитивная зависимость в СУБД

Транзитивная зависимость — это тип функциональной зависимости, которая возникает, когда атрибут косвенно определяется двумя функциональными зависимостями. Рассмотрим пример ниже.

O компании CEO Возраст
Microsoft Наделла 51
Google Сундар Пичаи 46
Алибаба Джек Ма 54

Компания → Генеральный директор (если нам известна компания, нам известно и имя её генерального директора).

{Генеральный директор} → {Возраст} (если мы знаем генерального директора, мы знаем и его возраст).

Следовательно, по правилу транзитивной зависимости должно выполняться условие {Компания} → {Возраст}, что логично, поскольку, зная название компании, мы можем определить её возраст.

Примечание: транзитивная зависимость может возникать только в отношении, включающем три или более атрибутов.

Что такое нормализация?

Нормализация — это метод организации данных в базе данных, который помогает избежать избыточности данных, а также аномалий при вставке, обновлении и удалении. Это процесс анализа схем отношений на основе их различных функциональных зависимостей и первичного ключа.

Нормализация является неотъемлемой частью теории реляционных баз данных. Она может привести к разделению данных на дополнительные таблицы, так что каждый факт будет храниться только один раз. Полный процесс описан в руководстве по... нормализация базы данных, которая напрямую основана на указанных выше типах зависимостей.

Преимущества функциональной зависимости

  • Функциональная зависимость позволяет избежать избыточности данных, поэтому одни и те же данные не повторяются в нескольких местах. база данных.
  • Это помогает поддерживать качество данных в базе данных.
  • Это помогает определить значение и ограничения баз данных.
  • Это помогает выявлять неудачные проекты.
  • Это поможет вам найти информацию о структуре базы данных.

Часто задаваемые вопросы (FAQ)

Детерминант — это атрибут слева от стрелки, который определяет значение. Зависимый атрибут — это атрибут справа, значение которого определяется. В цепочке X → Y, X определяет Y.

Функциональная зависимость фиксирует единственное значение для зависимого элемента. Многозначная зависимость допускает набор независимых значений, поэтому ей необходим собственный атрибут, и она приводит к четвертой нормальной форме.

Вычислите замыкание набора атрибутов, используя зависимости. Если замыкание включает каждый атрибут отношения, то этот набор является суперключом; минимальное такое множество является потенциальным ключом.

Да. Алгоритмы обнаружения зависимостей, в некоторых случаях с использованием ИИ, сканируют набор данных и предлагают варианты зависимостей. Разработчик должен подтвердить их, поскольку закономерность, верная в выборочных данных, может не соответствовать правилу.

Она хранит информацию о неключевом атрибуте, поэтому её обновление чревато аномалиями. Удаление транзитивных зависимостей — это именно то, что требуется для третьей нормальной формы, которая хранит все факты в одном месте.

Подведем итог этой публикации следующим образом: