Введение в модель данных SQL




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


Приведенный набор правил является достаточно грубым. В стандарте SQL:1999 он уточняется набором дополнительных правил, устанавливающих восприимчивость различных языковых конструкций к операциям обновления и вставки. В основе этих правил лежит понятие функциональной зависимости (Functional Dependency - FD, см. лекцию 6). Полагая, что в целом понятие функциональной зависимости уже не должно вызывать у читателей каких-либо затруднений, приведем несколько дополнительных определений, требуемых для понимания подхода, используемого в SQL:1999.

  • Пусть S обозначает некоторое множество столбцов таблицы T, а SS обозначает некоторое подмножество S (SS S). Тогда по первой аксиоме Армстронга (см. раздел "Функциональные зависимости" лекции 6) SSS. В терминологии SQL:1999 эта FD называется аксиоматической.Все ФЗ, не являющиеся аксиоматическими, называются неаксиоматическими.

  • Все аксиоматические FD являются известными FD. В стандарте определяются правила определения других известных FD. Кроме того, стандарт оставляет свободу для реализаций SQL в пополнении этой системы правил с целью нахождения известных FD, не специфицированных в стандарте.
  • Если некоторый столбец C1 виртуальной таблицы T1 (порождаемой таблицы или представления) определяется путем ссылки на столбец C2 некой другой (базовой или виртуальной) таблицы T2, на основе которой порождается T1, то C1 является двойником C2. Более точно, C1 является двойником C2 в соответствии с таблицей T2.
  • Понятие двойников расширяется на множества столбцов. Если некоторое множество столбцов S1 виртуальной таблицы T1 определяется (путем отображения "один-в-один") множеством столбцов S2 определяющей таблицы T2, и каждый столбец из множества S1 является двойником соответствующего столбца из множества S2, то S1 называется двойником S2 в соответствии с таблицей T2.
  • Если ни в одном из столбцов возможного ключа (набора столбцов, специфицированного в неоткладываемом ограничении уникальности) не допускается наличие неопределенных значений, то это множество столбцов называется BUC-множеством (акроним BUC происходит от Base table Unique Constraint).Любое множество столбцов, являющееся двойником BUC-множества, также есть BUC-множество, так что это свойство распространяется через различные выражения, производящие виртуальные таблицы. Если имеются два множества столбцов S1 и S2, такие, что S1S2, S1S2, и S2 является BUC-множеством, то и S1 является BUC-множеством. Могут существовать таблицы, у которых BUC-множество является пустым. Такая таблица может содержать не более однойстроки4). С другой стороны, могут существовать таблицы, у которых вообще отсутствуют BUC-множества5).




  • Содержание  Назад  Вперед