- •Лекция 9 Тема. Основы теории проектирования баз данных План
- •Некоторые определения
- •Основные этапы построения базы данных
- •Последовательность создания информационной модели
- •Типы взаимосвязей данных в модели
- •Типы моделей данных
- •Нормализация (декомпозиция) реляционной модели
- •Построение физической модели
- •Обзор возможностей и особенностей различных субд
- •Функциональная схема интерфейса субд
- •Архитектура ms Access
Типы взаимосвязей данных в модели
Взаимосвязь выражает отображение между двумя множествами данных. Различают взаимосвязи типа “один к одному”, “один ко многим”, “многие ко многим”.
Рассмотрим типы связей на примере связей между сущностями КЛИЕНТ, ЗАКАЗ, ФИРМА.
Взаимосвязь “один к одному”. Допустим, что в определенный момент времени клиент может сделать только один заказ. В этом случае между объектами КЛИЕНТ и ЗАКАЗ устанавливается связь “один к одному”. Схематически это отображается одинарными стрелками.
Между данными, хранящимися в объектах КЛИЕНТ, ЗАКАЗ будет существовать взаимосвязь, в которой каждая запись в одном объекте будет однозначно указывать на запись в другом объекте.
Взаимосвязь “один ко многим”. Анализируя взаимосвязь КЛИЕНТ, ЗАКАЗ не привязываясь к некоторому моменту времени, получим что один клиент в разное время может производить несколько заказов. С другой стороны, в одном заказе может фигурировать только один клиент. Схематически этот тип связи отображается с помощью одинарной стрелки в напрвлении к “одному” и двойной стрелки в направлении ко многим.
В этом случае одной записи данных первого объекта (родительскоко) будет соответствовать несколько записей второго (дочернего) объекта. В качестве родительского объекта часто выступает справочник, а в дочернем содержатся ключи для доступа к записям справочника.
Взаимосвязь “многие ко многим”. Например, один клиент в разное время может приобрести товары в различных фирмах. С другой стороны, в одной фирме могут обслуживаться различные клиенты. Между сущностями КЛИЕНТ, ФИРМА существует связь “многие ко многим”. Такая связь обозначается двойными стрелками
При просмотре данных в объекте КЛИЕНТ можна узнать, в каких фирмах он приобретал товар, однако в объекте ФИРМА при этом необходимо завести несколько записей для каждой фирмы.
Объект КЛИЕНТ Объект ФИРМА
Код_Кл |
Наим_Кл |
|
Код_Ф |
Наим_Ф |
Код_Кл |
1 |
Клиент_1 |
|
10 |
Фирма_1 |
1 |
2 |
Клиент_2 |
|
10 |
Фирма_1 |
2 |
|
|
|
20 |
Фирма_2 |
1 |
|
|
|
20 |
Фирма_2 |
2 |
Каждая строчка будет соответствовать каждому заказу клиента в данной фирме. При таком подходе возникают серьезные проблемы, например, в объекте ФИРМА нельзя ввести уникальный ключ для каждой фирмы. Согласно теории нормализации, которая будет изложена ниже, для хранения взаимосвязи “многие ко многим” в реляцинных БД требуется три объекта: по одному для каждой сущности и один для хранения связей между ними. В качестве промежуточного объекта между объектами ФИРМА, КЛИЕНТ можна взять объект ЗАКАЗ.
Объект КЛИЕНТ Объект ЗАКАЗ Объект ФИРМА
Код_Кл |
Наим_Кл |
|
Код_Ф |
Код_Кл |
|
Код_Ф |
Наим_Ф |
1 |
Клиент_1 |
|
10 |
1 |
|
10 |
Фирма_1 |
2 |
Клиент_2 |
|
10 |
2 |
|
20 |
Фирма_2 |
|
|
|
20 |
1 |
|
|
|
|
|
|
20 |
2 |
|
|
|
Проводя аналогичные рассуждения для других объектов системы, устанавливаем такие типы взаимосвязей.
Представленная схема связей между объектами отображает концептуальную модель БД.