
- •Проектирование баз данных. Лекция 1. Введение. Банки и базы данных. Архитектура субд.
- •Хранимая база данных (Внутренняя модель)
- •Понятие проектирования баз данных. Различные подходы к проектированию бд.
- •Различные подходы к проектированию данных.
- •Сетевая модель данных.
- •Лекция 2.
- •Реляционные операции над отношениями.
- •Лекция 3. Аномалии хранения данных.
- •Концептуальное проектирование данных. Нормализация. Понятие функциональной зависимости. Теорема Хита.
- •Функциональная зависимость.
- •Теорема Хита.
- •Лекция 4. Пятая нф. Универсальное отношение. I и II нф.
- •Первая нормальная форма.
- •Вторая нормальная форма.
- •Третья нормальная форма. Транзитивные зависимости.
- •Лекция 5. Нормальная форма Бойса-Кодда. Четвертая нормальная форма. «Перенормализованные» модели данных.
- •Четвертая нормальная форма.
- •«Перенормализованные» модели данных.
- •Пример проектирования бд.
- •Отношение “Аптека”
- •Отношение “Лекарство”
- •Отношение “Наличие лекарств”
- •Отношение “Поставщик”
- •Отношение “Лицензия поставщика”
- •Отношение “Запрос на поставку”
- •Лекция 6. Проектирование в терминах «Сущность – связь»
- •Сущности и связи.
- •Классификация связей
- •Предварительные отношения для бинарных связей степени 1:1.
- •Лекция 7. Предварительные отношения для степени связи 1:n и m:n.
- •Предварительные отношения для степени связи m:n.
- •Лекция 14. Предварительные отношения для связей высших порядков. Использование ролевых отношений.
- •Студент
- •Использование ролевых отношений.
- •Рабочий
- •Подчиненный
- •Лекция 8. Развитой пример применения e-r проектирования.
- •Сопоставление методик нормализации и e-r проектирования. Физическое проектирование.
- •Физическое проектирование.
- •Ограничения целостности.
- •Заключение.
Предварительные отношения для бинарных связей степени 1:1.
Предположим, что каждый преподаватель читает ровно один курс, и каждый курс читается ровно одним преподавателем. Недопустимо ни наличие преподавателей, не ведущих курсов, ни курсов, за которыми не закреплен преподаватель5. Здесь можно говорить, что имеет место бинарная связь степени 1:1 с обязательным классом принадлежности с обеих сторон.
Если степень связи равна 1:1 и класс принадлежности для обеих сущностей обязателен, то требуется только одно отношение; его первичным ключом может быть ключ любой из сущностей.
Иными словами, в данном случае атрибуты двух отношений представляют собой поля одной записи.
Таб. № |
ФИО |
|
|
Курс |
Колич. часов |
|
Иванов |
|
|
Математика |
120 |
|
Петров |
|
|
Физика |
80 |
|
Сидоров |
|
|
Философия |
150 |
245 |
Кузнецов |
|
|
Сопромат |
90 |
Преподаватель
Курс
Рис. 20. Отношения, связанные степенью связи 1:1 с обязательным с двух сторон классом принадлежности.
Теперь слегка изменим информацию о предметной области. Пусть каждый преподаватель читает ровно один курс, но допускаются курсы, которые в данный момент не читает ни один преподаватель. Здесь степень связи остается равной 1:1, класс принадлежности для сущности Преподаватель по- прежнему обязателен, а класс принадлежности для сущности Курс становится необязательным.
Таб. № |
ФИО |
|
|
|
Курс |
Колич. часов |
101 |
Иванов |
|
|
|
Математика |
120 |
120 |
Петров |
|
|
|
Физика |
80 |
203 |
Сидоров |
|
|
|
Философия |
150 |
245 |
Кузнецов |
|
|
|
Сопромат |
90 |
|
|
|
|
|
Информатика |
150 |
Преподаватель
Курс
Рис. 21. Отношения, связанные степенью связи 1:1 с обязательным и необязательным классами принадлежности.
Полученные экземпляры сущностей можно попытаться предста-вить одним отношением.
Отношение “Преподаватели и курсы”
-
Таб. №
ФИО
Курс
Колич. часов
101
Иванов
Математика
120
120
Сидоров
Физика
80
203
Кузнецов
Философия
150
245
Петров
Сопромат
90
Информатика
150
Очевидно, что такое отношение не удовлетворяет требованиям нормализации из- за наличия пустых ключевых полей для курса “Информатика”. Если рассматривать полученное отношение как универсальное и применить к нему процедуру нормализации, то, с учетом сделанных предположений о предметной области, получим следующую декомпозицию:
Отношение “Преподаватели” Отношение “Курсы”
Таб. № |
ФИО |
Курс |
|
Курс |
Колич. часов |
101 |
Иванов |
Математика |
|
Математика |
120 |
120 |
Сидоров |
Физика |
|
Физика |
80 |
203 |
Кузнецов |
Философия |
|
Философия |
150 |
245 |
Петров |
Сопромат |
|
Сопромат |
90 |
|
|
|
|
Информатика |
150 |
Если предположить, что класс принадлежности сущности “Преподаватель” является необязательным, а для сущности “Курс” – обязательным, то структура отношений получится обратной, в том смысле, что будет необходимо ввести ключ “Таб.№” в отношение “Курс”.
Для подобного сочетания степени связи и класса принадлежности можно сформулировать следующее правило.
Если степень бинарной связи равна 1:1 и класс принадлежности одной сущности является обязательным, а другой – необязательным, то необходимо построение двух отношений. Для каждой сущности строится по одному отношению, первичным ключом является ключ отношения. Кроме того, ключ сущности, для которой класс принадлежности является необязательным добавляется как атрибут в отношение с обязательным классом принадлежности.
Рассмотрим ситуацию, когда класс принадлежности является необязательным ни для одной из сущностей. В нашем примере это соответствует предположению, что каждый преподаватель ведет не более одного предмета, и каждый предмет читается не более, чем одним преподавателем. Допускается наличие как преподавателей, не читающих курсы, так и курсов, не закрепленных ни за одним из преподавателей.
Таб. № |
ФИО |
|
|
|
Курс |
Колич. часов |
101 |
Иванов |
|
|
|
Математика |
120 |
120 |
Петров |
|
|
|
Физика |
80 |
203 |
Сидоров |
|
|
|
Философия |
150 |
245 |
Кузнецов |
|
|
|
Сопромат |
90 |
|
|
|
|
|
Информатика |
150 |
Преподаватель
Курс
Рис. 22. Отношения, связанные степенью связи 1:1 с необязательным с двух сторон классом принадлежности.
Если пытаться представить эту диаграмму различными наборами отношений, то, как легко убедится, возможно либо одно отношение, либо два набора декомпозиций (см.рис. 23). Приэтом, свободным от “пустых” полей, а. следовательно, от аномалий является лишь вариант с .
-
Таб. №
ФИО
Курс
Колич. часов
101
Иванов
Математика
120
120
Сидоров
203
Кузнецов
Философия
150
245
Петров
Сопромат
90
Информатика
150
а) использование одного отношения.
Преподаватель Курс
Таб. № |
ФИО |
Курс |
|
Курс |
Колич. Часов |
Таб. № |
101 |
Иванов |
Математика |
|
Математика |
120 |
101 |
120 |
Сидоров |
|
|
Физика |
80 |
|
203 |
Кузнецов |
Философия |
|
Философия |
150 |
203 |
245 |
Петров |
Сопромат |
|
Сопромат |
90 |
245 |
|
|
|
|
Информатика |
150 |
|
b) использование двух отношений.
Преподаватель Читает Курс
Таб. № |
ФИО |
|
Курс |
Таб. № |
|
Курс |
Колич. часов |
101 |
Иванов |
|
Математика |
101 |
|
Математика |
120 |
120 |
Сидоров |
|
Философия |
203 |
|
Физика |
80 |
203 |
Кузнецов |
|
Сопромат |
245 |
|
Философия |
150 |
245 |
Петров |
|
|
|
|
Сопромат |
90 |
|
|
|
|
|
|
Информатика |
150 |
c) использование трех отношений.
Рис. 23 Возможные реляционные формы для случая бинарной связи степени 1:1 и необязательным классом принадлежности.
Если степень связи равна 1:1 и класс принадлежности не является обязательным ни для одной из сущностей, то необходимо использовать при отношения: по одному для каждой сущности, ключи которых служат в качестве первичных в соответствующих отношениях, и одного отношения – для связи. Первичным ключом отношения связи является комбинация ключей двух сущностей.
Первичный ключ отношения связи будет составным в силу того факта, что он является композицией ключей тех отношений, которые связываются между собой. Как на составные части этого ключа, так и на весь ключ должны быть наложены определенные ограничения. Подобные требования называются ограничениями целостности.6Сформулируем требования к ключевым полям отношения «Читает.»
Сочетание значений атрибутов «Курс» и «Таб. №» должно быть уникальным для данного отношения. Это требование следует из того, что эти поля образуют первичный ключ отношения.
Каждое значение поля «Курс» должно принадлежать домену атрибута «Курс» отношения «Курс». В противном случае это значение будет указывать на несуществующий курс, что недопустимо.
Каждое значение поля «Курс» должно встречаться в этом отношении не более одного раза. Это требование отражает тот факт, что каждый преподаватель читает не более одного курса, другими словами – реализует степень связи.
Каждое значение поля «Таб. №» должно принадлежать множеству значений атрибута «Таб. №» отношения «Преподаватель» из тех же соображений, по которым значение поля «Курс» должно принадлежать домену атрибута «Курс» отношения «Курс».
Каждое значение поля «Таб. №» должно встречаться в этом отношении не более одного раза. Это требование также вытекает из степени связи.