Программирование >>  Хронологические базы данных 

1 ... 131 132 133 [ 134 ] 135 136 137 ... 348


Итак, ниже дается предварительное определение ЗНФ.

Третья нормальная форма (очень неформальное определение). Переменная-отношение находится,в ЗНФ тогда и только тогда, когда ее неключевые атрибуты (если они вообще есть) являются:

а) взаимно независимыми;

б) неприводимо зависимыми от первичного ключа.

Понятия неключевые атрибуты и взаимно независимые атрибуты поясняются ниже.

Неключевой атрибут - это атрибут, который не входит в состав первичного ключа рассматриваемой переменной-отношения.

Два или более атрибутов называются взаимно независимыми, если ни один из них функционально не зависит от какой-либо комбинации остальных атрибутов. Подобная независимость подразумевает, что каждый такой атрибут может обновляться независимо от значений остальных атрибутов.

Например, согласно приведенному ниже определению переменная-отношение Р (переменная-отношение деталей) находится в ЗНФ, а именно: атрибуты PNAME (название детали), COLOR (цвет), WEIGHT (вес) и CITY (город) независимы (т.е. цвета деталей можно менять, не изменяя их вес и т.д.) и неприводимо зависимы по отношению к первичному ключу {Р} (номер детали).

Такое неформальное определение ЗНФ может быть интерпретировано следуюшим, еше более неформальным образом.

Третья нормальная форма (еще более нефор.мальное определение). Переменная-отношение находится в ЗНФ тогда и только тогда, когда каждый кортеж состоит из значения первичного ключа, идентифицирующего некоторую сущность, и набора из нуля или более взаимно независимых атрибутов, некоторым образом описывающих эту сущность.

К переменной-отношению Р применимо и это определение, поскольку каждый кортеж переменной-отношения Р состоит из значения первичного ключа (номер детали), идентифицирующего некоторую деталь в реальном мире, и четырех дополнительных взаимно независимых значений (название, цвет, вес детали и город, в котором она находится), описывающих отдельные свойства детали.

Теперь можно вернуться к описанию процедуры нормализации и дать определение первой нормальной формы.

Первая нормальная форма. Переменная-отношение находится в 1НФ тогда и только тогда, когда в любом допустимом значении этой переменной-отношения каждый ее кортеж содержит только одно значение для каждого из атрибутов.

Фактически в этом определении всего лишь утверждается, что все переменные-отношения всегда находятся в 1НФ, что, несомненно, верно. Однако переменная-отношение, которая находится только в 1НФ (т.е. не находится ни во второй, ни в третьей нормальной форме), обладает структурой, не совсем желательной по некоторым причинам. Для иллюстрации этого факта допустим, что информация о поставщиках и поставках содержится не в двух переменных-отношениях S и SP, а в одной, имеющей следующую структуру.



FIRST { St, STATUS, CITY, Pt, QTY } PRIMARY KEY { St, Pt }

Это расширенная версия переменной-отношения SCP, приведенной выше, в разделе 11.1. Ее атрибуты имеют тот же смысл, что и ранее, за исключением следующего дополнительного Офаничения, специально введенного в этом примере.

CITY -> STATUS

(Иными словами, атрибут STATUS функционально зависим от атрибута CITY; и смысл этого Офаничения состоит в том, что статус поставщика определяется его местонахождением, например все поставщики из Лондона должны иметь статус 20.) Кроме того, для упрощения атрибут SNAME далее будет игнорироваться. Первичным ключом переменной-отношения FIRST является комбинация атрибутов {St, Pt}, а диафамма ее функциональных зависимостей будет иметь вид, представленный на рис. 11.5.

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

CITY

STATUS

Рис 115 Функциональные зависимости в переменной-отношении FIRST

циальных ключей, и дополнительные стрелки, усложняющие всю картину. Фактически в переменной-отношении FIRST нарушаются оба условия, указанные в приведенном выше определении ЗНФ. не все неключевые атрибуты взаимно независимы, поскольку атрибут STATUS зависит от атрибута CITY (одна дополнительная стрелка), и не все неключевые атрибуты неприводимо зависимы от первичного ключа, поскольку атрибуты STATUS и CITY, каждый в отдельности, зависимы от атрибута St (еще две дополнительные стрелки).

Для иллюстрации некоторых трудностей, порождаемых этими дополнительными стрелками, на рис. 11.6 приведен пример данных в переменной-отношении FIRST. Это тот же набор значений, который обычно используется нами в примерах, но значение 30 статуса поставщика с номером S3 заменено значением 10 в соответствии с новым ограничением, согласно которому значение атрибута CITY определяет значение атрибута STATUS. Возникшая в результате избыточность данных вполне очевидна, поскольку в каждом кортеже для поставщика с номером S1 атрибут CITY имеет значение London и, кроме того, в каждом кортеже со значением London в атрибуте CITY указано значение 20 для атрибута STATUS.

Избыточность в переменной-отношении FIRST приводит к разным аномалиям обновления, получившим такое название по историческим причинам. Под этим понимаются определенные трудности, появляющиеся при выполнении операций обновления INSERT, DELETE и UPDATE. Для начала рассмотрим избыточность вида



поставщик-город , соответствующую функциональной зависимости SI -> CITY. Ниже поясняются проблемы, которые возникнут при выполнении каждой из указанных операций обновления.

FIRST

STATUS

CITY

London

London

London

London

London

London

Paris

Paris

Paris

London

London

London

Puc. 11.6. Пример данных в переменной-отношении FIRST

Операция INSERT. Нельзя поместить в переменную-отнощение FIRST информацию о том, что некоторый поставщик находится в определенном городе, не указав сведения хотя бы об одной детали, поставляемой этим поставщиком. Действительно, в таблице на рис. 11.6 нет сведений о поставщике с номером S5 из Афин, поскольку до тех пор, пока этот поставщик не начнет поставку какой-либо детали, для него невозможно будет сформировать значение первичного ключа. (Как и в разделе 9.4, в этой главе предполагается (достаточно обоснованно), что атрибуты первичных ключей не могут иметь значений, принимаемых по умолчанию.)

Операция DELETE. Если из переменной-отнощения FIRST удалить кортеж, который является единственным для некоторого поставщика, будет удалена не только информация о поставке поставщиком некоторой детали, но также информация о том, что этот поставщик находится в определенном городе. Например, если из переменной-отнощения FIRST удалить кортеж со значением S3 в атрибуте St и значением Р2 в атрибуте Pt, будет утрачена информация о том, что поставщик с номером S3 находится в Париже. (По сути, проблемы удаления и вставки являют собой две стороны одной медали.)

Замечание. В действительности проблема заключается в том, что в переменной-отнощении FIRST содержится слишком много собранной в одном месте информации, поэтому при удалении некоторого кортежа теряется слишком много информации. Точнее говоря, переменная-отнощение FIRST одновременно содержит информацию и о поставках, и о поставщиках. В результате удаление информации о поставке вызывает также удаление информации о поставщике. Для решения этой проблемы необходимо разделить информацию на несколько частей, т.е. собрать сведения о поставках в одной переменной-отношении, а о поставщиках - в другой (именно это и будет сделано чуть ниже). Следователь-



1 ... 131 132 133 [ 134 ] 135 136 137 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика