Связь – ассоциирование двух или более сущностей. Если бы назначением базы данных было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень простой. Однако одно из основных требований к организации базы данных – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи.
Изобразим графически каждый объект и его свойства (см. рис. 1 - 6).
Рис. 1 Изображение связи «Объект - Свойство» для объекта «Поставка»
Рис. 2 Изображение связи «Объект - Свойство» для объекта «Поставщик»
Рис. 3 Изображение связи «Объект - Свойство» для объекта «Товар»
Рис. 4 Изображение связи «Объект - Свойство» для объекта «Сотрудник»
Рис. 5 Изображение связи «Объект - Свойство» для объекта «Заказ»
Рис. 6 Изображение связи «Объект - Свойство» для объекта «Клиент»
Однако инфологическая модель предполагает наличие в себе отображения не только отдельных объектов и их свойств, но также связей между различными объектами.
Изобразим графически инфологическую модель всей базы данных (см. рис. 7).
Рис. 7 Инфологическая модель базы данных гостиничного комплекса
Построение реляционной схемы из ER – модели данных
В таблицах данные распределяются по столбцам (которые называют полями) и строкам (которые называют записями). Все данные, содержащиеся в поле таблицы, должны иметь один и тот же тип. Каждое поле таблицы характеризуется наименованием, типом и шириной поля. При задании типа данных поля можно также указать размер, формат и другие параметры, влияющие на отображение значения поля и точность числовых данных. Основные типы данных:
- Текстовый. Текст или числа, не требующие проведения расчётов.
- МЕМО. Поле этого типа предназначено для хранения небольших текстовых данных (до 64000 символов). Поле этого типа не может быть ключевым или проиндексированным.
- Числовой. Этот тип данных содержит множество подтипов. От выбора подтипа (размера) зависит точность вычислений.
- Счётчик. Уникальные, последовательно возрастающие числа, автоматически вводящиеся при добавлении новой записи в таблицу.
- Логический. Логические значения, а так же поля, которые могут содержать одно из двух возможных значений.
- Денежный. Денежные значения и числовые данные, используемые в математических вычислениях.
- Дата/Время. Дата и время хранятся в специальном фиксированном формате.
- Поле объекта OLE. Включает звукозапись, рисунок и прочие типы данных. Поле этого типа не может быть ключевым или проиндексированным.
- Гиперсвязь. Содержит адреса Web-страниц.
Следующим шагом выполнения работы было построение реляционной схемы базы данных из ER-модели. Для этой цели были использованы следующие правила:
1. Для каждого простого объекта и его единичных свойств строится таблица, атрибутами которой являются идентификатор объекта и реквизиты, соответствующие каждому из свойств.
2. Если у объекта имеются множественные свойства, то каждому из них ставиться в соответствии отдельная таблица.
3. Если между объектом и его свойствам имеется условная связь, то при отображении в реляционной модели возможны следующие варианты:
- Если многие из объектов обладают рассматриваемым свойством, то его можно хранить в базе данных так же, как и обычное.
- Если только незначительное число обладает указанным свойством, то при использовании предыдущего решения для многих записей в таблице значение соответствующего поля будет пустым. Для устранения этого недостатка выделяют отдельную таблицу, которая включает в себя идентификатор объекта и атрибут, соответствующий рассматриваемому свойству (аналогично пункту 2).
4. Если у объекта имеется составное свойство, то составляющие составного свойства либо помещаются в отдельные поля реляционной таблицы, либо в одно поле.
5. Если связь между объектами 1:1 и классы принадлежности обоих объектов являются обязательными, то для отображения данных объектов и связей между ними можно:
- использовать одну таблицу, первичным ключом которой может быть
идентификатор любого из двух объектов.
- для каждого из этих объектов использовать отдельные таблицы, а связь между ними отразить включив в одну из таблиц идентификатор связанного объекта из другой таблицы.
6. Если связь между объектами 1:1 и класс принадлежности одного объекта является обязательным, а другого – нет, то для каждого из этих объектов используют отдельные таблицы, а идентификатор объекта, для которого класс принадлежности является необязательным, добавляется в таблицу, соответствующую тому объекту, для которого класс принадлежности обязателен.
7. Если между объектами связь 1:1 и класс принадлежности является необязательным, то следует воспользоваться тремя таблицами: по одной для каждого объекта и одну для отображения связи между ними.
8. Если между объектами связь 1: М и класс принадлежности одного из них обязателен, то используют две таблицы – по одной для каждого объекта. При этом в таблицу, соответствующую объекту, класс принадлежности которого является обязательным, добавляется идентификатор второго объекта.
9. Если между объектами предметной области имеется связь 1: М и оба класса принадлежности не обязательны, то поступают аналогично пункту 7 (создают три таблицы: по одной для каждого объекта и одну для связи между ними)
10. Если между объектами предметной области имеется связь М:М, то для хранения информации требуется три таблицы: по одной для каждого объекта и одна для отображения связи между ними (классы принадлежности могут быть любыми).
11. Агрегированному объекту, имеющему место в предметной области, ставится в соответствии одна таблица, атрибутами которой являются идентификаторы всех объектов, задействованных в данном агрегированном объекте, а так же реквизиты, соответствующие свойствам этого объекта.
Такое объединение информации в одну таблицу возможно только в том случае, если между объектами связь 1:1, если связь другая, то выделяют по одной таблице для каждого объекта и одну для связи.
12. При отображении обобщенных объектов могут быть приняты разные решения:
- всему обобщенному объекту может быть поставлена в соответствии одна таблица.
- каждой из категорий ставится в соответствии отдельная таблица, которая
содержит в себе идентификатор объекта, общие свойства и свойства данной категории.
Кроме этого, возможны и комбинированные варианты. Выбор конкретного решения будет зависеть от того, насколько часто информация о разных категориях объекта обрабатывается совместно, как велико различие видовых свойств и т.п.
13. При отображении составного объекта так же возможны варианты:
- если речь идет о составе изделий, то между изделием и деталью связь будет М:М.
В этом случае – см. пункты 7, 9, 10.
- если речь идет о составе какой-нибудь организации, то между объектами скорее всего будет связь 1:М. В этом случае – см. пункты 8, 9.
В результате применения данных рекомендаций к инфологической модели была получена следующая реляционная модель:
Сотрудник (Код сотрудника, Фамилия, Имя, Должность, Дата рождения, Адрес, Телефон, Примечание);
Клиент (Код клиента, ФИО, Адрес, Телефон);
Заказ (Код заказа, Код товара, Код сотрудника, Дата размещения, Дата исполнения, Код клиента);
Товар (Код товара, Код поставки, Наименование товара, Описание, Изображение, Стоимость закупки, Наличие, Количество, Стоимость продажи);
Поставка (Код поставки, Код поставщика, Дата поставки);
Поставщик (Код поставщика, Название поставщика, Представитель, Обращаться, Телефон, Адрес).
Описание приложения
Для хранения данных создано 6 таблиц, структура которых приведена в таблице 1.
Таблица 1. Структура таблиц
Таблица Сотрудники | Таблица Товары | ||||
Поле | Тип данных | Поле | Тип данных | ||
Код Сотрудника | Числовой | Код Товара | Текстовый | ||
Фамилия | Текстовый | Код Поставки | Числовой | ||
Имя | Текстовый | Наименование Товара | Текстовый | ||
Должность | Текстовый | Описание | Поле МЕМО | ||
Дата Рождения | Дата/время | Изображение | Поле объекта OLE | ||
Адрес | Текстовый | Стоимость Закупки | Денежный | ||
Телефон | Текстовый | Наличие | Логический | ||
Примечание | Поле МЕМО | Кол-во | Числовой | ||
Стоимость Продажи | Денежный | ||||
Таблица Клиенты | |||||
Поле | Тип данных | Таблица Поставка | |||
Код Клиента | Числовой | Поле | Тип данных | ||
ФИО | Текстовый | Код Поставки | Числовой | ||
Адрес | Текстовый | Код Поставщика | Числовой | ||
Телефон | Текстовый | Дата Поставки | Дата/время | ||
Таблица Заказы | Таблица Поставщики | ||||
Поле | Тип данных | Поле | Тип данных | ||
Код Заказа | Числовой | Код Поставщика | Числовой | ||
Код Товара | Текстовый | Название Поставщика | Текстовый | ||
Код Сотрудника | Числовой | Представитель | Текстовый | ||
Дата Размещения | Дата/время | Обращаться | Текстовый | ||
Дата Исполнения | Дата/время | Телефон | Текстовый | ||
Код Клиента | Числовой | Адрес | Текстовый |
Для создания базы данных нужно сначала запустить программу Microsoft Office Access 2003, для этого нужно проделать следующие действия: Пуск → Программы → Microsoft Office → Microsoft Office Access 2003.