Связывание таблиц
Операция связывания таблиц позволяет отслеживать ошибки, просматривать связанные данные и корректировать связанные поля. Например, если в отсутствие связей нам нужно узнать часть речи словоформы "привезли", сначала мы обратимся к таблице ЧАСТОТАСЛОВ, отсортируем ее по полю СЛОВО, найдем лемму для слова "привезли" = "привезти", затем обратимся к таблице Частота_Лемм. Отсортируем ее по полю ЛЕММА, найдем часть речи для слова "привезти" = v.
Для такой маленькой БД, как наша, это потребует небольших усилий, но если БД насчитывает сотни тысяч записей, например БД по всем произведениям А. П. Чехова, то даже простая задача поиска части речи становится слишком громоздкой и трудоемкой.
Обратная задача – найти все глаголы в сказке ПЕТУХ И ЖЕРНОВЦЫ – более сложная.
Для решения этой задачи можно добавить в таблицу СЛОВА поле ЛЕММА и поле Часть_речи, но тогда БД будет содержать много дублированных записей, что увеличит размеры БД. Кроме того, если мы ошибочно определили лемму, скажем, для слова "после", понимая его как существительное в предложном падеже, а затем заметили эту ошибку, нам придется вносить исправления во все записи со словом "после". Механизм MS Access позволяет выполнить исправление только один раз в поле ЛЕММА, если таблицы СЛОВА, ЧАСТОТА_СЛОВ, ЧАСТ()ТА_ЛЕММ и ЧАСТОТА_ ГРАМ связаны.
Перед определением связей требуется определить для каждой пары связываемых таблиц Таблицу-родитель (главная таблица) и Таблицу-потомок (подчиненная таблица). Отношение между ними являются отношением один-ко-многим, т.е. в Таблице-родителе, например ЧАСТОТА ЛЕММ, имеется уникальная запись с полем ЛЕММА = бросить, а в Таблице-потомок, ЧАСТОТАСЛОВ, таких записей три.
В Таблице-родителе следует задать для поля ЛЕММА (по которому таблица ЧАСТОТА ЛЕММ будет связана с таблицей ЧАСТОТАСЛОВ) параметр Индексированное поле = Да (Совпадения не допускаются). Эта операция выполняется в режиме Конструктор (рис. 14.11).
Рис. 14.11. Определение свойств поля при связывании таблиц
То же самое нужно сделать для каждой связываемой Таблицы-родитель (ЧАСТОТА ГРАМ, ЧАСТОТА_ЛЕММ, ЧАСТОТА_СЛОВ).
Любое отношение связывает два поля, находящиеся в разных таблицах. Таблицы ЧАСТОТА_СЛОВ и СЛОВА связаны отношением один- ко-многим, т.е. 12 словоупотреблений слова "боярин" в таблице СЛОВА связаны с одним словом "боярин" в таблице ЧАСТОТА СЛОВ.
Для определения связи или отношения выполните следующие действия: выберите последовательность команд Работа с базами данных – Показать или скрыть – Схема данных. Программа Access откроет на ленте новую вкладку Работа со связями. В этом окне задаются связи между любыми таблицами БД. Нажмите правую кнопку мыши в этом окне и выберите пункт Добавить таблицу, затем добавляйте таблицы, которые будут связываться.
Мы будем последовательно связывать таблицы СЛОВА, ЧАСТОТА_ СЛОВ, ЧАСТОТА_ЛЕММ и ЗапросГрам. Последовательность действий для этого Вперед.
1. Для определения связи встаньте на поле СЛОВО в таблице СЛОВА и перетащите это поле на поле, которое вы хотите с ним связать – поле СЛОВО таблицы ЧАСТОТА_СЛОВ. Когда вы отпустите кнопку мыши, на экране появится диалоговое окно Изменение связей.
2. Отметьте флажок Обеспечение связанности данных. Также отметьте флажок Каскадное обновление связанных полей. Не рекомендуется отмечать флажок Каскадное удаление связанных полей, поскольку при этом можно безвозвратно удалить многое из того, что может потребоваться в дальнейшем.
3. Щелкните мышью кнопку Создать. Это действие создаст связь, соединяющую две таблицы. Связь появляется на схеме в виде линии.
4. Выполните указанные действия для всех связей между таблицами, в результате получается схема связей, показанная на рис. 14.12.
Рис. 14.12. Схема связей при связывании таблиц
После определения связей нажмите вкладку Схема данных и выберите команду Сохранить.
Теперь вы можете изменять поле Часть речи в таблице ЧАСТОТА_ ГРАМ, и эти изменения произойдут также в таблице ЧастотаЛемм. Заменим все названия частей речи на соответствующие русские термины (рис. 14.13).
Рис. 14.13. Обозначение частей речи в таблице
При этом таблица Частота_Грам примет следующий вид (рис. 14.14).
Рис. 14.14. Таблица Частота_Грам
Имеется очень полезная возможность просматривать все записи подчиненной таблицы, соответствующие значению связывающего поля в главной таблице. Например, мы хотим увидеть все леммы с грамматическим признаком "наречие". В таблице ЧАСТОТА ГРАМ достаточно нажать на левый квадратик с плюсом в левой части записи с полем Часть_речи = наречие. Результат операции показан на рис. 14.15.
Рис. 14.15. Таблица наречий в сказке "Петух и жерновцы"
Раскрывшуюся подтаблицу можно точно так же сортировать, редактировать, добавлять и удалять ее поля. Кроме того, поскольку таблица ЧАСТОТА ЛЕММ имеет свою подчиненную таблицу – ЧАСТОТА_ СЛОВ, можно раскрыть следующую подтаблицу, нажав квадратик + в интересующей нас записи.
Отчеты – это специализированные объекты БД, похожие во многом на таблицы и запросы. Отчет служит для представления данных БД в форме, пригодной для печати. Самый простой способ напечатать одну таблицу БД – это воспользоваться средствами MS Office•, нажать кнопку Office (круглая кнопка в верхнем углу любого пакета MS Office) и затем Печать. Для больших таблиц можно в режиме Таблица сузить столбцы, которые нас не интересуют до минимума, уменьшить шрифт, воспользоваться Альбомной ориентацией страницы и пр.
Пример печати фрагмента списка лемм с частотами всех глаголов из сказки показан на рис. 14.16.
Рис. 14.16. Фрагмент списка лемм с частотами всех глаголов из сказки "Петух и жерновцы"
Однако если требуется более существенная настройка печати, следует создать специальный объект Отчет. Для создания отчета в Access выберите на ленте последовательность команд Создание – Отчеты – Отчет. На экране появится новая вкладка с простым автоматически сгенерированным отчетом. Этот отчет организует информацию в виде таблицы, в которой каждое поле исходной таблицы (или запроса) занимает отдельный столбец. Поля располагаются в отчете слева направо в том же порядке, что и в исходной таблице. Вы можете удалить ненужные столбцы из отчета, встав на заголовок столбца, нажав правую кнопку мыши и выбрав команду Удалить. Можно также изменить ширину столбцов, встав мышью на границу столбца и сдвинув ее влево или вправо. Чтобы изменить порядок следования столбцов, следует нажать на заголовок столбца и перетащить его, не отпуская кнопку мыши, на новое место.
Для изменения форматирования, смены шрифтов, цвета и заливки выберите нужный столбец, на ленте нажмите раздел меню Формат, затем Шрифт и выберите нужный шрифт и его размер. С помощью этого метода можно изменить способ отображения заголовков таблицы, имен столбцов и название данных. Дополнительная информация о форматировании содержится в руководствах по Access. После окончания форматирования отчета следует закрыть объект отчета, при необходимости сохранив его.
Формы – неотъемлемая часть почти всех БД, облегчающая работу пользователей с БД. Формы обеспечивают улучшенную компоновку по сравнению с табличным представлением данных. В форме нужные данные всегда находятся в поле зрения пользователя. Вы можете включить в форму любой нужный вам текст, т.е. можно вставить пояснения, добавить вычисляемые данные, например, вычислить и отобразить среднюю нормированную частоту встречаемости данной лексемы в тексте без необходимости создания отдельного запроса. Во многих задачах требуется добавление записей в несколько связанных друг с другом таблиц. Форма позволяет выполнить эту работу в одном месте, при этом не нужно открывать две или более таблиц. Формы поддерживают элементы управления – кнопки, ссылки, списки и другие полезные элементы пользовательского интерфейса.
Создадим простейшую форму, позволяющую получить списки всех слов. Начнем с построения простой формы, позволяющей находить все предложения сказки, содержащие некоторую последовательность символов (запрос на рис. 14.3). Выберем из области переходов (левая часть экрана) таблицу ПРЕДЛОЖЕНИЯ. Перейдем во вкладку Создание, нажмем в ней кнопку Форма. На экране появится форма с двумя полями таблицы ПРЕДЛОЖЕНИЯ: Код и Sent. Перейдите в Режим формы (левая кнопка в ленте сверху), где ширину полей можно изменять. Для изменения Ширины полей встаньте курсором на границу любого поля формы, например, поля Sent, и сдвиньте се вправо или влево. Уменьшите ширину поля сдвигом границы вправо. Выделите оба поля формы, нажав Shift и кликнув левой кнопкой мыши на каждое поле формы поочередно. Встав на любое выделенное поле, нажмите правую кнопку мыши и в выпадающем меню выберите Макет – Табличный. Мышью измените размеры полей, сделав поле Код маленьким, а поле Sent – большим. Теперь сформулируем условия отбора. Перейдем на вкладку Главная – Сортировка – Фильтр. Нажмем кнопку Дополнительно и выберем Изменить фильтр. В форме ПРЕДЛОЖЕНИЯ появятся пустые поля Код и Sent, в которых мы можем задать условия отбора. Запишем в поле Sent: InStr([Sent];"боярин"), Нажав кнопку Применить фильтр, увидим на экране первое предложение сказки, удовлетворяющее условиям запроса (в предложении должно быть слово "боярин"). Чтобы просмотреть следующие предложения, удовлетворяющие тем же условиям, нажмите мышью в нижней строке формы кнопку стрелка (►) или нажмите па клавиатуре кнопку PageDown. На рис. 14.17 показан результат применения формы.
Рис. 14.17. Применение функции Форма при создании запроса
Форматирование запроса, включая изменение заголовка, размещение полей, добавление надписей, выполняется в режиме Конструктор и описано в руководствах по Access.
Выводы
В главе описаны особенности использования СУБД Access для решения некоторых типовых филологических задач. Рассмотрены способы ввода и редактирования текстовой информации, прикрепления OLE-объектов, гиперссылок. Показана необходимость и приведена методика связывания таблиц. Подробно описаны операции для формирования запросов на выборку данных, включая запросы с группировкой и их представление в виде SQL-выражеиий. Рассмотрен механизм сортировки результатов запроса. Все задачи разбираются на примере обработки короткого текста сказки.