Зависимость - это ограничение, которое применяется или определяет взаимосвязь между атрибутами. Это происходит в базе данных, когда информация, хранящаяся в той же таблице базы данных, однозначно определяет другую информацию, хранящуюся в той же таблице. Вы можете также описать это как отношение, когда знание значения одного атрибута (или набора атрибутов) достаточно, чтобы рассказать вам значение другого атрибута (или набора атрибутов) в той же таблице.
Зависимости баз данных часто смешивают как студентов, так и специалистов по базам данных. К счастью, они не так сложны, как могут показаться. Их можно лучше всего объяснить с помощью нескольких примеров. Здесь мы рассмотрим общие типы зависимостей базы данных.
Зависимости базы данных и функциональные зависимости
Утверждение, что зависимость между атрибутами в таблице является такой же, как и утверждение, что между этими атрибутами существует функциональная зависимость. Если в базе данных есть зависимость, так что атрибут B зависит от атрибута A, вы должны записать это как:
A -> B
Например, в таблице, в которой перечислены характеристики сотрудников, в том числе номер социального страхования (SSN) и имя, можно сказать, что имя зависит от SSN (или SSN -> name), поскольку имя сотрудника может быть однозначно определено из SSN. Однако обратный оператор (name -> SSN) неверен, поскольку более одного сотрудника может иметь одно и то же имя, но всегда иметь разные SSN. Тривиальная функциональная зависимость возникает, когда вы описываете функциональную зависимость атрибута в коллекции атрибутов, которая включает исходный атрибут. Например, {A, B} -> B - тривиальная функциональная зависимость, как {name, SSN} -> SSN. Этот тип функциональной зависимости называется тривиальным, поскольку он может быть получен из здравого смысла. Очевидно, что если вы уже знаете значение B, то значение B может быть однозначно определено этим знанием. Полная функциональная зависимость возникает, когда вы уже отвечаете требованиям для функциональной зависимости, а набор атрибутов в левой части оператора функциональной зависимости больше не может быть уменьшен. Например, {SSN, age} -> name является функциональной зависимостью, но это не полная функциональная зависимость, потому что вы можете удалить возраст из левой части инструкции, не влияя на зависимость. Транзитивные зависимости возникают, когда есть косвенная связь, которая вызывает функциональную зависимость. Например, A -> C - транзитивная зависимость, когда она истинна только потому, что оба A -> B и B -> C верны. Многозначные зависимости возникают, когда наличие одной или нескольких строк в таблице подразумевает наличие одной или нескольких других строк в этой же таблице. Например, представьте себе автомобильную компанию, которая производит многие модели автомобилей, но всегда производит как красные, так и синие цвета каждой модели. Если у вас есть таблица, содержащая название модели, цвет и год каждого автомобиля, которое производит компания, в этой таблице есть многозначная зависимость. Если есть строка для определенного имени модели и года в синем, также должна быть аналогичная строка, соответствующая красной версии этого же автомобиля. Зависимости баз данных важны для понимания, поскольку они обеспечивают основные строительные блоки, используемые в нормализации базы данных, процесс эффективной организации данных в базе данных. Например: Тривиальные функциональные зависимости
Полные функциональные зависимости
Транзитивные зависимости
Многозначные зависимости
Важность зависимостей