Создание связей между таблицами Современные базы данных обычно состоят из многих таблиц, связанных между собой. В реляционной теории баз данных выделяют несколько типов связей между таблицами, однако чаще всего используется тип связи один-ко-многим. Это означает, что каждая запись одной таблицы может быть связана со многими записями другой связанной с ней таблицы. 1. Задание на разработку БД "Такси" Рассмотрим пример базы данных
данных для диспетчера такси, которая должна отвечать следующим требованиям: 2. Разработка структуры БД Начинающие пользователи для хранения всех данных обычно создают одну таблицу (по аналогии с Excel). Примерная структура такой таблицы для данной задачи может быть следующей (табл. 7.3).
Хранение всех данных в подобной таблице будет неудобным, поскольку в ней смешаны три разных понятия – Автомобили, Заказы и Клиенты, что приведет к повторению данных. Например, для регистрации вызова постоянного клиента придется каждый раз вводить его номер карточки, фамилию и другие данные. Если создать отдельную таблицу Клиенты, то сведения о клиентах будут заноситься только при первом вызове, а при последующих фамилия клиента будет выбираться из раскрывающегося списка. Исходя из аналогичных соображений, можно также создать отдельную таблицу Автомобили. Итак, создадим новую БД с именем Такси.accdb. и добавим в нее три таблицы – Автомобили, Заказы и Клиенты. В каждой таблице нужно определить ключевое поле. В таблице Клиенты это будет поле Карточка с типом данных Счетчик, а в таблице Автомобили – Номер - текстовое поле из 6 символов. В таблице Заказы нет подходящего поля для ключевого, поэтому введем дополнительное поле Заказ с типом данных Счетчик. Представление о полях, их типах и размерах дает нижеследующая таблица (рис. 1):
Рис. 1. Типы и размеры полей таблиц БД "Такси" В таблице Заказы введено два поля - Nавто и Карточка для того, чтобы с их помощью можно было связать эту таблицу с таблицами Автомобили и Клиенты. Такие специальные поля называют внешними ключами или вторичными ключами. В противовес им ключевое поле Номер таблицы Автомобили и ключевое поле Карточка таблицы Клиенты будут первичными ключами. 3. Установления связей между таблицами Теперь установим между таблицами связи. Для этого мы обеспечим поля Nавто и Карточка таблицы Заказы списками выбора их возможных значений. Значения поля Nавто будем выбирать из списка значений Номер таблицы Автомобили, а значения поля Карточка из списка значений поля Карточка таблицы Клиенты. С этой целью откроем таблицу Заказы и для поля Nавто выберем тип данных Мастер подстановок. Далее выберем опцию Объект "столбец подстановка", затем выберем таблицу Автомобили и в следующем окне передвинем поле Номер в выбранные поля. Затем в окне создание подстановки выберем Номер и нажмем кнопку По возрастанию и, наконец, в следующем окне нажмем кнопку Готово. Аналогично свяжем поле Карточка таблицы Заказы с полем Карточка таблицы Клиенты. Закроем таблицу и на закладке Работа с базами данных щелкнем на кнопке Схема данных. При этом появится окно со схематическим изображением таблиц, их полей и установленных нами связей между полями таблиц (рис. 2). Рис. 2. Схема таблиц БД Такси В нашем случае одному автомобилю может соответствовать сколько угодно заказов, поэтому мы свяжем соответствующие таблицы отношением "один-ко-многим". Для этого мышью щелкнем на линии связи Номер и Nавто. При этом появится окно, которое показано на рис. 3. В нем нужно установить галочку, указывающие на то, что будет обеспечиваться целостность данных, и нажать кнопку ОК.
Аналогично, одному клиенту может соответствовать множество заказов. Поэтому установим связь "один-ко-многим" между соответствующими полями таблиц Клиенты и Заказы. Окончательная структура БД получится такой (рис. 4): Рис. 4. Таблицы БД Такси и схема связей между ними При этом образовалось две пары взаимосвязанных таблиц: а) Автомобили и Заказы и б) Клиенты и Заказы. Первая таблица пары является главной поскольку одной записи это таблицы может соответствовать сколько угодно записей второй таблицы, которая в этой паре будет подчиненной. Обеспечение целостности данных необходимо для того чтобы программа Access контролировала правильность данных в связанных полях. Также доступными являются следующие опции: - каскадное обновление связанных полей означает, что при установленном флажке будет разрешено изменение первичного ключа (например, для таблицы Автомобили разрешено изменение значения ключевого поля Номер), и автоматическое изменение значения внешнего ключа в связанной таблице (таблица Заказы, внешний ключ - поле Nавто, который предназначен для связывания с таблицей Автомобили); - каскадное удаление связанных записей – разрешает автоматическое удаление всех связанных записей из подчиненной таблицы при удалении записи в главной таблице, например, при удалении записи об определенном клиенте будут автоматически удалены все записи о его заказах; при снятом флажке вы не сможете удалить запись, пока не удалите все связанные с ней записи. Для связей между таблицами можно разрешить каскадное обновление связанных полей, а флажок Каскадное удаление связанных записей устанавливать не стоит, поскольку при ошибочном удалении клиентов будут удалены данные об их заказах, и нельзя будет, например, получить правильные значения сумм оказанных услуг за определенные периоды. 4. Создание подстановки из фиксированного набора значений После ввода нескольких записей в
таблицу Заказы становится ясно, что в поле Состояние заказа
приходится вводить одни и те же значения. Для упрощения ввода данных в это
поле можно создать еще одну связанную таблицу, но это будет не самый
рациональный способ. Для случаев, когда набор значений поля не будет
изменяться в процессе использования базы данных, лучше использовать
подстановку из фиксированного набора значений. 3. В следующем окне введите в таблицу список нужных значений (рис. 6), после чего нажмите кнопки Далее и Готово.
Рис. 5. Первое окно Мастера подстановок
Рис. 6. Для создания фиксированного списка подстановки следует ввести нужные значения вручную 4. Сохраните изменения в структуре таблицы, переключитесь в режим таблицы и попробуйте ввести несколько записей с использованием подстановки. 5. Автоматический ввод текущей даты и времени При вводе данных в таблицу
Заказы неудобно каждый раз вводить текущие дату и время в поле Дата.
Для настройки автоматического ввода текущего времени выполните следующие
действия.
4. Сохраните изменения в структуре таблицы и попробуйте добавить новую запись в режиме таблицы. Текущая дата и время должны появляться автоматически, но при необходимости их значения можно отредактировать. Заполните таблицы данными примерно такими, как показано на рис 8 - 10. Рис. 8. Таблица БД Автомобили Рис. 9. Таблица БД Клиенты Рис. 10. Таблица БД Заказы
|
||||||||||
|