- •Проектирование баз данных. Лекция 1. Введение. Банки и базы данных. Архитектура субд.
- •Хранимая база данных (Внутренняя модель)
- •Понятие проектирования баз данных. Различные подходы к проектированию бд.
- •Различные подходы к проектированию данных.
- •Сетевая модель данных.
- •Лекция 2.
- •Реляционные операции над отношениями.
- •Лекция 3. Аномалии хранения данных.
- •Функциональная зависимость.
- •Концептуальное проектирование данных. Нормализация. Понятие функциональной зависимости. Теорема Хита.
- •Теорема Хита.
- •Лекция 4. Пятая нф. Универсальное отношение. I и II нф.
- •Первая нормальная форма.
- •Вторая нормальная форма.
- •Третья нормальная форма. Транзитивные зависимости.
- •Лекция 5. Нормальная форма Бойса-Кодда. Четвертая нормальная форма. «Перенормализованные» модели данных.
- •Четвертая нормальная форма.
- •«Перенормализованные» модели данных.
- •Пример проектирования бд.
- •Отношение “Аптека”
- •Отношение “Лекарство”
- •Отношение “Наличие лекарств”
- •Отношение “Поставщик”
- •Отношение “Лицензия поставщика”
- •Отношение “Запрос на поставку”
- •Лекция 6. Проектирование в терминах «Сущность – связь»
- •Сущности и связи.
- •Классификация связей
- •Предварительные отношения для бинарных связей степени 1:1.
- •Лекция 7. Предварительные отношения для степени связи 1:n и m:n.
- •Предварительные отношения для степени связи m:n.
- •Лекция 14. Предварительные отношения для связей высших порядков. Использование ролевых отношений.
- •Студент
- •Использование ролевых отношений.
- •Рабочий
- •Подчиненный
- •Лекция 8. Развитой пример применения e-r проектирования.
- •Сопоставление методик нормализации и e-r проектирования. Физическое проектирование.
- •Физическое проектирование.
- •Ограничения целостности.
- •Заключение.
Концептуальное проектирование данных. Нормализация. Понятие функциональной зависимости. Теорема Хита.
Следует сразу же сказать, что главной целью этого раздела является не столько строгость изложения, сколько ясность и применимость практических рекомендаций, вытекающих из изложенного материала.
Сущность нормализации состоит в следующем. Для отношений формулируются требования к представлению их в т.наз. нормальных формах. Последовательно переводя отношения из младших нормальных форм в старшие, мы строим полную декомпозицию, свободную от избыточности и аномалий. Теоретически найдено шесть нормальных форм (НФ). Первые три уровня нормализации были определены Коддом (E. Codd) в 1972 г. Он назвал эти уровни первой, второй и третьей нормальными формами (IНФ, IIНФ, IIIНФ ). Впоследствии были определены четвертая НФ, нормальная форма Бойса – Кодда (НФБК, промежуточная между третьей и четвертой) и пятая нормальная форма. Определение пятой нормальной формы предложено Фейгиным (R.Fagin) в 1979 г. Принято считать, что если отношение находится в VНФ, то дальнейшая декомпозиция бессмысленна и процесс проектирования на этом заканчивается. Если отношение находится в какой- либо из высших нормальных форм, то тем самым оно удовлетворяет и требованиям низших НФ (см. рис. 7)
В практике проектирования довольно часто возникает ситуация, когда процесс проектирования заканчивается уже после построения для отношения IIIНФ или НФБК. Это означает, что данные НФ для конкретного отношения удовлетворяют и требованиям пятой нормальной формы. Вообще же саму нормализацию можно представить как алгоритм последовательного построения оптимальной полной декомпозиции.
Все
отношения (нормализованные и
ненормализованные)
IНФ
IIНФ
IIIНФ
VНФ
IVНФ
НФБК
Рис.7. Уровни нормализации.
Функциональная зависимость.
В процессе нормализации приходится оперировать понятием функциональной зависимости атрибутов внутри отношения.
Если даны два атрибута (простые или составные), А и В, то говорят, что В функционально зависит от А, если для каждого значения А в любой момент времени существует ровно одно связанное с ним значение В.
Другими словами, если В функционально зависит от А, то каждый из кортежей, имеющих одно и то же значение А, должен иметь и одно значение В. Их значения могут изменяться время от времени, но только таким образом, что каждое уникальное значение А имело бы только одно значение В, связанное с ним. В таком случае атрибут А называют детерминантом функциональной зависимости.
В рассмотренном ранее примере (см. раздел «Аномалии хранения данных»), атрибут ФИО студента функционально зависит от атрибута No зач.; Колич.часов зависит от атрибута Шифр курса; а Оценка – от составного детерминанта No зач и Шифр курса.
Способы нотации для описания функциональных зависимостей не стандартизованы. Два наиболее часто используемых показаны на рис.8.
(математическая
форма записи)
Рис 8. Варианты записи функциональных зависимостей.
В практике проектирования зависимость не может быть доказана путем простого просмотра отдельного экземпляра отношения и поиска нескольких случаев, в которых два атрибута принимают одни и те же значения. В лучшем случае это может указать направление поиска. Функциональные зависимости (ФЗ) устанавливаются исходя из семантики данных, для чего проектировщик (постановщик задачи) должен хорошо представлять себе специфику предметной области. Конечно, иногда наличие ФЗ очевидно, более того – в ряде случаев проектировщик водит «искусственный» детерминант ФЗ. В упомянутом уже примере (рис. … ) очевидна зависимость атрибутов ФИО студента и Дата рожд. от атрибута № зачетки. Это следует из того факта, что каждому студенту выдается зачетная книжка с уникальным номером. Атрибут ФИО студента не может быть детерминантом, поскольку не гарантирована его уникальность. Детерминант Таб.№ преподавателя введен из сходных соображений, это пример «искусственного» ключа, в том смысле что этот атрибут отсутствует в предметной области и введен специально для надежной идентификации.2 А вот зависимость Шифр курса ->Таб. № преподавателя не очевидна. Более того, предположение о существовании такой зависимости говорит о том, что каждый преподаватель читает точно одну учебную дисциплину. Если в предметной области такое ограничение действительно существует, то оно должно быть должным образом отображено в модели данных. При нормализации инструментом такого отображения и является объявление функциональных зависимостей.
