Введение в системы БД (542480), страница 106
Текст из файла (страница 106)
Обратите внимание, что эта диаграмма функциональных зависимостей "сложнее" аналогичной диаграммы для переменной- отношения в ЗНФ. Как было сказано в предыдущем разделе, на диаграмме ФЗ для переменной-отношения в ЗНФ стрелки всегда выходят только из потенциальных ключей, тогда как на диаграмме ФЗ для переменной-отношения, которая не находится в ЗНФ (например, на Рис ) ! 5 Фупкчпопазьные зависнпости диаграмме ФЗ для переменной-отношения пеРеиен"~б~гппгпп~нипР1КЯТ Р1КБТ), есть стрелки, начинающиеся с потенциальных ключей, и дополпигпеяьпые стрелки, усложняющие всю картину. Фактически в переменной-отношении Р1КЯТ нарушаются оба условия, указанные в приведенном выше определении ЗНФ.
не все неключевые атрибуты взаимно независимы, поскольку атрибут БТАТЯЯ зависит от атрибута С1Т1 (одна дополнительная стрелка), и не все неключевые атрибуты неприводимо зависимы от первичного ключа, поскольку атрибуты БТАТЯЯ и С1ТТ, каждый в отдельности, зависимы от атрибута Бз (еще две дополнительные стрелки). Для иллюстрации некоторых трудностей, порождаемых этими дополнительными стрелками, на рис.
! !.6 приведен пример данных в переменной-отношении Г1КБТ. Это тот же набор значений, который обычно используется нами в примерах, но значение 30 статуса поставщика с номером 'БЗ' заменено значением 10 в соответствии с новым ограничением, согласно которому значение атрибута С1ТУ определяет значение атрибута ЯТАТЯБ. Возникшая в результате избыточность данных вполне очевидна, поскольку в каждом кортеже для поставщика с номером 'Б!' атрибут С1ТУ имеет значение 'Ьопбоп' и, кроме того, в каждом кортеже со значением 'Ьопбоп' в атрибуте С1ТУ указано значение 20 для атрибута БТАТСБ. Избыточность в переменной-отношении Р1КЯТ приводит к разным аномалиям обновления, получившим такое название по историческим причинам. Под этим понимаются определенные трудности, появляющиеся при выполнении операций обновления 1КЯЕКТ, ЯКАЕТЕ и 0РЕАТЕ.
Для начала рассмотрим избыточность вида 432 Часть Ш. Проектирование базы данньп "поставщик — город", соответствующую функциональной зависимости Я!! -э С1ТУ. Ниже поясняются проблемы, которые возникнут при выполнении каждой из указанных операций обновления. Г1ВЯТ Рис. 11. б, Пример Данных в неременной-отношении Г1лЯТ ° Операция 1МБЕЕТ.
Нельзя поместить в переменную-отношение Г1ЕЯТ информацию о том, что некоторый поставщик находится в определенном городе, не указав сведения хотя бы об одной детали, поставляемой этим поставщиком. Действительно, в таблице на рис, ! !.б нет сведений о поставщике с номером 'Б5' из Афин, поскольку до тех пор, пока этот поставщик не начнет поставку какой- либо детали, для него невозможно будет сформировать значение первичного ключа.
(Как и в разделе 9.4, в этой главе предполагается (достаточно обоснованно), что атрибуты первичных ключей не могут иметь значений, принимаемых по умолчанию.) ° Операция 0ЕЬЕТЕ. Если из переменной-отношения Г1кЯТ удалить кортеж, который является единственным для некоторого поставщика, будет удалена не только информация о поставке поставщиком некоторой детали, но также информация о том, что этот поставщик находится в определенном городе. Например, если из переменной-отношения Г1ЕЯТ удалить кортеж со значением 'Б3' в атрибуте Я!) и значением ' Р2' в атрибуте Р((, будет утрачена информация о том, что поставщик с номером 'Я3' находится в Париже.
(По сути, проблемы удаления и вставки являют собой две стороны одной медали.) Замечание. В действительности проблема заключается в том, что в переменной- отношении Г1ЕБТ содержится слишком много собранной в одном месте информации, поэтому при удалении некоторого кортежа теряется слишком .иного информации. Точнее говоря, переменная-отношение Г1ЯЯТ одновременно содержит информацию и о поставках, и о поставщиках. В результате удаление информации о поставке вызывает также удаление информации о поставщике. Для решения этой проблемы необходимо разделить информацию на несколько частей, т.е.
собрать сведения о поставках в одной переменной-отношении, а о поставщиках — в другой (именно это и будет сделано чуть ниже). Следователь- Глава 11. Дальнейшая нормализация: формы 1НФ, 2НФ, ЗНФ и НФБК 433 но, процедуру нормализации иначе можно неформально охарактеризовать как процедуру разбиения логически несвязанной информации на отдельные переменные-отношения. ° Операция ОРОАТЕ. Название города для каждого поставшика повторяется в переменной-отношении Г1КБТ несколько раз, и эта избыточность приводит к возникновению проблем при обновлении.
Например, если поставшик с номером 'Я1' переместится из Лондона в Амстердам, то необходимо будет отыскать в переменной- отношении Р1ВЯТ все кортежи, в которых значения ' Я1' и '1опг)оп' связаны между собой (для внесения соответствующих изменений), иначе база данных окажется в противоречивом состоянии (в одних кортежах городом поставшика с номером ' Я1' будет Лондон, а в других — Амстердам). Для решения всех этих проблем, как предлагалось выше, необходимо заменить переменную-отношение У1ЕЯТ двумя следующими переменными-отношениями. БЕСОВО ( Я», БТйТОЯ, С1ТТ ) БР » Б», Р», ОТТ ) Диаграммы функциональных зависимостей для этих двух переменных-отношений показаны на рис.
11.7, а наборы данных — на рис. 11.8. Обратиге внимание, что теперь в них имеется и информация о поставшике с номером '85' (в переменной-отношении ЯЕСОЕО, но не в переменной-отношении БР), а содержимое переменной-отношения ЯР теперь в точности совпадает с содержимым нашей обычной переменной-отношения поставок. Рис. ! й 7. Функциональные зависимости в пе- ременных-отношениях БЕСОЕО и БР Легко убедиться, что измененная подобным образом структура данных позволяет преодолеть все перечисленные выше проблемы, связанные с выполнением операций обновления.
° Операция 1ЕБЕЕТ. Теперь информацию о том, что поставщик с номером 'Я5' находится в Афинах, можно поместить в базу данных, вставив соответствующий кортеж в переменную-отношение БЕСОЕО, причем даже в том случае, если он в 'настоящее время не поставляет никаких деталей. ° Операция ПЕЬЕТЕ. Теперь уже можно исключить информацию о новинке, в которой соединены сведения о поставшике с номером 'Б3' и о детали с номером 'Р2'.
Достаточно удалить соответствуюший кортеж из переменной-отношения БР, причем информация о том, что поставшик с номером 'ЯЗ' находится в Париже, не у|рачивается. 434 Часть 111. Проектирование базы данных Рис. )).8. Пример данных в пвременных-опичашениях ЯЕСО)РР и ЯР ° Операция ОРОАТЕ. В переработанной структуре название города для каждого поставщика указывается всего один раз, поскольку существует только одни кортеж для данного поставщика в переменной-отношении ЯЕСОЕО (атрибут Я) является первичным ключом этой переменной-отношения).
Иначе говоря, избыточность данных Яв-С1ТУ устранена, Благодаря этому теперь можно изменить название города Лондон для поставщика с номером 'Я1' на Амстердам, не рискуя привести базу данных в несогласованное состояние, поскольку достаточно изменить название города в единственном кортеже переменной-отношения ЯЕСОйО. Сравнивая рис. 11.7 и 11.5,можно заметить, что суть разбиения переменной-отношения Р1ЕЯТ на переменные-отношения ЯЕСОЕО и ЯР состояла в исключении зависимостей, которые не являлись неприводимыми.
Именно благодаря этому в новом варианте удается избежать упомянутых ранее трудностей. Интуитивно понятно, что в переменной-отношении Р1НЯТ атрибут СТТУ описывал не сущность, которая идентифицируется первичным ключом (поставка), а пастави)ика, выполнявшего эту поставку (аналогичное утверждение можно слелать и об атрибуте ЯТАТОЯ). Смешивание этих двух типов информации в одной переменной-отношении и стало причиной возникновения описанных выше проблем.
Теперь пришло время дать определение второй нормальной формыб. ° Вторая нормальная форма (в определении предполагается наличие только одного потезщиачьного юзюча, который и является первичным ключом отношения). Переменная-отношение находится во второй нормальной форме тогда и только тогда, ко~да она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от ее первичного ключа. Обе переменные-отношения (и ЯЕСОМО, и ЯР) находятся во второй нормальной форме (их первичные ключи — (Я$) и (ЯР, Р$) соответственно), тогда как переменная-отношение Р1ЕЯТ не находится в этой форме.
Всякую переменную-отношение, которая находится в пер- В Строго говоря, 2НФ может быть определена только по отношению к заданному множеству зависимостей, но в неформальном контексте зта особенность обычно игнорируется. Аналогичные заиечания приложимы также кв всем нормальным формам (краме, конечно же, первой нормальной формы). Глава 11. Дальнейшая нормализаг(ия: формы 1НФ, 2НФ, ЗНФ и НФБК 435 вой нормальной форме, но не находится во второй, всегда можно свести к эквивалентному множеству переменных-отношений, находящихся в 2НФ. Этот процесс заключается в замене переменной-отношения в ! НФ подходящим набором проекций, эквивалентных исходной переменной-отношению в том смысле, что ее при необходимости можно будет восстановить с помощью обратной операции соединения данных проекций. В нашем примере переменные- отношения БЕСОВО и ЯР— это проекции переменной-отношения Р1КБТ, которая является соединением переменных-отношений ЯЕСОКО и ЯР по атрибуту Я(".