- •1. Основы построения баз данных 11
- •2. Модели представления данных 22
- •3. ДатАлогические модели данных 38
- •4. Семантическое моделирование 101
- •5. Базы данных в сетях 155
- •6.Современное состояние и 177
- •1. Основы построения баз данных
- •1.1. Архитектура системы баз данных
- •1.2. Жизненный цикл базы данных
- •Контрольные вопросы и задания
- •2. Модели представления данных
- •2.1. Классификация моделей данных
- •2.2. Разновидности инфологических моделей данных
- •Контрольные вопросы и задания
- •3. ДатАлогические модели данных
- •3.1. Иерархические модели
- •Между предками и потомками автоматически поддерживается целостность ссылок. Основное правило: никакой потомок не может существовать без своего родителя, у некоторых родителей не может быть потомков.
- •3.2. Сетевые модели
- •3.3. Реляционные модели
- •3.3.1. Основные понятия реляционной модели
- •3.3.2. Реляционная алгебра
- •3.3.3. Язык запросов по образцу qbe
- •3.3.4. Структурированный язык запросов sql
- •Основные инструкции языка sql
- •Values ("3110", "чп Иванов п.Т.", null)
- •3.4. Проектирование реляционных баз данных
- •Контрольные вопросы и задания
- •4. Семантическое моделирование
- •4.1. Объектно-ориентированное проектирование
- •4.1.1. Представление объектов
- •4.1.2. Описания классов
- •4.1.3. Атрибуты в odl
- •4.1.4. Связи в odl
- •4.1.5. Обратные связи
- •4.1.6. Множественность связей
- •4.1.7. Типы в odl
- •4.1.8. Проектирование с использованием odl
- •Правильность
- •Устранение избыточности
- •4.1.9. Подклассы
- •4.1.10. Множественное наследование в odl
- •4.1.11. Моделирование ограничений
- •Ссылочная целостность
- •Прочие ограничения
- •4.1.12. Переход от объектно-ориентированной модели к реляционной
- •4.2. Диаграммы "сущность-связь"
- •4.2.1. Компоненты диаграмм "сущность-связь"
- •4.2.2. Множественность e/r-связей
- •Многосторонние связи
- •4.2.3. Роли в связях
- •4.2.4. Атрибуты связей
- •4.2.5. Конвертирование многосторонних связей в бинарные
- •4.2.6. Проектирование e/r моделей
- •Простота
- •Типы элементов проекта
- •Определения подклассов
- •Наследование в e/r-модели
- •Моделирование ограничений
- •Ссылочная целостность
- •Слабые множества сущностей
- •Переход от e/r-диаграмм к реляционным проектам
- •Контрольные вопросы и задания
- •5. Базы данных в сетях
- •5.1. Архитектура "клиент-сервер"
- •5.2. Распределенные базы данных
- •5.3. Базы данных в Интернет
- •Контрольные вопросы и задания
- •Контрольные вопросы и задания
- •Информационные ресурсы Internet
- •Словарь терминов
- •Список сокращений
- •Темы рефератов
4.2.5. Конвертирование многосторонних связей в бинарные
В ODL допустимы только бинарные связи, в отличие от E/R-модели. Однако любую сложную связь, включающую в себя более двух компонентов, нетрудно конвертировать в множество бинарных связей типа "многие-к-одному" без потери какой-либо информации. В E/R-модели можно ввести новое множество сущностей, элементами которого являются кортежи множества отношений для многосторонней связи. Такое множество называется множеством связующих сущностей. Затем вводится связь типа "многие-к-одному" этого множества связующих сущностей с каждым множеством сущностей, предоставляющим элемент кортежей исходной многосторонней связи. Если какое-то множество сущностей играет несколько ролей, оно является целевым пунктом одной связи для каждой из ролей.
Пример 4.18. Четырехстороннюю связь (рис. 51) можно заменить множеством сущностей под названием Договоры. Как показано на рис. 54, это множество участвует в четырех связях. Если множество отношений для связи Договоры имеет четверку
(цех_1, цех_2, мастер, изделие)
то сущность множества Договоры соединена связью от_мастера с сущностью мастер из множества Мастера, связью изделие_от с сущностью изделие из множества Изделия, а также связями Цех_мастера и Выполняющий_цех соответственно с сущностями цех_1 и цех_2 из множества Цеха.
Предполагается, что у множества Договоры нет атрибутов, хотя другие множества сущностей на рис. 54 имеют невидимые атрибуты. Можно добавить атрибуты и множеству Договоры, например дату подписания договора, сведения о заказчике.
Многосторонняя связь, подобная показанной на рис. 51, в ODL изображалась бы способом, сходным с описанным выше преобразованием для E/R-модели. Однако в ODL нет многосторонних связей, поэтому данное преобразование не выбирается по желанию – оно обязательно.
Пример 4.19. Допустим, есть классы Мастер, Изделие и Цех, соответствующие каждому из трех множеств сущностей, показанных на рис. 52. Для представления четырехсторонней связи Договоры вводится новый класс Договор, не имеющий атрибутов, но имеющий четыре связи, соответствующие четырем компонентам E/R-связи. ODL-описание показано ниже; обратные связи пропущены. Каждая четверка в E/R-связи Договоры соответствует объекту ODL-класса Договор.
interface Договор{
relationship Цех владеет_мастером;
relationship Цех выполняющий_цех;
relationship Мастер мастер_;
relationship Изделие изделие_;
};
4.2.6. Проектирование e/r моделей
Как уже говорилось, проект должен быть правильным относительно описываемой предметной области. Сущности и их атрибуты, должны отражать реальные объекты.
Простота
Не стоит вводить в проект больше элементов, чем это необходимо.
Пример 4.20. Предположим, что вместо связи между Изделием и Мастером было постулировано существование "договора на особых условиях", предполагающего выполнение заказа на изделие только у одного высококвалифицированного мастера и в самый короткий срок. Тогда можно создать еще один класс или множество сущностей Спецзаказ. Между изделием и единственным специальным договором можно ввести связь обслуживает типа "один-к-одному". И связь типа "многие-к-одному" множества Спецзаказ с множеством Мастера завершает схему, показанную на рис. 55.
В принципе, такая структура правильно представляет реальный мир, так как единственный цех, единственного мастера, можно определять через спецзаказ. Однако множество Спецзаказ при этом бесполезно, и лучше обойтись без него. Практическая реализация такого множества приведет к программам, использующим более сложные связи между мастерами и изделиями, занимает излишнее пространство памяти и порождает ошибки.