249 11 19MB
Russian Pages 244 Year 2004
1
СПЕЦИАЛЬНОСТЬ
Книги издательства «Горячая линия - Телеком» можно заказать через почтовое агентство DESSY: 107113, г.Москва, а/я 10, а также интернет-магазины: www.dessy.ru www.top-kniga.ru Практический курс по электронным таблицам
MS Excel
Практический курс по электронный таблицам ным та
MS Excel
Книга содержит материал, необходимый для быстрого изучения общих принципов создания пользовательских таблиц, построения математическихформулсиспользованием встроенных функций, способов адресации данных, в том числе механизмов внутренней и внешней адресации и адресации с пользовательским именованием, а также средств и основных приемов форматирования чисел. Рассмотрены вопросы построения и настройки диаграмм, создания и ведения списков и БД, решения задач финансового анализа и анализа «что если». Отличительной особенностью и несомненным достоинством книги является наличие вариантов заданий к каждой теме.
Программирование в среде
Visual Basic for Applications
Профаммрашсреде А. Н. Пыльник
Visual Basic for Applications (VBA) - это сочетание одного из самых простых языков программирования и всех вычислительных возможностей Excel. Он прост в освоении и позволяет быстро получать ощутимые результаты конструировать профессиональные приложения, решающие практически все задачи, встречающиеся в среде Windows. При этом создание многих приложений с использованием VBA проще и быстрее, чем при помощи других языков программирования. VBA позволяет легко решать многие задачи, о возможности выполнения которых средствами Excel вы раньше даже и не догадывались.
Работа с текстовым процессором
MS Word
Paioia неистовым процессором
MS Word I—--— . •**
ГА. Новиков П. А. Новиков MB. Орлов А.Н.Пылы«ин
Книга содержит материал, необходимый для изучения и освоения общих принципов работы с наиболее распространенным текстовым редактором Microsoft Word. Большое внимание уделено основам работы и редактированию документов различного назначения, а также созданию графиков, диаграмм, написаниюформул. Отличительной особенностью книги является простота изложения, наличие контрольных вопросов, примеров выполнениязаданий.
Сайт издательства:
www.techbook.ru
дизайн, реклама, полиграфия — www.6v.ru
Н. Н. Гринченко, Е. В. Гусев, Н. П. Макаров, А.Н. Пылькин, Н.И. Цуканова
ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ
СУБД MICROSOFT
Рекомендовано УМО по образованию в области прикладной информатики в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 351400 «Прикладная информатика» и другим междисциплинарным специальностям»
Москва
Горячая линия - Телеком 2004
УДК 681.3.082 ББК 32.97 П79
П 79
Проектирование баз данных. СУБД Microsoft Access: Учебное пособие для вузов / Н. Н. Гринченко, Е. В. Гусев, Н. П. Макаров. А. Н. Пылькин, Н. И. Цуканова. - М.: Горячая линия-Телеком, 2004. 240с.: ил. ISBN 5-93517-193-7. В форме практических рекомендаций рассмотрены методы создания баз данных с использованием интегрированной среды Microsoft Access. Изложение материала оформлено в виде отдельных разделов, в которых кратко представлен теоретический материал но конкретной теме. Каждая представленная тема может выступать в качестве отдельного практического занятия (или темы лабораторной работы). С этой целью рассмотрены конкретные примеры, приведены вопросы и варианты заданий для самостоятельного выполнения. При описании интерфейса использована последняя на данный момент версия Microsoft Access 2002, Для студентов вузои, будет полезна всем желающим быстро опладеть основами работы с интегрированной средой MS Access 97...2002. ББК 32.97 Адрес издательства н Интернет WWW.TECHBOOK.KU e-mail: radio s_M@ mtu-nei.ru
Учебное издание Г р и н ч е н к о Наталья Николаевна. Гусев Ввгений Владимирович. Макаров Николай Петрович, Нылькнн Александр Николаевич Цуканова Нина Ивановна ПРОЕКТИРОВАНИЕ БАЗ ДАННЫХ. СУБД MICROSOFT ACCESS Учебное пособие для вузов Компьютерная верстка И. М. Чумаковой Обложка художника В. Г. Снгникова ЛР№071825от 1бмарта 1999г. Подписано в печать 15.01.04. Формат 60x88/16. Усл.-псч. л. 14,75. Тираж 2000 экз. Изд. №193. ISBN 5-93517-193-7
© Гринченко Н. Н., Гусев Е. В., Макаров, Н. П., Пылькин А. П.. Цуканова.Н.И., 2004 © Оформление издательства «Горячая линия-Телеком». 2004
Тема 1 ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ЯЯ-ТЕХНОЛОГИИ 1. Основные понятия реляционных баз данных 1.1. Базы данных База данных (БД) - это средство накопления и организации больших массивов информации об объектах некоторой предметной области (ПО). БД должна отображать текущие данные о предметной области, накапливать, хранить информацию и предоставлять различным категориям пользователей быстрый доступ к данным. Для этого данные в базе должны быть структурированы в соответствии с некоторой моделью, отражающей основные объекты ПО, их свойства и связи между ними. БД является частью сложной системы, называемой банком данных или системой баз данных (СБД). Эта система (рис. 1) включает в себя собственно БД, программные, технические, языковые и организационнометодические средства, обеспечивающие централизованное накопление и коллективное многоцелевое использование данных. Одна из компонент СБД - система управления БД (СУБД) представляет собой совокупность языковых и программных средств, с помощью которых БД создается и поддерживается в процессе эксплуатации.
Проектирование баз данных. СУБД MS Access Система баз данных
Информационные компоненты база данных. Данные и метаданные
Программные средства
Организационнометодические средства
Языковые средства
Администратор БД
Рис. 1. Компоненты СБД
При проектировании и эксплуатации БД к ней предъявляются следующие требования: 1. Адекватность отображения ПО (полнота, целостность, непротиворечивость, актуальность данных). 2. Возможность взаимодействия пользователей разных категорий; обеспечение высокой эффективности доступа, 3. Дружественность интерфейса. 4. Обеспечение секретности и конфиденциальности. 5. Обеспечение взаимной независимости программ и данных. 6. Обеспечение надежности БД; защита данных от случайного и преднамеренного разрушения; возможность быстрого и полного восстановления данных в случае сбоев в системе. Лицом, ответственным за создание, эксплуатацию и сопровождение БД является администратор базы данных (АБД). В его обязанности входит выполнение следующих функций: 1. Анализ предметной области, ее описание, формулировка ограничений целостности. 2. Проектирование структуры БД: состава и структуры файлов БД, связей между ними.
Тема I. Проектирование реляционных баз данных
5
3. Задание ограничений целостности при описании структуры БД и процедур обработки данных. 4. Первоначальная загрузка и ведение БД. 5. Защита данных: * обеспечение порядка входа в систему; * определение прав доступа пользователей к данным; » выбор и создание программно-технических средств защиты данных; * тестирование средств защиты данных; * сбор статистики об использовании данных; » исследование случаев нарушения защиты данных; » обеспечение восстановления БД, организация ведения системных журналов. 6. Анализ обращений пользователей к БД. 7. Работа с пользователями. 8. Работа над совершенствованием и динамическим развитием БД. В жизненном цикле БД одним из наиболее важных этапов является этап проектирования, от результатов которого зависит эффективность дальнейшего использования БД в решении задач предметной области. Главная задача, которая решается в процессе проектирования, • • это организация данных: интегрирование, структурирование и определение взаимосвязей. Способ организации данных определяется логической моделью, которая отражает основные сущности ПО и их взаимосвязи. Различные формы представления связей между объектами породили существование различных логических моделей данных, например: иерархическую, сетевую, реляционную. Наибольшую популярность к середине 1980-х годов приобрела реляционная модель в силу ее простоты и математической обоснованности. Как следствие большинство современных СУБД поддерживают эту модель. Поэтому настоящее пособие посвящено проектированию и разработке реляционных баз данных (РБД).
Проектирование баз данных. СУБД MS Access
1.2. Этапы проектирования БД При проектировании БД организацию данных принято рассматривать на трех уровнях: информационно-логическом (мифологическом), датаяогическом (концептуальном) и физическом. Этим уровням соответствуют инфологическая, концептуальная и физическая модели предметной области. Весь процесс проектирования может быть разбит на три этапа (рис. 2). 1-й этап
Проектирование мифологической модели данных
Анализ предметной области: объекты и связи между ними Информационные потребности пользователя (анализ запросов) Анализ существующих и будущих прикладных программ Построение информационной структуры
2-й этап. Проектирование концептуальной модели БД. Выбор СУБД. Отображение инфологической модели на логическую модель
Оценка эксплуатационных характеристик прикладных программ
3-й этап. Проектирование физической модели БД. Структура физической записи
Оценка физической модели БД Реализация БД Рис. 2. Этапы проектирования БД
Тема 1. Проектирование реляционных баз данных
7
1.3. Реляционная модель данных Модель данных - это правила, которые определяют структуру данных, допустимые реализации данных и допустимые операции над данными. Мифологическая модель описывает предметную область на содержательном уровне. На первом этапе при ее разработке осуществляется анализ предметной области, решаемых задач, запросов пользователей и документов, отражающих события и процессы, протекающие в ПО. Результатом этого анализа являются списки объектов предметной области, перечни их свойств или атрибутов, определение связей между объектами и описание структуры ПО в виде диаграммы. Для каждого из атрибутов указываются ограничения на их возможные значения, определяемые свойствами ПО. Такие ограничения называются ограничениями целостности данных. Мифологическая модель объединяет в единое «обобщенное представление» требования отдельных пользователей и служит средством общения между ними, поэтому разрабатывается без учета особенностей представления данных в памяти ЭВМ. Концептуальная модель описывает объекты и связи ПО на формальном уровне. Ее разработка ведется на втором этапе и основывается на инфологической модели, полученной на первом этапе. В процессе разработки осуществляется выбор типа модели данных и определяются ее элементы. Каждая СУБД поддерживает только одну из моделей. Выбор модели данных и выбор СУБД тесно взаимосвязаны. Внутренняя, или физическая, модель данных определяет способ размещения данных непосредственно на машинном носителе, учитывает распределение данных, методы доступа и способы индексирования. В современных прикладных программных средствах этот уровень организации обеспечивается автоматически без вмешательства пользователя. Пользователь, как правило, оперирует в прикладных программах и универсальных программных средствах представлениями СУБД на организацию данных. Таким образом основная задача проектирования заключается в создании инфологической модели ПО и концептуальной БД. 1.3.1. Определение РБД РБД представляет собой совокупность отношений, содержащих всю информацию, которая должна храниться в БД. Отношением называется любая взаимосвязь между объектами и/или их
8
Проектирование баз данных. СУБД MS Access
свойствами. Различают взаимосвязи между объектами, между свойствами одного объекта и между свойствами различных объектов. Отношение задается своим именем и списком атрибутов элементов, связанных этим отношением: ()
Имя отношения выбирается таким образом, чтобы оно поясняло смысл связи между элементами отношения (семантику отношения). Для описания некоторого свойства объекта или связи используется простейший неделимый элемент данных, называемый атрибутом. Атрибут характеризуется именем, типом, значением и другими свойствами. Имя атрибута - это условное обозначение атрибута в процессах обработки данных. Оно должно быть уникальным в пределах одного и того же отношения. Значение атрибута - величина, характеризующая некоторое свойство объекта и связи. Атрибуты соответствуют классам сущностей, объединяемых данным отношением. Список имен атрибутов отношения и их характеристик называют схемой отношения. Характеристики атрибутов задают область допустимых значений (ОДЗ) доя каждого аргумента отношения. Атрибуг или набор атрибутов, которые могут быть использованы для однозначной идентификации конкретного кортежа (конкретного экземпляра отношения), называется первичным ключом отношения или просто ключом. Математически отношение определяется следующим образом: пусть даны N множеств данных D\, D2f £>з, ••-, Av, тогда R есть отношение (связь) между этими множествами, если R - множество упорядоченных W-кортежей вида , где d\eD\, d2cD2, ..-, dN cDN. Множества D[t D2, ..., DN являются множествами возможных значений атрибутов А\, А2,..., AN отношения R и называются доменами. Таким образом, отношение является подмножеством декартова произведения одного или более доменов D,xD2j:---JcDv. Каждый кортеж в отношении уникален. Пример 1. БД о поставке деталей может быть описана следующими отношениями:
Тема 1. Проектирование реляционных баз данных
9
Деталь (. , , ). Поставщик (, , ). Поставка деталей (5), если для каждого значения А существует ровно одно связанное значение В. ФЗ можно выявить, исходя из базовых свойств самих атрибутов путем анализа.
Тема 1. Проектирование реляционных баз данных
11
При второй нормальной форме (2НФ) должна обеспечиваться 1НФ и каждый неключевой атрибут функционально полно зависит от ключа. Полная ФЗ от ключа означает, что если ключ составной, то любой неключевой атрибут зависит от всего ключа и не зависит ни от какой его части. При третьей нормальной форме (ЗНФ) отношение должно находиться 2НФ, а также каждый неключевой атрибут нетранзитивно зависит от ключа, проще говоря: отсутствуют ФЗ между неключевыми атрибутами. Нормальная форма Бойса-Кодда (НФБК) является развитием ЗНФ и требует, чтобы в отношении были только такие ФЗ. левая часть которых является потенциальным ключом отношения. Потенциальным ключом называется такое подмножество атрибутов отношения, которое удовлетворяет определению первичного ключа отношения. Фактически первичный ключ - это один из потенциальных ключей, назначенный в качестве первичного. Поясним эти определения на примере. Пример 3. Рассмотрим БД для консультанта радиоакадемии Успеваемость студентов общежития. БД состоит из одного отношения, в котором представлена информация о студентах, проживающих в общежитии, и их оценках по изучаемым дисциплинам в различных семестрах. Задано отношение: Студент (, , , , , , )
Основные атрибуты отношения: номер зачетной книжки студента (Сном); фамилия студента (Сфам); номер комнаты (Кном), где он проживает; номер телефона (Тном) в комнате (предполагается, что один телефон на одну комнату); дисциплина; семестр; оценка. Диаграмма (рис. 3) отражает ФЗ между атрибутами отношения: Сном~>Сфам, Сном—>Кном, Сном->Тном, Кном~>Тном, Тном—>Кном, ~> ->0ценка.
Проектирование баз данных. СУБД MS Access
Рис. 3. Диаграмма ФЗ отношения Студент Рассмотрим некоторые определения. Потенциальный ключ представляет собой атрибут (или множество атрибутов), который может быть использован для данного отношения в качестве первичного ключа. Детерминантом называется левая часть ФЗ. Большинство возможных аномалий в БД будет устранено в случае приведения каждого отношения в НФБК. Эта форма определяется следующим образом: отношение находится в НФБК тогда и только тогда, когда каждый детерминант отношения является потенциальным ключом. Существуют НФ более высокого уровня, которые накладывают более сильные ограничения; на практике в большинстве случаев достаточно получить отношения в НФБК. В отношении Успеваемость студентов общежития один потенциальный ключ *) И» 5
Цвет
Коробка перед Количество дв| Обивка 4 Ткань 4 Ткань 4 Ткань 2 Велюр 2 Кожа
Антрацитовый Автоматика Красный торна Ручная бутылочное ст Автоматика Небесно-голуб Ручная Черный Ручная « !
!
|»1
-| г
~ъ
Рис. 34. Заполнение таблицы
При добавлении новой записи в поля, для которых были определены значения по умолчанию, будут автоматически введены соответствующие значения, а именно: Количество дверей=4 и Коробка передач^Ручиая. Если необходимо изменить значение в поле, содержащем значение по умолчанию, следует щелкнуть в нем мышью и ввести новое значение. Кроме упомянутых выше стандартных установок, в поле Специальная модель Access вносит по умолчанию значение Нет. Здесь разработчик таблицы исходил из того, что большинство моделей являются стандартными. При необходимости значение Нет можно изменить на Да. В три денежных поля - Заводская цена, Транспортные издержки и Предпродажная подготовка просто введите числа (без точек и запятых). Access автоматически преобразует эти числа в форматы денежных величин. Формат валюты зависит от установок для страны в системе Windows. Заполните таблицу следующими пятью записями: 1. Код модели Модель Мощность двигателя Цвет Количество дверей Коробка передач Обивка Другое оснащение Заводская цена
12579 Corolla LiftbackXL 53/75 Красный торнадо 4 (уже введено) Ручная (уже введено) Ткань Радио/плейер, раздвижная крыша
35700
Тема 3. Таблицы Транспортные издержки Предпродажная подготовка Специальная модель 2. Код модели Модель Мощность двигателя Цвет Количество дверей Коробка передач Обивка Другое оснащение Заводская цена Транспортные издержки Предпродажная подготовка Специальная модель 3. Код модели Модель Мощность двигателя Цвет Количество дверей Коробка передач Обивка Другое оснащение
Заводская цена Транспортные издержки Предпродажная подготовка Специальная модель 4. Код модели Модель Мощность двигателя Цвет Количество дверей Коробка передач
,Н
950
ю:
Нет 12580 Corolla LiftbackGT 69/90 Бутылочное стекло I Автоматика Ткань Радио/плейер, раздвижная крыша, лаковое покрытие «металлик» 39200 1 200 L05 Нет 12653 Corolla CompactGT 100/139 Черный ' Ручная Кожа Радио/плейер, раздвижная крыша, алюминиевые «дворники», лаковое покрытие «металлик», электроиодъемник окон 41 100 975 105 Да 12651 Corolla CompactXL 90/135 Небесно-голубой 2 Ручная
Проектирование баз данных. СУБД MS Access
80
Обивка Другое оснащение Заводская цена Транспортные издержки Предпродажная подготовка Специальная модель 5. Код модели Модель Мощность двигателя Цвет Количество дверей Коробка передач Обивка Другое оснащение Заводская цена Транспортные издержки Предпродажная подготовка Специальная модель
Велюр Раздвижная крыша, электроподъемник окон 37900 1050 105 Да 12410
Corolla Kombi 60/90 Антрацитовый 4
Автоматика Ткань Навесной багажник, раздвижная крыша, электроподъемник окон 46200 1 100 !• 5 Нет
При желании можно дополнить таблицу моделей, воспользовавшись каталогом фирмы Toyota. Чем больше в таблице записей, тем интереснее будет проходить процесс поиска и обработки данных. При следующем открытии таблицы можно убедиться в том, что Access сортирует записи по полю первичного ключа, т. е. по коду модели. Запись с наименьшим кодом модели будет стоять первой (Corolla Kombi; Код модели 12410), несмотря на то что была введена последней.
4.4. Редактирование и печать записей Пользователь может добавить в таблицу любое количество записей, удалить или исправить имеющиеся данные. Удаляемые данные следует предварительно маркировать с помощью селекторной колонки и нажать клавишу [Del] или выбрать из меню Правка команду Удалить или Удалить запись. Access во избежание случайных ошибок выдаст запрос о том, действительно ли должна быть удалена маркированная запись, т. е. пользователь получит возможность вовремя отказаться от удаления.
Тема 3. Таблицы Если таблицу необходимо перенести на бумагу, из меню Файл следует выбрать команду Печать. Можно отпечатать только некоторые записи. Их следует предварительно маркировать в режиме заполнения таблицы и затем активизировать команду Печать. В группе Печатать активизируйте кнопку Выделенные записи и щелкните мышью на кнопке ОК для запуска процесса печати (рис. 35).
состояние; Готов тип;
Panasonic KX-P6500
место:
LPT1:
заметки:
Г" печать в файл Копии
Печатать
• Код «одели i Напер iaitasa 1 С€рзщенив j Иия [п Отчество |_ Фамилия | Почтовый адрес • Почтовьй индекс | Населенный пункт __ Телефон 1 Дата закана Г [ Скидка
,
-
.
Тип д а н ч ы < ( Числовой Числовой Текстовый Текстовый Текстовый Текстмьй Текстовый Числовой Текстовьй Текстовьй Дата/время Чиспсвой
'
"
.
, '
Описание
, „{УНйй 1 л
Свойства тля Общие
j Подстановка ]
PasMep полч Дттное целое Формат поля Основной Числа десятичных ;Н;КОБ 0 Маска вводя Подпись Значение по уиопчан№о 0 Услжие на (начение Сообщение об ошибке Обняв тельное поле Нет Индексированное поле Да (Допускаются совпадения)
Пня |>^пн «о^ет cw-тоятв иь 6* зчако» с учетич грибелое. finacnpas^i- ^ hwsi-ам попей е^хчите 'AW.IUV F i -
Рис. 36. Проект таблицы клиентов
86
Проектирование^ баз данных 1 СУБД MS Access
На ней отображается первичный ключ, установленный для поля Номер договора. Это условие выполняется, поскольку для характеристики Индексированное поле установлено значение Да (Совпадения не допускаются). Благодаря первичному ключу будет исключен ввод повторяющихся номеров договоров. Для объявления поля Номер договора полем первичного ключа маркируйте соответствующую строку спецификации и выполните щелчок на пиктограмме ключа в строке пиктограмм или выберите из меню Правка команду Ключевое поле. Перейдите из режима проектирования в режим заполнения таблицы посредством щелчка на пиктограмме таблицы в строке пиктограмм или выберите опцию Таблица в меню Вид. Сохраните готовый проект таблицы, выбрав для него подходящее имя, например Клиенты. В спроектированную таблицу клиентов необходимо ввести готовые данные. На ней отображается первичный ключ, установленный для поля Номер договора. Это условие выполняется, поскольку для характеристики Индексированное поле установлено значение Да (Совпадения не допускаются). Благодаря первичному ключу будет исключен ввод повторяющихся номеров договоров. Для объявления поля Номер договора полем первичного ключа маркируйте соответствующую строку спецификации и выполните щелчок на пиктограмме ключа в строке пиктограмм или выберите из меню Правка команду Ключевое поле. Сохраните готовый проект таблицы, выбрав для него подходящее имя, например Клиенты. В спроектированную таблицу клиентов необходимо ввести готовые данные. Перейдите из режима проектирования в режим заполнения таблицы посредством щелчка на пиктограмме таблицы в строке пиктограмм или выберите опцию Таблица в меню Вид. Вы можете заполнить таблицу клиентов произвольными адресами, телефонами и фамилиями. В отношении кодов моделей следует быть осторожнее: эти коды должны в точности совпадать с таковыми из таблицы Предлагаемые модели. В поле Скидка для особенно надежных партнеров указаны суммы скидок в процен-
Тема 3. Таблицы
87
тах. Для всех остальных клиентов введите в это поле нуль (0). При заполнении полей процентного формата следует учитывать, что вводимую величину Access умножает на 100 и интерпретирует как проценты. Если, к примеру, клиент должен получить скидку 10 %, то надлежит ввести значение 0,1 (0,1 х 100 % = 10 %). Если бы в поле скидки было введено значение 10, то получилась бы скидка 1 000 % (10 х 100 % - 1 000 %). Произведя некоторый анализ созданной таблицы, заметим, что поле Обращение может иметь только два значения («Господину» или «Госпоже») и может быть преобразовано в комбинированный список (поле со списком), как это было проделано с полем Коробка передач в таблице Предлагаемые модели. Несколько по-другому строится комбинированный список для поля Код модели. Он может базироваться только на моделях, содержащихся в таблице Предлагаемые модели. Процесс создания комбинированного списка на основе данных другой таблицы проследим после рассмотрения связывания таблиц в БД.
5. Связывание таблиц Access позволяет строить РБД, отдельные таблицы которых могут быть связаны между собой отношениями. В нашем примере нужно объявить связь между таблицей предлагаемых моделей и таблицей клиентов. Для этого из меню Сервис следует выбрать команду Схема данных. На экране появится окно Схема данных. При первом открытии оно будет пустым. Чтобы добавить таблицы или запросы в окно Схема данных, необходимо выбрать опцию Добавить таблицу в меню Связи или нажать кнопку Добавить таблицу, расположенную в строке пиктограмм. В списке таблиц раздела Таблицы окна Добавление таблицы (рис. 37) маркируйте таблицу Предлагаемые модели, для которой необходимо установить связь, и нажмите клавишу Добавить. Ту же операцию проделайте с таблицей Клиенты. Затем нажмите клавишу Закрыть.
Проектирование баз данных. СУБД MS Access
:Добавление таблицы
Таблицы j Запросы | Таблицы и запросы Закрыть i
Рис. 37. Добавление таблицы в схему данных
Связь между таблицами следует организовать так, чтобы при работе с таблицей клиентов было достаточно ввести только соответствующий код модели, после чего вся необходимая информация по желаемому типу автомобиля будет извлечена из таблицы моделей. С помощью мыши перенесите поле, которое следует использовать для установки связи, из списка одной таблицы к соответствующему полю другой таблицы. В данном случае таковым является поле Код модели. На экране появится диалоговое окно Изменение связей (рис. 38), в котором будет предложена связь между таблицами Предлагаемые модели и Клиенты через поле Код модели (для обеих таблиц). Несколько клиентов вполне могут заказать один и тот же тип автомобиля, а значит, одной записи в таблице моделей будет соответствовать несколько записей в таблице клиентов. Теперь посредством установления типа отношений между таблицами необходимо определить параметры связи. Установите опцию Обеспечение целостности данных. Для данных таблиц будет установлено отношение типа Один ко многим, что отразится в области Тип отношения. Это означает, что одной записи главной или первичной таблицы Предлагаемые модели могут быть поставлены в соответствие несколько записей связанной (подчиненной) таблицы Клиенты. Данное отношение является наиболее распространенным в РБД.
Тема 3. Таблицы Изменение связей Таблица/запрос:
Связанная таблица/запрос:
I Код модели
...". 1 Код подели
Л
Отмена Объединение...
V
-у Обеспечение целостности денных
Новое..
. Г каскадное обновление связанных полей '
каскадное удаление связанных записей
Тип отношения;
один-ко-многим
Рис. 38. Объявление связи между таблицами
После нажатия кнопки Создать в окне Схема данных (рис. 39) будет графически показана созданная связь между таблицами Предлагаемые модели и Клиенты. Примечание. Поля, через которые осуществляется связь, в первичной и связанной таблицах могут иметь разные имена. Необходимым условием установления связи является совпадение типа данных и значений характеристик (в особенности размера).
|i Кед модели I How ер заказа
| Обращение |Ммя ;) Отчество JФамилия •IПочтовый адрес |Почтовый индекс 3 Нас елейный пункт j Тепе фон И Дата заказа IСкидка
Модель Мощность двигателя Цвет Коробка передач | Количеств о дверей | Обивка Другое оснащение Заводская цена Транспортные издержки Предпродажная подготовка Специальная модель
Рис. 39. Схема данных с установленной связью
90
Проектирование баз данных. СУБД MS Access
Наконец, установление опции проверки ссылочной целостности Обеспечение целостности данных обеспечивает проверку ссылочной целостности связи между обеими таблицами. Эта проверка позволяет избежать ряда ошибок, допускаемых при удалении записей из первичной таблицы и вводе информации в связанную таблицу. Благодаря проверке ссылочной целостности можно избежать следующих ошибочных ситуаций: • добавления в связанную таблицу записей, для которых отсутствует соответствующая запись в первичной таблице; • осуществления изменений в главной таблице, которые приведут к появлению «осиротевших» записей в связанной таблице; • удаления записей в главной таблице, на которые ссылаются записи из связанной таблицы.
5.1. Что означает целостность данных Примечание. Между двумя таблицами может быть объявлено только одно отношение. Если дается определение другому отношению между теми же таблицами, то оно заменит уже имеющееся отношение. Как указывалось ранее, под целостностью данных понимается выполнение логических ограничений на данные. Эти ограничения вытекают из свойств ПО и свойств модели данных. Одни ограничения определяются неявно и зависят от выбранной модели данных, для реляционной модели они рассмотрены в [1]. Другие ограничения указываются пользователем явно с использованием средств Access. К таким ограничениям относятся ограничения на ОДЗ атрибутов таблиц, которые задаются при определении типов данных и характеристик полей таблицы. Процесс введения таких ограничений рассмотрен в предыдущих разделах. Второй тип ограничений - это ограничения на связи между таблицами. Рассмотрим особенности задания таких ограничений. Целостность данных означает систему правил, используемых в Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления
Тема 3. Таблицы
91
или изменения связанных данных. Установить целостность данных можно, если выполнены следующие условия: 1. Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс. 2. Связанные поля имеют один тип данных. Здесь существует два исключения. Поле счетчика может быть связано с числовым полем формата Длинное целое. А также поле счетчика можно связать с числовым полем, если в обоих полях для свойства Размер поля задано значение Код репликации. 3. Обе таблицы принадлежат одной БД Access. Если таблицы являются связанными, то они должны быть таблицами Access. Для установки целостности данных БД, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из БД других форматов установить целостность данных невозможно. 4. Установив целостность данных, необходимо действовать в соответствии со следующими правилами. 5. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ на несуществующую в БД модель машины «Toyota», но можно создать запись для заказа, в котором клиент пока не определился, какую модель машины он предпочтет, если ввести пустое значение в поле Код модели. 6. Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы Модели, если в таблице Клиенты имеются заказы, относящиеся к данной модели. 7. Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данным значением. Например, невозможно изменить код модели в таблице Модели, если в таблице Клиенты имеются заказы, относящиеся к этой модели.
92
Проектирование баз данных. СУБД MS Access
Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок Обеспечение целостности данных. Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет. Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки Каскадное обновление связанных полей и Каскадное удаление связанных полей. Если установлен флажок Каскадное обновление связанных полей, то при изменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей. Если установлен флажок Каскадное удаление связанных полей, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице. 5.2. Доработка таблицы клиентов Теперь пришло время рассмотреть построение комбинированного списка (поля со списком) для поля Код модели таблицы Клиенты на основе связанной таблицы Предлагаемые модели. Как уже было сказано выше, логично было бы представить список имеющихся моделей (и/или их кодов) при заполнении поля Код модели таблицы Клиенты. Это избавило бы пользователя от ввода данных с клавиатуры и, следовательно, от допущения ошибок. Выберите в окне БД таблицу Клиенты и нажмите кнопку Конструктор. В открывшемся окне проектирования таблицы щелкните в колонке Тип поля поля Код модели и из списка доступных типов полей выберите строку Мастер подстановок. В первом диалоговом окне мастера (рис. 40) выберите опцию столбец подстановки использует значения из таблицы или запроса, которая позволяет создать список значений для поля на основе другой таблицы, и нажмите кнопку Далее. В следующем окне из приведенного списка таблиц (или запросов) следует выбрать таблицу Предлагаемые модели, так как именно эта таблица является для нас источником списка кодов моделей. Нажав кнопку Далее, перейдите к следующему окну мастера.
Тема 3. Таблицы
93
.Создание подстановки Выберите таблицу или запрос со значениями, которые будет содержать столбец подстановки. Таблица: Предлагаемые модели
Показать fi" 1аблиць!
С Запросы С Таблицы и запросы
Отмена
|
Рис. 40. Выбор таблицы для создания поля со списком В этом окне (рис. 41) из предложенного списка полей Доступные поля выберите поля, значения которых будут фигурировать в списке. В нашем случае достаточно выбрать поле Модель, так как ключевое поле Код модели автоматически присоединится к списку. Это можно увидеть в следующем диалоговом окне мастера (рис. 42), если отключить опцию Скрыть ключевой столбец. Создание подстановки
m «ex ххх яих m та ш ххх
Какие поля содержат значения, которые следует включить в столбец подстановки? Отобранные попя станут столбцами в объекте "столбец подстановки".
ах act ж m
Доступные поля;
Выбранные поля;
Код модели Цвет Коробка передач Количество дверей Обивка Заводская иена Транспортные издержки
Отмена |
Рис. 41. Выбор полей для формирования списка
Проектирование баз данных. СУБД MS Access
94 Создание подстановки
Задайте ширину столбцов, которые содержит столбец подстановки. Перетащите правую границу заголовка столбца на нужную ширину или дважды щежните ее для автоматического подбора шириш. Г Ккрить ключевой столбец (рекомендуется)
Отмена
|
Рис. 47. Выбор имен полей для таблицы г' Импор г электронной теблицы rtieerca возможность описать каждое поле импорта. Вьйерите ngtie в нижней части окна и измените сведения в области "Описание поля". Описание поля иняполя: \i индцкс:
[Да (Допускаются совпадения)
V] Г" не импортировать (прояустить) папе
Номер заказа )Код модели |Иодель Иощность 1131 orolia LifibackXL S3/7S 2132 orolla LifibackGT 69/90 3133 orolla CotnpaccCT 100/139 4 L34 orolle CompaccXP 90/135 5 135 o r o l l a Cottibi 60/90
>
| Далее >
|
Готе
Рис. 48. Мастер импорта электронной таблицы (шаг 2) В следующем окне (рис. 49) нужно установить первичный ключ для таблицы, исходя из следующих предложенных вариантов: • автоматически создать ключ - программа Access сама добавляет поле с первичным к лючом;
Тема 3. Таблицы
определить следующий ключ - поле, которое будет выполнять роль первичного ключа, из списка доступных полей выбирает пользователь; не создавать ключ - первичный ключ не присваивается. 63 Импорт электронной таблицы ,
е= 1 XXI НИХ m
Z х» m m 3 хи m m 2 mil mm 4 in m m
|Х|
Рекомендуется задать ключевое поле & новой таблице. Ключ используется для однозначного определения каждой записи таблицы и позволяет ускорить обработку данных, {? ] автоматически создать ключ f* определить ключ:
j
3
[Номер заказа
Г не создавать ключ
Код | Нон ер зака за Код модели Модель Нощно с ть j 12579 Corolla LifibackXL 53/75
• ННШ31 3
] •
•l32
12580
Hl33 Hi 34
12653
Hl35
12410
Corolla LifibackGT Corolla CornpaccGT Corolla CompaccXP Corolla Cornbi
12651
u
69/90
J
100/139 90/135 60/90
-
Отмена
\
-
Готово |
Рис. 49. Выбор первичного ключа при импорте данных
Теперь остается перейти к последнему диалоговому окну мастера и задать имя импортируемой таблицы. В этом окне можно установить опцию, которая позволит после импорта таблицы запустить программу анализа данных. 6.2. Встраивание таблиц Кроме возможности импорта данных из файлов другой прикладной программы, в Access существует возможность анализа данных, представленных в формате другой прикладной программы, а также возможность их обработки без выполнения импортирования. Такие данные представляют для Access внешнюю таблицу, они остаются в своем исходном формате и могут обрабатываться далее как в оригинальной прикладной программе, так и в Access.
100
Проектирование баз данных. СУБД MS Access
Для встраивания таблицы следует в меню Файл выбрать подменю Внешние данные и в нем активизировать команду Связь с таблицами. Данная команда устанавливает связь с таблицей из другой БД Access или из другой СУБД. В БД Access могут быть встроены данные в виде таблицы из файлов следующих форматов: • MS Access, •
Microsoft Excel,
•
Paradox.,
• • • • • • •
dBASE HI, dBASE IV, dBASE 5, Exchange, Outlook, Документы HTML, ODBC Database.
После выбора формата следует нажать кнопку Связь. Процесс связывания проходит под управлением мастера связи и аналогичен процессу импорта таблицы. После маркировки встраиваемой таблицы и нажатия кнопки Связь выбранная таблица встроится в активную БД и Access выдаст об этом подтверждающее сообщение. В окне БД рядом со встроенной таблицей появится пиктограмма-стрелка. Эта пиктограмма обозначает внешнюю таблицу, которая была встроена в Access. Открыв встроенную таблицу в режиме проектирования, пользователь сможет убедиться в том, что она выглядит точно так же, как и обычная Access-таблица. Хотя структуру этой таблицы изменить нельзя, т. е. здесь нельзя добавить или удалить поля, имеется возможность установить для встроенных таблиц те же свойства, что и для обычных Access-таблиц. 6.3. Экспортирование таблиц Пользователь может экспортировать данные из Access-таблиц в текстовые файлы, электронные таблицы, файлы других прикладных программ управления БД, а также в другую БД Access, воз-
Тема 3. Таблицы
101
можно, в формате предыдущей версии Access. Для выполнения экспортирования перейдите в БД (например, TOYOTA), содержащую экспортируемую таблицу (например Клиенты), маркируйте ее и активизируйте команду Экспорт из меню Файл. Появившееся при этом диалоговое окно экспорта будет выглядеть точно так же, как окно импорта (см. рис. 30) (за исключением заголовка). В нем следует выбрать формат файла или БД, в которую желательно произвести экспорт. Имеющиеся в распоряжении форматы экспорта идентичны форматам импорта. В зависимости от того, какой формат был выбран пользователем, запускаемый мастер экспорта автоматически или в диалоге с пользователем проводит экспорт выбранной таблицы. Процесс экспорта во многом схож с процессом импорта, поэтому подробно на нем мы останавливаться не будем. Выберите формат по своему вкусу, например Microsoft Excel. В качестве имени в поле Имя файла Access предложит имя Клиенты (так как мы маркировали эту таблицу). Теперь останется только выполнить щелчок на кнопке Экспорт. В результате Access создаст Excel-файл со всеми данными из Access-таблицы и вставит имена полей таблицы в первую строку таблицы Excel (рис. 50). ЕЭ Aticrospft Excel -Клиенты. xls ОКНО
£л[Мв1М
X «
лоделиДНомер заказа Обращение 120 Господину 121 Госпоже 12580 122 Господину 12651 123 Господину 12653 1 01.01.1999.
3.
Упорядочение выходных записей (сортировку). Пользователь может установить формирование записей в определенной последовательности, например по фамилиям в алфавитном порядке. 3.3. Включение полей в запрос
Сначала выберите поля, которые необходимо поместить в запрос. Первым в строку Лоле первой колонки QBE-области проектирования перетащите поде Код модели из списка полей таблицы Предлагаемые модели. Данное поле - единственное включаемое в запрос из таблицы моделей; все остальные поля необходимо взять из таблицы Клиенты: •
Имя, отчество,
• Фамилия, •
Почтовый адрес,
•
Почтовый индекс,
• Населенный пункт, •
Дата заказа.
Последовательно маркируйте перечисленные поля в списке полей таблицы Клиенты, удерживая клавишу [Ctrl] нажатой и вы-
116
Проектирование баз данных. СУБД MS Access
полняя щелчки на полях в указанной последовательности. Затем одновременно перетащите все маркированные поля в QBE-область проектирования. В строке Поле второй колонки отпустите кнопку мыши, и поля будут помещены в следующие друг за другом колонки. Окно проектирования после этого должно выглядеть так, как показано на рис. 64. га-нв
1Z21
Рис. 64. Результат включения полей в спецификацию запроса
Если в запрос необходимо поместить все поля из таблицы, следует выполнить двойной щелчок на строке заголовка того или иного списка полей. Access маркирует все поля, и их можно будет перетащить в область спецификации или сделать двойной щелчок мышью по полю, обозначенному звездочкой (*). Примечание. Если в основу запроса положено несколько таблиц, то для большей наглядности можно запустить индикацию соответствующих имен таблиц в QBE-области, чтобы знать, из какой таблицы взято поле. Для этого в меню Вид следует установить опцию Имена таблиц. Access добавит в спецификацию строку Таблица. Теперь при перетаскивании поля в область проектирования соответствующее имя таблицы также автомати-
Тема 4. Запросы - в центре внимания рынок сбыта
117
чески переместится и отобразится на экране. В запросе можно установить показ имен таблиц по умолчанию, выбрав опцию Вывод имен таблиц в разделе Таблицы/Запросы диалогового окна настройки Параметры, вызываемого из меню Сервис командой Параметры. Поле признака индикации Вывод на экран автоматически активизируется для всех полей в QBE-области проектирования. Если поле должно анализироваться запросом, но в его индикации нет необходимости, то следует отключить опцию Вывод на экран. Для нашего примера нет необходимости в индикации поля кода модели, так как точно известно, что будет запрошена только модель «Corolla Kombi». Избыток информации в запросе только затрудняет восприятие действительно ценных сведений. 3.4. Установка критериев отбора записей Запрос должен выбрать из базы только информацию о клиентах из Москвы, заказавших в этом году модель «Kombi». Поэтому критерии отбора должны устанавливаться по полям Населенный пункт, Код модели и Дата заказа. Ввод каждого критерия следует завершать нажатием клавиши [Enter]. Сначала следует ввести критерий отбора для поля Код модели. Начнется поиск всех «Kombi» антрацитового цвета. Критерий будет выглядеть таким образом: 12410. Затем следует выполнить щелчок в строке Условие отбора столбца Населенный пункт и ввести слово Москва. Access автоматически заключит это значение в кавычки. И наконец, вводится критерий для поля Дата заказа. Мы должны учесть только те заказы, которые поступили после 1 января 1999 года. Следовательно, критерий будет таким: >1.1.99. Access автоматически преобразует дату в формат, выбранный в режиме проектирования таблицы (Short Date: 01.01.1999), и вставит перед ней и после нее знак # {ограничитель константы типа Дата/Время). 3.5. Упорядочение записей в запросе Наконец, необходимо указать, что имена клиентов должны отображаться в алфавитном порядке по фамилиям. Для этого в поле Фамилия выполните щелчок на кнопке открытия списка строки Сортировка и из развернувшегося списка выберите порядок сор-
L18
Проектирование баз данных. СУБД MS Access
тировки По возрастанию. Таким образом, записи результата запроса будут упорядочены по фамилии клиентов от А до Я (в случае сортировки в убывающем порядке сортировка выполнялась бы от Я до А). Итак, запрос сконструирован. На рис. 65 показана готовая спецификация запроса.
Рис. 65. Готовый запрос
4. Выполнение запроса Выполнение запроса осуществляется одним из следующих способов: • в строке пиктограмм активизируется пиктограмма табличного представления; •
в меню Вид устанавливается опция Таблица;
•
в меню Вид устанавливается опция Сводная таблица',
•
в меню Вид устанавливается опция Сводная диаграмма;
•
из меню Запрос выбирается команда Выполнить;
• посредством щелчка активизируется кнопка выполнения запроса в панели инструментов (кнопка с восклицательным знаком).
Тема 4. Запросы - в центре внимания рынок сбыта
119
Для режимов Сводная таблица и Сводная диаграмма вначале будет предложено сконструировать их. К этому очень удобному инструменту анализа данных мы вернемся несколько позднее. Access отобразит на экране записи (динамический набор Dynaset), которые были выбраны из соединения таблиц Клиенты и Предлагаемые модели в соответствии с заданными критериями (рис. 66). • \> |>*|из 6
а
1
ei Продажа Антонеренрестный Владимир
Рязань
92000,СОр
192000,(Юр.
ГАЗ-3510 Москвич-214 210 000,00р.
Нива-2235 Запись:
Рис. 70. Пример конструирования перекрестного запроса: а - исходная таблица; б - результат выполнения перекрестного запроса
^Открыть ^Конструктор Ыр Стада- ь|
• Нонын запрос Щ Табп^ы
Ц'\ Щ
Форры
1 Отчеты 4i) Страницы 3
Макросы
i Создание зщ»са, выводящего данные в компактном формате, псдобни1 формату электромнш таблицы.
е
о VJSjilSi
[
Г?]|'ХП Конструктор Простой запрос Повторяющиеся записи Записи без подчиненных
«§ Модули ОК
Отмена
Групгы i'*1 Избранное
Рис. 71. Окно выбора режима создания запроса На первом шаге запустившегося мастера перекрестного запроса (рис, 72) выбираем исходную таблицу для построения запроса Продажа Лето и нажимаем кнопку Далее.
Тема 4. Запросы - в центре внимания рынок сбыта
125
Создание леренресгиых таблиц Выбейте таблицу «пи запрос, поля которые необходимо вывести в перекрестной мпросе.
Таблица; Предлагаемые полепи Таблица: Признаки Таблица: Тт
Для включения попей нз нескольких таблиц сначала создайте обычный запрос, содержащий все необходимые поля.
Покаить (• 1а6лииь( Р Загчихы (" Т-^йгицы и
Рис. 72. Первый шаг мастера перекрестного запроса: выбрать источник данных На втором шаге мастера (рис. 73) выбираем поля для заголовков строк Модель и переносим их в правое окошко либо двойным щелчком мыши, либо нажатием клавиши со знаком «больше» (>) в середине окна, после чего нажимаем кнопку Далее. Создание перекрестных таблиц поля, значажя которых будут использованы Б качестве мголоеков строг.
Доступньи толя:
Выбранные пола:
Допускается выбор не бояте трех полей. Выберите поля по порядку сортировки данных. Например, можно сначала выполните ссртнроБку эначешн по странам, а ззтви по городам.
ЗавНоиер
Опчена
I
Рис. 73. Второй шаг мастера перекрестного запроса: выбрать поле для заголовков строк
Проектирование баз данных. СУБД MS Access На третьем шаге мастера (рис. 74) выбираем поле для заголовков столбцов Филиал. Следует заметить, что как на этом, так и на предыдущем шаге по мере выбора поля в нижней части окна появляются образцы соответствующих заголовков результирующей таблицы-запроса в абстрактной форме. Создание перекрестных таблиц Выберитк поля для использования их значений е качестве заголовков столбцов,
1
Например, чтобы использовать имя каждого сотрудника в качестве заголовка столбца, выберите поле
Отмена
"
Пете itoi^ I4VT«6*UC .- н . Гр*
S^ii .- _ г п ,-,
L
bii».B«.L-Fg.allin»H«ie.)l'reKin!KH.Hl-a'i
нП».тя itouvaAerb
ЦЯ
' SSSSSSST ГЬонаяа4й1п
*'
ГЛЛВОПЦЖЦИС»ТЧ»«Г
гчв™кг*«ч
—
Рис. 83. Перекрестный запрос Продажа Авто по кварталам и двумя уровнями группировки по строкам (Модель->Филиал) Некоторые наиболее часто применяемые форматные символы приведены в табл. 47. Таблица 47 Символ С D Dd Odd Dddd Ddddd dddddd w
Описание Аналог встроенного общего формата День месяца, 1-2 цифр (1-31) День месяца, две цифры (01-31) Первые две буквы дня недели (Пн - Вс) Полное название дня недели То же, что и Краткий формат даты Устроенны и) То же, что и Длинный формат даты (встроенный) День недели (1-7)
132
Проектирование баз данных. СУБД MS Access Окончание таблицы 47 Описание
Символ WW
m
mm mmm
mmmm
q
Номер недели в году (1-52) Месяц, 1-2 цифры (1-12) Месяц две цифры (01-12) Первые три буквы месяца (Янв - Дек) Полное название месяца Кварта! (1—4)
Полный перечень форматов функции Format можно найти в справочной системе Access.
9. Запросы на изменение Запросы на изменение позволяют создать новые таблицы и обновить данные в имеющихся таблицах. В Access имеется 4 типа запросов на изменение: 1. Запросы на создание таблицы — это обычный запрос на выборку, с той лишь разницей, что результат запроса сохраняется в новой таблице, имя которой задается в начальном диалоге. На языке SQL это отличие выражается фразой INTO . Необходимость в создании новой таблицы возникает, когда требуется заранее сформировать нужный набор записей, который затем может быть использован для последующей обработки или передачи по каналу связи. 2. Запросы на добавление используют полученные в выборке записи для добавления в какую-либо из имеющихся таблиц. Очевидно, что схема выборки должна соответствовать схеме таблицы-приемника. 3. Запросы на удаление используют полученные в выборке данные для их удаления из таблицы-источника. 4. Запросы на изменение заменяют одни значения в каких-либо полях выбранных записей на другие, например: Увеличить сумму заработной платы на 20 %.
Тема 4. Запросы - в центре внимания рынок сбыта
133
9.1. Проектирование запроса на создание таблицы Рассмотрим пример конструирования запроса на создание таблицы, содержащей модели автомобилей, средняя цена продаж которых выше средней цены продаж всех моделей. Начальная стадия конструирования запроса аналогична описанному выше запросу на выборку: 1. На вкладке Запросы окна БД выбираем режим Создать, далее в выведенном списке выбираем Конструктор - открывается стандартное окно конструктора запроса на выборку. 2. Добавляем в запрос дважды таблицу Продажа Авто (соединять таблицы не надо). 3. Назначаем каждой таблице свой псевдоним (А1 и А2 соответственно), для этого откроем окно Свойства списка полей через контекстное меню и в этом окне в строке Псевдоним, последовательно переходя с одной таблицы на другую, вводим псевдонимы. 4. Как обычно перетаскиваем нужные поля в нижнюю часть конструктора; предположим, нам потребуются поля Модель и ЦенаПродажи, которые мы выбираем из таблицы A I , а также поле, ЦенаПродажи, из таблицы А2. При этом первое поле ЦенаПродаж будет использовано для вычисления средней стоимости продаж для каждой модели в таблице А1, а второе для вычисления общей средней стоимости продаж всех моделей. 5.
Включаем режим Групповые операции через меню Вид или инструмент £ и в строке Групповая операция нижней половины конструктора вводим значения: в поле Модель - Группировка, а в полях ЦенаПродажи - Avg (Среднее).
6. Установим в строке Условие отбора поля А1.ЦенаПродажи значение >=Avg([A2].lЦенаПродажи]). 7. Установим тип запроса Запрос на создание таблицы, используя меню или панель инструментов. При этом открывается окно для ввода имени создаваемой таблицы, в которое вводим имя ТДорогиеМодели (рис. 84).
Проектирование баз данных. СУБД MS Access
I.M
Рис. 84. Запрос на создание таблицы в режиме конструктора 8. Сохраним запрос под именем ЗДорогиеМодели. 9. Включаем режим Таблица для предварительного просмотра результатов выполнения запроса (рис. 85). модель Ниеа-2235
|Ауд-ЦвнаПрод1А¥д-ЦенаПрод 122 000.00р.
102 25000р
1050Ю.ООр.
102250Шв
SELECT А1.МоАель, Avg(Al .ЦенаПродажн) Д5 [Avg-ЦенлПродажп], Дуд(Д2.Цеч4Прода«и) AS [йуд-ЦелгЛрода*и1; INTO ТДорогиеМолвпн FROM ПродажаАвго AS A1, ГромжвАвто AS A2 GROUP BY А! .Модель
Рис. 85. Запрос на создание таблицы в режимах Таблица и SQL 10. Включаем режим SQL (см. рис. 85) и изменяем в нем имена полей будущей таблицы, которые указаны после слова SELECT
Тема 4. Запросы - в центре внимания рынок сбыта
135
во фразе AS, на СредняяЦенаМодели и СредняяЦенаВсехМоделей соответственно. Если снова включить режим Таблица, то увидим результат запроса с новыми именами полей (рис. 86).
Рис. 86. Запрос на создание таблицы с новыми именами полей
После закрытия запроса и его запуска по команде Открыть в окне БД будет создана таблица ТДорогиеМодели\ открыв ее в режиме конструктора, мы увидим, что поля этой таблицы унаследовали типы соответствующих полей таблицы-источника. По большому счету поле СредняяЦенаВсехМоделей в полученной таблице является лишним, так как его значение во всех будущих строках будет одинаковым. Поэтому в окончательном варианте запроса в режиме конструктора следует снять флажок Вывод на экран для этого поля. 9.2. Проектирование запроса на добавление Запрос на добавление может быть сконструирован в двух вариантах: добавление одной записи и добавление множества записей. В первом варианте он позволяет добавить в любую таблицу БД единственную запись либо во все ее поля, либо только в те, которые являются обязательными для ввода (эти свойства задаются полям на этапе конструирования таблицы). Кроме того, добавить запись можно с клавиатуры или непосредственно с помощью констант. Последний случай имеет смысл при добавлении с помощью программы, в которой производится вычисление добавляемых значений. Во втором варианте запрос на добавление строится как обычный запрос на выборку, с учетом того, что результат выборки будет добавляться в таблицу-получатель. В этом случае при конструировании запроса на выборку следует обеспечить совместимость типов полей таблицы-источника с соответствующими типами полей таблицы-получателя.
136
Проектирование баз данных. СУБД MS Access
Для примера рассмотрим запрос, с помощью которого в таблицу ТДорогиеМодели, созданную с помощью запроса ЗДорогиеМодели, добавим записи о моделях, средняя цена продаж которых выше, чем у модели «Москвич». Вначале сконструируем новый запрос на выборку, аналогично запросу Запроса! (можно воспользоваться им как шаблоном). Отличия будуг в том, что требуется ввести дополнительное условие отбора для поля: Продажа Авто_1.Модель, Москвич*, что означает все модели с начальным названием «Москвич», а в окончании что угодно (символ *), т. е. все похожие на «Москвич». Далее Access автоматически поставит операцию Like (рис. 87).
iff ••
> Г*"*:
Гррпона операция:
|Г&д?*аД|М5
Добавпенне: Модель Успеете rnttjfA;
Прода-аДвго Кс*Д"М1й"*^1Д-г-1
Цен^д-. ^Да*ДДбто_1
№«*
-
№злегь V
Рис. 87. Запрос на добавление в режиме конструктора на стадии определения таблицы-получателя
После этого преобразуем этот запрос в запрос на добавление (как и ранее, через меню или панель инструментов), для чего выберем из списка имя таблицы ТДорогиеМодели и нажимаем кнопку ОК. Затем в появившейся строке конструктора Добавление выбираем в столбце Модель поле Модель, а в столбце ЦенаПродажи поле СредняяЦенаМодели. Запрос готов; посмотрев его в режиме таблицы, мы увидим список моделей со средней ценой продаж больше, чем у Москвича. Сохраняем запрос под именем ЗДобавипгьВДорогие. Вид запроса на языке SQL и результат его работы показаны на рис. 88.
Тема 4. Запросы - в центре внимания рынок сбыта
1 М
.)ij^
Рис. 88. Запрос на добавление группы записей на странице SQL и результат его работы
Добавить одну запись в какую-либо таблицу можно двумя способами. По первому способу можно воспользоваться классическим запросом на языке SQL: INSERT INTO [Предлагаемые модели] ([Код модели], Модель, [Мощность двигателя], Цвет, [Количество дверей]) VALUES ('2111', 'ВАЗ 2111', 'Черный', 86, 4);
Этот же запрос в режиме конструктора показан на рис. 89. При этом если снова переключиться в режим SQL, то увидим, ч го Access изменил вторую часть запроса и он теперь выглядит следующим образом: INSERT INTO [Предлагаемые модели) ( [Код модели], Модель, Цвет, /Мощность двигателя}, [Количество дверей]) SELECT '2111'AS Выражение!, 'ВАЗ- 211Г AS Выражение2, 'Черный' AS ВыражениеЗ, 86 AS Выражение^ 4 AS Выражение5;
J Отекание . . I Вывод BOSK n J Уикалывл ; гписч
Поле: Выра*ии«1' "2п Соргирсе^эДэбгвле-*.-: Код «одели Условие отйора:
не>
Т 1
^*
Быоажгкпегг "ВАЗ
6ым*ен»еЭ: "Чей
ВвО**(№«1; 86
Выт-а*ея«5: 1
Чой*ль
Моиность двг!ГЭ11
Leai
1коли-*:7вояв*ов
138
Проектирование баз данных. СУБД MS Access
И наконец, второй способ добавления одной записи предусматривает ввод значений полей с клавиатуры. При этом следует сконструировать параметрический запрос на добавление, в котором параметрами будут вводимые значения. Для этого необходимо в предыдущем запросе вместо значений (после слова VALUES) записать в квадратных скобках приглашения на их ввод, например: VALUES ([Код модели],[Модель],[Цвет], [Мощность],}Дверей]). При запуске этого запроса Введите з н а ч е н и е параметра на экран выводится окно с заданКод модели ным в запросе приглашением для каждого поля, в которое следует ввести нужное значение, потом наживается клавиша [Enter]. Возможна и комбинация двух способов добавления одной записи, т. е одни значения задать непосредственно в запросе, а другие ввести с клавиатуры. 9.3. Проектирование запроса на удаление Удаление записей из таблиц БД требуется довольно часто, например информация устарела, или ее надо перенести в архив, или она стала ненужной и т. д. Для удаления определенных записей требуется сначала создать запрос на выборку этих записей обычным образом; при этом вопрос о том, какие поля включить в запрос, решается только с точки зрения правильной индикации удаляемых записей, чтобы не было сомнения, что это именно те записи, которые требуется удалить. К удалению следует относиться с большой осторожностью, так как удаленные данные восстановить будет нельзя. Например, сконструируем запрос на удаление из таблицы Предлагаемые модели моделей синего цвета. После того как запрос на выборку сконструирован, его надо преобразовать в запрос на удаление стандартным способом. При этом окно конструктора примет вид запроса на удаление, а в режиме SQL слово SELECT будет изменено на DELETE: DELETE [Предлагаемые модели].Цвет, *
FROM [Предлагаемые модели] WHERE ((([Предлагаемые моде:ш].Цвет)=«Синий»));
139
Тема 4. Запросы - в центре внимания рынок сбыта
Если требуется удалить записи из таблицы, связанной с другой таблицей отношением 1 - М, то запрос может не пойти, если не установлен флажок Каскадное удаление для этой связи. В этом случае необходимо будет сначала удалить записи из подчиненной таблицы, а потом уже из главной. Если флажок установлен, то при удалении записи из таблицы-владельца (со стороны один) будут также удалены все связанные с этой записью записи из таблицыподчиненного (со стороны многие). 9.4. Проектирование запроса на изменение Запрос на изменение данных позволяет изменить значения данных в нужных полях таблицы тех ее записей, которые удовлетворяют заданному условию отбора, или всех записей. При этом новое значение вычисляется для каждого поля по своему одному и тому же выражению. Например: Увеличить стоимость всех моделей ВАЗ цвета Металлик на J %. Чтобы сконструировать такой запрос, сначала выберем нужные записи из таблицы Предлагаемые модели с помощью запроса на выборку, а затем преобразуем его в запрос на изменение. После этого в строке Обновление окна конструктора в поле ЦенаПродажи введем выражение [Продажа Авто].ЦенаПродажи* 1,01 (рис. 90). ss4 УвелнчнтьНа1% : запрос на обновление
Модель Мощность двигателя Цвет Коробка передач
Количество дверей
Обивка Другое оснащение Заводская цена Транспортные издержки
Код Модель Филиал ДатаПрода*м ЦенэПродажи З-эеНомер
Попе; ЦенаЛоодажи цвет Имя таблицы: ПродажаАвто Предлагаемые но; 1 Обновление: ГПиодажаАвто!. Ценз Условие отбора: "Метаялик" или
А
Модель Предлагаемые н
Рис. 96. Выбор полей для диаграммы
Если в форме должны появиться все поля таблицы, следует просто выполнить щелчок на кнопке с двойной стрелкой (»), которая находится между списками полей, и Access будет использовать в форме все поля в той же последовательности, в которой они были определены при проектировании таблицы. Если в форму необходимо включить не все, а только некоторые (избранные) поля, то каждое такое поле следует маркировать в левом списке с последующим нажатием кнопки переноса (>). При этом необходимо соблюдать порядок маркировки, он должен соответствовать требуемому порядку включения полей в форму. Если поле было внесено в форму по ошибке, то для удаления из формы его достаточно маркировать в правом списке и выполнить щелчок на кнопке со стрелкой влево (Код модели i Количество дверей" |Коробка передач ', Модель {Мощность двигателя [обивка
л
ц^УМ8§В«ЕШМ8Ь£^ Специальная модель [Транспортные издержки
v.
Рис. 112. Формула обшей цены, введенная с помощью построителя выражений
Другие параметры в списке оставьте без изменений и закройте окно, выполнив двойной щелчок на кнопке вызова управляющего меню. Вычисляемое поле будет вставлено в проект формы. Теперь следует оформить часть формы, содержащую данные о цене. Эти данные необходимо сгруппировать и выделить. Активизируйте элемент Прямоугольник и с помощью манипулятора, удерживая его кнопку нажатой, начертите прямоугольник вокруг группируемых полей (фактически необходимо протянуть главную диагональ прямоугольника).
Проектирование баз данных. СУБД MS Access
170
После того как кнопка мыши будет отпущена, вокруг полей появится обрамление в виде прямоугольной рамки (рис. 113). Sj Заказы моделей Corolla : фар
Рис. 113. Сгруппированные денежные поля
3.4. Форматирование текста Созданная нами форма выглядит бледно из-за однообразия форматов текста в полях. Access допускает произвольное и независимое форматирование текста в каждом поле: выбор шрифта, его размера, начертания, а также выравнивание текста (по левому краю, по центру, по правому краю). Все эти оформительские возможности доступны для пользователя. Займитесь заключенной в рамку областью с денежными полями. Выделите текст содержащихся в ней полей (наименования и содержимого) курсивом. Поскольку речь идет о единообразном оформлении нескольких полей, то для ускорения процедуры маркируйте их, а затем все вместе оформите. Установите указатель мыши слева от первого поля Заводская цена и начертите с помощью мыши маркировочный прямоугольник, охватывающий все
Тема 5. Формы
171
поля ценовой группы. Отпустите кнопку манипулятора, и все охваченные маркировочным прямоугольником поля окажутся маркированными. Посмотрите на строку панели инструментов Формат (рис. 114) (она расположена под строкой панели инструментов Конструктор форм в верхней части окна Access): как только будет маркирован хотя бы один элемент, на панели станут доступными пиктограммы, с помощью которых можно сформатировать текст. Три пиктограммы (кнопки) с буквами Ж (Жирно), К (Курсив) и Ч (Подчеркивание) обеспечивают возможность выделения текста. Выполните щелчок на кнопке с изображением буквы А", и все поля маркированной области отобразятся в курсивном начертании. Попробуйте маркировать любое из полей наименований и по активизировавшейся кнопке с изображением буквы Ж на панели инструментов увидите, что все поля наименований Access автоматически выделил жирным шрифтом. Данные установки следует оставить.
Рис. 114. Развернутый список шрифтов
Теперь измените вид и размер шрифта. Маркировка области пока еще не отменена. На панели инструментов можно найти три
172
Проектирование баз данных. СУБД MS Access
комбинированных списка: в среднем приведены все доступные шрифты, в правом - размеры шрифта в пунктах. Выберите один из шрифтов (но только с кириллицей!), например Anal Cyr, и установите отличный от принятого по умолчанию размер, который не должен быть слишком большим, так как содержимое поля БД не поместится в соответствующее поле формы. Больше всего подходит размер 8 или 9 пунктов, В заключение можно изменить выравнивание текста. Предназначенные для этого пиктограммы также находятся в пиктографическом меню. Чтобы выровнять по центру величины цен в четырех полях, маркируйте эти поля и воспользуйтесь второй пиктограммой из группы выравнивания. Содержимое полей будет выровнено по центру. 3.5. Встраивание объекта Кроме области данных в проекте формы имеются еще область заголовка Заголовок формы и область примечаний Примечание формы. Введем в заголовок формы название формы. Для начала следует расширить область заголовка в форме. Установите курсор между областью заголовка Заголовок формы и областью данных Область данных так, чтобы он приобрел вид двунаправленной стрелки, нажмите кнопку мыши и переместите манипулятор вниз. Теперь в увеличенную область заголовка можно поместить заголовок формы. Для этого на панели элементов следует активизировать элемент Надпись. После чего необходимо переместить изменивший вид курсор в требуемое место области заголовка и выполнить щелчок мышью. Теперь, когда элемент размещен, можно ввести заголовок, например Заказы. Чтобы заголовок выделялся среди других надписей, следует установить для него другой вид и размер шрифта. Для улучшения внешнего вида формы можно встроить в ее заголовок иллюстрацию. Поскольку форма в нашем примере содержит данные о моделях автомобилей и заказах на них, вполне подходящей иллюстрацией будет изображение автомобиля. Процесс встраивания объекта базируется на механизме OLE (Object Linking and Embedding). При встраивании объекта можно применить один из двух доступных в Access способов: внедрение или связывание. В первом случае речь идет о том, что в таблице,
Тема_5_. Формы
173
на которой базируется форма, существует OLE-иоле (поле встроенного объекта), а объект (Внедренный объект} хранится в самой базе, внутри ее. Во втором случае встроенный объект (Связанный объект) хранится не в базе, а вне ее в собственном файле объекта (он внешний по отношению к базе). Посредством двойного щелчка на любом встроенном объекте (внедренном или связанном) можно запустить родительскую прикладную программу, с помощью которой этот объект был создан (например Paint, если речь идет об иллюстрации), после чего пользователь может изменить объект, а затем сохранить его в форме, т. е. актуализировать. Примечание. При связывании объект сохраняется не в файле БД Access, а в отдельном файле в формате родительской прикладной программы, с помощью которой он был создан (например, иллюстрация сохраняется в формате Paint). Во время отображения формы на экране Access использует «свежий» вариант связанного объекта из этого файла. Преимущество процедуры внешнего встраивания заключается в том, что оригинальный объект можно связать с несколькими Access-формами (и любыми другими документами), при этом он хранится только в одном месте - в своем собственном файле. Во всех местах, с которыми он связан, располагаются только ссылки на этот файл. Итак, нам необходимо встроить иллюстрацию автомобиля в форму. Простейшим графическим редактором, работающим со встроенными иллюстрациями в среде Windows, является Paint (рис. 115). Он включен в стандартную поставку операционной системы Windows. Вы также можете воспользоваться любым другим редактором, поддерживающим OLf-интерфейс (Core! Draw, Photofinish). В заголовке формы выполните щелчок справа от заголовка и из меню Вставка выберите команду Объект. Появится диалоговое окно выбора типа встраиваемого объекта (рис. 116). Открыть данное окно можно и с помощью панели элементов (инструментальное меню), расположенной на левом краю экрана: следует щелкнуть на соответствующей пиктограмме (Свободная рамка объекта или Присоединенная рамка объекта), перевести указатель мыши в заголовок формы и начертить там рамку для иллюстрации. Затем надлежит отпустить кнопку мыши, после чего появится диалоговое окно Вставка объекта.
Проектирование баз данных. СУБД MS Access
174
& irnaseOQI .wmT - Paint вид Рисунок Палитре Справка
Для получен*! спрэе™ выберите кеилнду "выме
Рис. 115. Создание иллюстраций в редакторе Paint Microsoft Access Тип объекта: тсажите, от какой (поле с...) до какой (поле по...) страницы должна осуществляться печать. Кроме того, можно определить, следует ли направлять документ на принтер (по умолчанию) или в файл (опция печать в файл) и сколько экземпляров должно быть отпечатано (поле число копии). Произведите необходимые установки и запустите процесс печати, выполнив щелчок на кнопке ОК. Если форму распечатывать не нужно, то выйти из режима предварительного просмотра следует с помощью кнопки Отмена.
Тема 5. Формы
189
Контрольные вопросы 1. Какие типы форм существуют в Access? 2. Что такое главная форма и подчиненная форма? 3. Поясните термины «управляющий элемент» и «поле наименования», 4. Оформите форму Информация о клиентах как самостоятельную, а не как подчиненную, по-новому разместив в ней поля и встроив в шапку формы Paint-иллюстрацию. 5. Какие управляющие элементы предлагает панель элементов? Испытайте элементы, которые не были описаны выше. 6. Как создаются вычисляемые управляющие элементы? 7. Придумайте несколько выражений, которые могли бы быть использованы в вычисляемых полях. 8. Какие возможности форматирования текста полей есть у пользователя? 9. Какие режимы представления формы доступны пользователю? 10. Как добиться того, чтобы при распечатке формы каждая запись размещалась на новой странице?
Задание 9 Для своей БД разработать формы: • простые - для независимых таблиц (таблиц-справочников) нулевого уровня; • •
составные - для связанных таблиц; главную кнопочную форму - для объединения форм, запросов и отчетов в одно приложение,
Тема 6 ОТЧЕТЫ Отчет оформляется в тех случаях, когда необходимо наглядно представить на экране или распечатать сводную информацию по БД. Для получения такой информации должны быть проведены подсчеты во всех группах данных, результатами которых будут общие и промежуточные суммы. По структуре и оформлению отчет подобен форме. В него также можно добавлять управляющие элементы и оформлять данные в соответствии с собственными вкусами (или требованиями заказчика). Отчет, однако, по сравнению с формой обладает большей гибкостью в представлении данных, и благодаря группированию данных с его помощью можно представить информацию более наглядно. Сконструируем проект отчета, позволяющего получить обзорную информацию по заказам. Из отчета можно будет быстро узнать, какую модель заказал тот или иной клиент. Обзорная информация из отчета даст возможность, к примеру, выяснить частоту продаж модели «Corolla Liftback GT» или дату поступления заказа от клиента Козлова. Прежде чем вывести отчет, необходимо пополнить записями таблицу Клиенты. Чтобы разрабатываемый отчет во время работы выглядел более реально, таблица должна содержать достаточное количество записей (например, десятка полтора). Для каждой модели, т. е. для каждого кода модели, придумайте еще по два-три клиента с новыми номерами заказов, уникальным адресом и датой заказа. Маркируйте таблицу клиентов в окне БД и щелкните мышью на кнопке Открыть. Access откроет таблицу в режиме заполнения, после чего в нее можно будет добавить новые записи. Каждую запись после завершения ввода Access автоматически сохраняет. После окончания работы с таблицей закройте ее и вернитесь в окно БД.
191
Тема 6. Отчеты
1. Создание отчета А теперь обратимся к отчету, который отражал бы текущее положение дел с заказами. Допустим, владельца фирмы интересует, хорошо ли идут дела по продаже автомобилей «Toyota» в России или же, наоборот, пора спасать положение. Выступая в роли руководителя отдела сбыта, попытайтесь подготовить для шефа необходимые сведения, оформив их в виде отчета с помощью средств Access. Новый отчет создается знакомым читателю способом: необходимо щелкнуть на кнопке Отчеты в окне БД и нажать кнопку Создать. В открывшемся диалоговом окне создания отчета Новый отчет (рис. 129) Access предложит задать таблицу, которая будет положена в основу отчета, и указать способ создания отчета. Посредством щелчка откройте комбинированный список таблиц и выберите таблицу Клиенты. Новый отчет
Автоматическое создание отчета из основе выбранных полей,
;-Автоотчат: в столбец |Аетоотчет: ленточный iМастер диаграмм (Почтовые наклейки
Выберите в качестве источника данных таблицу и пи запрос: 01
Отмена
Рис. 129. Окно создания отчета
Далее воспользуйтесь помощью мастера отчетов. По окончании работы созданный мастером отчет можно будет дополнить деталями и улучшить. Выберите строку Мастер отчетов, и на экране появится первое окно (рис. 130) из серии диалоговых окон мастера отчетов.
Проектирование баз данных. СУБД MS Access
192 Создание отчетов
п
Выберите norm для отчета. Допускается выбор нескольких таблнц или запросов.
Таблицы и запросы Таблицам Клиенты Доступные поля:
Выбранные поля:
Обращение
). Если поле было выбрано ошибочно, то необходимо маркировать удаляемое поле в правом списке и нажать кнопку со стрелкой, указывающей в обратном направлении ( 1||Л?глЫ J *О6"^тьдд«д
d,»*™i
I
I
*^m'J
Прг