Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Нормализация отношений модели данных
Функциональная зависимость — концепция, лежащая в основе многих вопросов, связанных с реляционными базами данных, включая, в частности, их проектирование. Математически представляет бинарное отношение между множествами атрибутов данного отношения и является, по сути, связью типа «один ко многим». Их использование обусловлено тем, что они позволяют формально и строго решить многие проблемы. Нормальная форма — свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности, потенциально приводящей к логически ошибочным результатам выборки или изменения данных. Нормальная форма определяется как совокупность требований, которым должно удовлетворять отношение. Первая нормальная форма (1NF) – переменная отношения находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов. В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение. Что же касается различных таблиц, то они могут не быть правильными представлениями отношений и, соответственно, могут не находиться в 1NF. В соответствии с определением К. Дж. Дейта для такого случая, таблица нормализована (эквивалентно — находится в первой нормальной форме) тогда и только тогда, когда она является прямым и верным представлением некоторого отношения. Конкретнее, рассматриваемая таблица должна удовлетворять следующим пяти условиям: · Нет упорядочивания строк сверху-вниз (другими словами, порядок строк не несет в себе никакой информации). · Нет упорядочивания столбцов слева-направо (другими словами, порядок столбцов не несет в себе никакой информации). · Нет повторяющихся строк. · Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего). · Все столбцы являются обычными. «Обычность» всех столбцов таблицы означает, что в таблице нет «скрытых» компонентов, которые могут быть доступны только в вызове некоторого специального оператора взамен ссылок на имена регулярных столбцов, или которые приводят к побочным эффектам для строк или таблиц при вызове стандартных операторов. Таким образом, например, строки не имеют идентификаторов кроме обычных значений потенциальных ключей (без скрытых «идентификаторов строк» или «идентификаторов объектов»). Они также не имеют скрытых временных меток Вторая нормальная форма (2NF) – переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от её потенциального ключа. Неприводимость означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, от которого можно также вывести данную функциональную зависимость. Для неприводимой функциональной зависимости часто используется эквивалентное понятие «полная функциональная зависимость». Если потенциальный ключ является простым, то есть состоит из единственного атрибута, то любая функциональная зависимость от него является неприводимой (полной). Если потенциальный ключ является составным, то согласно определению второй нормальной формы в отношении не должно быть неключевых атрибутов, зависящих от части составного потенциального ключа. Вторая нормальная форма по определению запрещает наличие неключевых атрибутов, которые вообще не зависят от потенциального ключа. Таким образом, вторая нормальная форма в том числе запрещает создавать отношения как несвязанные (хаотические, случайные) наборы атрибутов. Третья нормальная форма (3NF) – Переменная отношения R находится в 3NF тогда и только тогда, когда выполняются следующие условия: R находится во второй нормальной форме. Ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа R. Пояснения к определению: Неключевой атрибут отношения R — это атрибут, который не принадлежит ни одному из потенциальных ключей R. Функциональная зависимость множества атрибутов Z от множества атрибутов X (записывается X → Z, произносится «икс определяет зет») является транзитивной, если существует такое множество атрибутов Y, что X → Y и Y → Z. При этом ни одно из множеств X, Y и Z не является подмножеством другого, то есть функциональные зависимости X → Z, X → Y и Y → Z не являются тривиальными. Определение 3NF, эквивалентное определению Кодда, но по-другому сформулированное, дал Карло Заниоло в 1982 году. Согласно ему, переменная отношения находится в 3NF тогда и только тогда, когда для каждой из её функциональных зависимостей X → A выполняется хотя бы одно из следующих условий: Х содержит А (то есть X → A — тривиальная функциональная зависимость) Х — суперключ А — ключевой атрибут (то есть А входит в состав потенциального ключа). Определение Заниоло четко определяет разницу между 3NF и более строгой нормальной формой Бойса-Кодда (НФБК): НФБК исключает третье условие («А — ключевой атрибут»). Проведем нормализацию полученной модели данных. Рассмотрим отношение ПоставщикиКниг. В результате концептуального проектирования получим реляционную схему этого отношения: Поставщики книг (КодПоставщика, НаимПоставщика, ИННпост, ЮрАдресПост, БанкПост, НомСчётаПост ). Проверим его на соответствие 1НФ. Так как значения всех атрибутов атомарны, значит отношение ПоставщикиКниг соответствует 1НФ. Проверим на соответствие 2НФ. Отношение ПоставщикиКниг имеет 2НФ, так как все не ключевые атрибуты зависят от первичного ключа. Проверим, находится ли отношение в 3НФ. Так как отношение ПоставщикиКниг не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Поставщики книг (КодПоставщика, НаимПоставщика, ИННпост, ЮрАдресПост, БанкПост, НомСчётаПост ) Рассмотрим отношение Книги. В результате концептуального проектирования получили реляционную схему отношения Книги: Книги (КодКниги, Название, Автор, Издательство, ГодИзд, КолСтр, СтоимПриобр, КрСодерж, КомпактД) Проверим его на соответствие 1НФ. Значения всех атрибутов атомарны, поэтому отношение имеет 1НФ. Отношение Книги имеет 2НФ, так как все не ключевые атрибуты зависят от несоставного первичного ключа. Проверим его на соответствие 3НФ. Так как отношение Книги не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Книги (КодКниги, Название, Автор, Издательство, ГодИзд, КолСтр, СтоимПриобр, КрСодерж, КомпактД). Рассмотрим отношение Счёт-фактуры: В результате концептуального проектирования получили реляционную схему этого отношения: Счёт-фактуры (УникНомер, Дата, Код покупателя) Проверим его на соответствия 1НФ. Значения всех атрибутов атомарны, поэтому отношение имеет 1НФ. Отношение Счёт-фактуры имеет 2НФ, так как все не ключевые атрибуты зависят от несоставного первичного ключа. Так как отношение Счёт-фактуры не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Счёт-фактуры (УникНомер, Дата, КодПокупателя). Рассмотрим отношение Накладные: В результате концептуального проектирования получили реляционную схему этого отношения: Накладные (КодНакл, КодПоставщика, ДатаНакл) Проверим его на соответствия 1НФ. Значения всех атрибутов атомарны, поэтому отношение имеет 1НФ. Отношение Накладные имеет 2НФ, так как все не ключевые атрибуты зависят от несоставного первичного ключа. Так как отношение Накладные не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Накладные (КодНакл, КодПоставщика, ДатаНакл) Рассмотрим отношение Покупатели: В результате концептуального проектирования получили реляционную схему этого отношения: Покупатели (КодПокупателя, НазвОрг, ЮрАдресПокуп, ИННпокуп, ФИО, Телефон, БанкПокуп, НомСчётаПокуп). Проверим его на соответствия 1НФ. Значения всех атрибутов атомарны, поэтому отношение имеет 1НФ. Отношение Покупатели имеет 2НФ, так как все не ключевые атрибуты зависят от несоставного первичного ключа. Так как отношение Покупатели не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Покупатели (КодПокупателя, НазвОрг, ЮрАдресПокуп, ИННпокуп, ФИО, Телефон, БанкПокуп, НомСчётаПокуп). Рассмотрим отношение Строки счёт-фактур: В результате концептуального проектирования получили реляционную схему этого отношения: Строки счёт-фактуры (КодКниги, УникНомер, Количество) Проверим его на соответствия 1НФ. Значения всех атрибутов атомарны, поэтому отношение имеет 1НФ. Отношение Строки счёт-фактур имеет 2НФ, так как все не ключевые атрибуты зависят от несоставного первичного ключа. Так как отношение Строки счёт-фактур не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Строки счёт-фактуры (КодКниги, УникНомер, Количество). Рассмотрим отношение Строки накладных: В результате концептуального проектирования получили реляционную схему этого отношения: Строки накладных (КодКниги, КодНакл, КоличествоКниг) Проверим его на соответствия 1НФ. Значения всех атрибутов атомарны, поэтому отношение имеет 1НФ. Отношение Строки накладных имеет 2НФ, так как все не ключевые атрибуты зависят от несоставного первичного ключа. Так как отношение Строки накладных не имеет транзитивных зависимостей, то оно имеет 3НФ. В результате проверки на соответствия нормальным формам мы получаем: Строки накладных (КодКниги, КодНакл, КоличествоКниг). Получили нормализованную модель данных: · Поставщики книг (КодПоставщика, НаимПоставщика, ИННпост, ЮрАдресПост, БанкПост, НомСчётаПост ) · Книги (КодКниги, Название, Автор, Издательство, ГодИзд, КолСтр, СтоимПриобр, КрСодерж, КомпактД) · Накладные (КодНакл, КодПоставщика, ДатаНакл) · Строки накладных (КодКниги, КодНакл, КоличествоКниг) · Покупатели (КодПокупателя, НазвОрг, ЮрАдресПокуп, ИННпокуп, ФИО, Телефон, БанкПокуп, НомСчётаПокуп) · Счёт-фактуры (УникНомер, КодПокупателя, Дата) · Строки счёт-фактуры (КодКниги, УникНомер, Количество) Популярное:
|
Последнее изменение этой страницы: 2016-08-24; Просмотров: 672; Нарушение авторского права страницы