функциональные зависимости в базах данных SQL Нормальные формы - PullRequest
4 голосов
/ 10 декабря 2010

В базах данных SQL есть две функциональные зависимости.

a) Частичная функциональная зависимость: неключевой столбец зависит от некоторых, но не от всех столбцов в составном первичном ключе.

b) Переходные функциональные зависимости: любой неключевой столбец зависит от других неключевых столбцов.

Для хорошей базы данных SQL.

Правило 1: столбцы содержат только атомарные значения

Правило 2: Нет повторяющихся групп данных

Правило 3: не иметь частичных зависимостей

Правило 4: не иметь транзитивных зависимостей

Я понял требования правил 1 и 2, зачем нам нужны правила 3 ​​и 4 вместо того, чтобы говорить, что столбец no не должен зависеть от других столбцов. Почему существуют два отдельных правила (3 и 4)?

Источник: Head First SQL

Заранее спасибо!

1 Ответ

7 голосов
/ 10 декабря 2010

Хороший вопрос. Чисто по историческим и педагогическим причинам эти двое часто разделяются.

Вторая нормальная форма (2NF) связана с устранением только частичных ключевых зависимостей. Само по себе 2NF обычно не особенно важно, потому что третья нормальная форма, нормальная форма Бойса-Кодда и более высокие нормальные формы также устраняют те же самые частичные зависимости ключа, и эти NF (> 2NF) обычно являются желаемой целью при проектировании базы данных. Однако обычной практикой является обучение нормализации с использованием процесса разложения . Методом декомпозиции частичные ключевые зависимости обычно рассматриваются в первую очередь. В действительности это редко делается большинством практиков, которые часто рассматривают все зависимости одновременно.

Определения нормальных форм выше 2NF не обязательно упоминают частичные зависимости ключей как особый случай вообще. Нормальную форму Бойса-Кодда можно кратко суммировать как означающую, что каждый нетривиальный функциональный детерминант является суперключем - иными словами, нет нетривиальных FD (любого рода) для чего-либо, кроме ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...