Номер поставщика
PNUM
|
Наименование поставщика
PNAME
|
1
|
Фирма 1
|
2
|
Фирма 2
|
3
|
Фирма 3
|
Таблица 2 Отношение "Поставщики"
Номер поставщика
PNUM
|
Номер детали
DNUM
|
Поставляемое количество
VOLUME
|
1
|
1
|
100
|
1
|
2
|
200
|
1
|
3
|
300
|
2
|
1
|
150
|
2
|
2
|
250
|
3
|
1
|
1000
|
Таблица 3 Отношение "Поставки-2"
Определение 1. Отношение находится в нормальной форме Бойса-Кодда (НФБК) тогда и только тогда, когда детерминанты всех функциональных зависимостей являются потенциальными ключами.
Замечание. Если отношение находится в НФБК, то оно автоматически находится и в 3НФ. Действительно, это сразу следует из определения 3НФ.
Отношение "Поставки" не находится в НФБК, т.к. имеются зависимости (PNUM PNAME и PNAME PNUM), детерминанты которых не являются потенциальными ключами.
Для того чтобы устранить зависимость от детерминантов, не являющихся потенциальными ключами, необходимо провести декомпозицию, вынося эти детерминанты и зависимые от них части в отдельное отношение. Отношения "Поставщики" и "Поставки-2", полученные в результате декомпозиции находятся в НФБК.
Замечание. Приведенная декомпозиция отношения "Поставки" на отношения "Поставщики" и "Поставки-2" не является единственно возможной. Альтернативной декомпозицией является декомпозиция на следующие отношения:
Номер поставщика
PNUM
|
Наименование поставщика
PNAME
|
1
|
Фирма 1
|
2
|
Фирма 2
|
3
|
Фирма 3
|
Таблица 4 Отношение "Поставщики"
Наименование поставщика
PNAME
|
Номер детали
DNUM
|
Поставляемое количество
VOLUME
|
Фирма 1
|
1
|
100
|
Фирма 1
|
2
|
200
|
Фирма 1
|
3
|
300
|
Фирма 2
|
1
|
150
|
Фирма 2
|
2
|
250
|
Фирма 3
|
1
|
1000
|
Таблица 5 Отношение "Поставки-3"
На первый взгляд, такая декомпозиция хуже, чем первая. Действительно, наименования поставщиков по-прежнему повторяются, и при изменении наименования поставщика, это наименование придется менять одновременно в нескольких местах (тем более сразу в двух отношениях!). Кажется, что ситуация стала еще хуже, чем была до декомпозиции. Однако такое ощущение возникает от того, что мы интуитивно считаем, что наименования поставщиков могут меняться, а номера - нет. Если же предположить, что номера поставщиков тоже могут меняться (почему бы нет - директор приказал перенумеровать поставщиков!), то первая декомпозиция получается такой же "плохой" как и вторая - повторяющиеся номера придется менять одновременно в нескольких местах и также сразу в двух отношениях.
На самом деле никакого противоречия тут нет. В отношении "Поставки-3" атрибут "Наименование поставщика" (PNAME) является внешним ключом, служащим для связи с отношением "Поставщики". Поэтому, при изменении наименования поставщика, это изменение производится в отношении "Поставщики" и каскадно (см. стратегии поддержания ссылочной целостности в гл. 3) распространяется на отношение "Поставки-3" совершенно так, как изменение номера поставщика каскадно распространяется на отношение "Поставки-2". Поэтому, формально обе декомпозиции совершенно равноправны. В реальной работе разработчик выберет, конечно, первую декомпозицию, но тут важно подчеркнуть, что его выбор основан совсем на других соображениях, не имеющих отношения к формальной теории нормальных форм.
Замечание. Отношение "Поставки-2", полученное в результате декомпозиции имеет всего один потенциальный ключ. Поэтому, для анализа отношения "Поставки-2" не требуется привлекать определение НФБК, достаточно определения 3НФ. Хотя отношение "Поставщики" имеет два потенциальных ключа, но, т.к. других атрибутов в нем нет, оно уже так просто устроено, что упростить его дальше нельзя. Возникает вопрос, имеются ли нетривиальные примеры отношений в НФБК, не находящиеся в 3НФ и не такие простые, как отношение "Поставщики"?
Пример 2. Предположим, что нам по-прежнему необходимо учитывать поставки, но каждый акт поставки должен иметь некоторый уникальный номер (назовем его "сквозной номер поставки"). Отношение может иметь следующий вид:
Номер поставщика
PNUM
|
Номер детали
DNUM
|
Поставляемое количество
VOLUME
|
Сквозной номер поставки
NN
|
1
|
1
|
100
|
1
|
1
|
2
|
200
|
2
|
1
|
3
|
300
|
3
|
2
|
1
|
150
|
4
|
2
|
2
|
250
|
5
|
3
|
1
|
1000
|
6
|
Таблица 6 Отношение "Поставки-с-номером"
Одним потенциальным ключом данного отношения является, как и раньше, пара атрибутов {PNUM, DNUM}. Другим ключом, в силу уникальности сквозного номера, является атрибут NN. В данном отношении имеются следующие функциональные зависимости:
Зависимость атрибутов от первого ключа отношения:
{PNUM, DNUM} VOLUME, {PNUM, DNUM} NN,
Зависимость атрибутов от второго ключа отношения:
NN PNUM, NN DNUM, NN VOLUME,
Зависимости, являющиеся следствием зависимостей от ключей отношения:
{PNUM, DNUM} {VOLUME, NN}, NN {PNUM, DNUM}, NN {PNUM, VOLUME},
NN {DNUM, VOLUME}, NN {PNUM, DNUM, VOLUME}.
Как можно заметить, детерминанты всех зависимостей являются потенциальными ключами, поэтому данное отношение находится в НФБК. Особенностью данного отношения является то, что оно имеет два совершенно независимых потенциальных ключа.
Достарыңызбен бөлісу: |