
- •38,39) Решение уравнений и систем средствами Mathcad
- •46) 2.1.4. Создание таблиц Word
- •49) 2.2.4. Обучение работе с формулами, функциями и диаграммами в Excel
- •50) Диаграммы в Excel
- •2.2.5. Работа с таблицей Excel как с базой данных
- •51) 2.2.7. Решение уравнений и задач оптимизации
- •54) Связанные таблицы
- •55) 2.4.6. Создание отчета как объекта базы данных
- •2.4.6.1. Структура отчета в режиме Конструктора
- •2.4.6.2. Способы создания отчета
- •60) Социальные сети - новая поисковая система
- •61) Защита данных в открытых сетях (Internet)
54) Связанные таблицы
Понимание смысла связывания таблиц и умение делать это правильно избавит вас от многих проблем. Связанные таблицы - цемент структуры базы данных, поэтому тему данного занятия можно отнести к ключевой (после этого останется разобраться с построением запросов и практический любой проект будет вам по силам (создание форм и отчетов - это уже скорее рутина, хотя и требующая иногда фантазии)).
Убедимся, что вы справились с заданием, которым заканчивалось предыдущее занятие и у вас появились в базе данных новые таблицы. Попробуем сравнить, что получилось у вас. Поле Тип размещения в отеле я разбил на два и создал не одну, а две таблицы. Собственно размещение (DBL, SNGL, DBL + CHLD, TRPL, ...) - таблица Arrangements, на каком питании (BB, HB, FB, ALL, No meal) - таблица Meals. Для обеих табличек по два поля: ключевое и значение. Для полей Страна и Отель таблицы имеют всего лишь больше полей.
Для дальнейшей работы и тестирования необходимо занести некоторые данные, например, страны, отели:
Основная таблица и источники записей полей
Бронирование отелей будет заключаться в занесении данных в основную таблицу. Таблицы, служащие источником записей полей основной таблицы, как правило обновляются довольно редко, некоторые практически никогда не обновляются. Так очень вероятно, что именно список отелей будет обновляться чаще других, плюс в таблице отелей может меняться информация для уже существующих записей (например, если мы сами напрямую осуществляем бронирование отелей, то мы добавим и будем пользоваться полями телефон, факс, имейл...).
Ниже даются комментарии по созданию связей между таблицами, но, возможно, Вам их будет легче понять, если Вы сперва посмотрите видео с примером создания связанной таблицы (использование внешнего ключа): table-lookup (файл в формате .mp4; пример на русской версии Access).
Чтобы начать наконец связывать между собой таблицы и заносить данные мы должны познакомиться как минимум с тремя типами данных: числовые, текстовые (строковые), даты. Под типами данных подразумевается прежде формат, в котором данные хранятся в базе данных. Мы не будем погружаться в дебри. Пока достаточно запомнить, что связывание двух таблиц должно происходить по полям с однотипными данными.
Свяжем поле Страна с таблицей Countries. Во время демонстрации этого процесса я сознательно буду принимать некоторые значения по умолчанию, комментировать к чему это ведет, а затем комментировать необходимые изменения.
Важно: эта операция должна стать для вас рутиной, поскольку она будет с небольшими изменениями использоваться при создании других связей, а также некоторых полей отчетов и особенно форм.
Открываем таблицу Reservations (бронирование отелей) в режиме редактирования (кликаем правой мышкой по таблице, выбираем в меню Design View). Находим тип поля для reservationCountry - Text, меняем на числовое - Number. После этого смотрим в нижний левый угол программы "Аксес" и находим две закладки: General и Lookup, выбираем Lookup.
Далее выбираем выпадающий список (Combo box), после чего появляются дополнительные опции. В источнике строк выбираем нужную нам таблицу (Countries), потом в верхнем левом углу программы "Аксес" переключаемся в режим таблицы (программа попросит сохранить таблицу, говорим - ОК).
Смотрим, что получилось в поле reservationCountry. Во-первых, подставляется некоторое значение по умолчанию (0), во-вторых, мы имеем выпадающий список, но в котором видим пока только числа. Эти числа - значения первого столбца из связанной таблицы (поскольку именно первый столбец и именно он один берется по умолчанию при создании связи).
Наша задача - вывести названия стран. Для этого установим параметры выпадающего списка стран (Combo box для reservationCountry). Возвращаемся в режим редактирования таблицы ; помещаем курсор в поле reservationCountry и открываем внизу закладку Lookup. После выбора нами источника строк (Countries) по умолчанию программа Аксесс "привязала" первый столбец из связанной таблицы (Bound Column), в том смысле, что значением поля reservationCountry будет выбранное нами значение. Всего столбцов из связанной таблицы по умолчанию выбирается 1 (Column count). Изменим это значение на 2, оставим пока поле Column Heads без изменений, а в поле Column Widths нам надо указать ширину отображения каждого столбца: достаточно набрать 1;1 и выйти из поля, программа сама подставит единицу измерения, т.е. станет 1cm;1cm. Теперь мы можем сохранить изменения и посмотреть результат в таблице (остальные параметры оставим пока без изменений).
Если мы выберем значение из отображающегося теперь в основной таблице выпадающего списка, то будем удивлены, что по прежнему подставляется числовое значение, а не название страны (например, число 2 вместо Турции).
Для того, чтобы вывести только название страны, в поле Column Widths изменим значение 1cm;1cm на 0cm;1cm, т.е. мы "спрячем" первый столбец из связанной таблицы (важно: в таблицу в конечном счете все равно подставляется числовое значение, просто оно теперь не отображается).
Мы пока не останавливаемся на других моментах, для нас важно научиться сразу правильно привязывать таблицы: как правило необходимо сразу выбирать 2 столбца и скрывать первый из них.
Соответственно вашим заданием будет: связать таблицы Hotels, Arrangements, Meals (для последней еще надо будет создать поле, поскольку логичнее будет разбить поле reservationArrangement на два: reservationArrangement и reservationMeal; для этого поставьте курсор в режиме редактирования таблицы в следующее после поля reservationArrangement и кликните на значок, как обведено жирным на рисунке ниже; вы получите пустую строчку в нужном месте и можете добавить поле и сразу связать с нужной таблицей (не забудьте про тип создаваемого поля)).
Создание запросов
Если таблицы позволяют организовать Ваши данные, то запросы - управлять данными и обновлять их. Сперва мы воспользуемся средствами базы данных Access (решеткой) для построения запросов, а затем познакомимся ближе с языком запросов SQL.
Примеры и объяснение с иллюстрациями, как создавать запросы для подсчета данных.
В файле инструкция по созданию простейших запросов в Access. Приводятся примеры с подробным описанием этапов: добавление в запрос таблиц, добавление полей таблиц в решетку для построения запросов, создание выборки по части слова (оператор LIKE), условия "И" (OR) и "ИЛИ" (AND) подсчет значений. Вы можете бесплатно скачать файл в формате *.mde.
Продолжаем знакомиться с запросами в Access:
создание в запросе нового поля;
подсчет длины строки;
подсчет количества слов по количеству букв (группировка);
управление именем поля.
Добавляем в запрос функцию:
создание функции ("перевернуть слово" справа-налево);
вызов функции из запроса.
Ближайшая задача: создание запроса, который позволит найти в выборке слова, которые читаются одинаково слева-направо и справа-налево.