
Пример выполнения работы
В качестве примера рассмотрим отношение, соответствующее варианту:
Таблицы
Код_сотрудника, ФИО, Должность, Оклад, Дом_адрес
Код_товара, Наименование_товара
Код_сотрудника, Код_товара, Цена_приходная, Приход, Дата_поступления
Определим типы значений атрибутов:
Код_сотрудника – INT
ФИО - CHAR(20)
Должность - CHAR(15)
Оклад – FLOAT
Дом_адрес - CHAR(30)
Код_товара – INT
Наименование_товара - CHAR(20)
Цена_приходная - FLOAT
Приход - FLOAT
Дата_поступления – DATE
В 1-ой таблице первичный ключ - Код_сотрудника, во 2-ой таблице - Код_товара, в 3-ей таблице мы имеем составной первичный ключ - Код_сотрудника+Код_товара, каждый атрибут которого является также внешним ключом.
Для обеспечения целостности БД определим связи между атрибутами таблиц:
1) Код_сотрудника(1) (один ко многим) Код_сотрудника (3)
2) Код_товара(2) (один ко многим) Код_товара(3)
Запустим СУБД MS Access и создадим файл базы данных. Используя режим Конструктора создадим справочные таблицы Сотрудники и Товары и обозначим в них первичные ключи (кнопка с изображением ключа на панели инструментов).
Далее введем по 10 записей в каждую из справочных таблиц.
Создадим в режиме Конструктора третью таблицу – учетную, используя при этом для столбцов Код_сотрудника и Код_товара тип: Мастер подстановок. Процесс создания подстановки значений для столбца Код_сотрудника из таблицы Сотрудники показан на рисунках 6.1 - 6.6.
Рис. 6.1 Выбор типа столбца подстановки
Рис. 6.2 Выбор таблицы, содержащей значения для столбца подстановки
Рис. 6.3 Выбор полей, содержащих значения для столбца подстановки
Рис. 6.4 Выбор ширины столбцов для подстановки
Рис. 6.5 Выбор поля, определяющего столбец подстановки
Рис. 6.6 Выбор названия для столбца подстановки
При завершении процесса подстановки СУБД потребует сохранения таблицы, необходимо сохранить её и дать ей название Учетная. Не выходя из режима Конструктора следует выполнить аналогичные действия для создания подстановки значений для столбца Код_товара из таблицы Товары (см. рис. 6.7).
Рис. 6.7 Создание подстановки для столбца Код_товара
И так далее, надо выполнить все шаги для создания столбца подстановки. Не выходя из режима Конструктора, нужно задать все оставшиеся атрибуты и их типы, завершить процесс создания таблицы и сохранить таблицу.
Нажав кнопку
(схема данных) на панели инструментов,
можно просмотреть связи между созданными
таблицами, при правильных действиях
схема будет иметь вид, показанный на
рисунке 6.8.
Если же при создании таблиц были допущены ошибки (не заданы первичные ключи, не созданы столбцы подстановок и другие), то следует исправить ошибки и создать связи в схеме данных.
Так например, для создания многозначной связи:
Код_сотрудника(1) (один ко многим) Код_сотрудника (3)
следует мышкой поле Код_сотрудника из таблицы Сотрудники совместить с полем Код_сотрудника из таблицы Учетная, в открывшемся диалоговом окне установить галочку Обеспечение целостности данных и завершить операцию.
Аналогично устанавливается связь:
Код_товара(2) (один ко многим) Код_товара(3).
Рис. 6.8. Схема данных.
Далее следует внести 10 записей в таблицу Учетная.
Выполним запросы, используя язык QBE (язык запросов по образцу).
Удалить из базы данных информацию по заданному наименованию товара.
В окне базы данных выбрать объект Запросы.
Создать запрос в режиме Конструктора.
Добавить нужную таблицу, нажать кнопку
(тип запроса) на панели инструментов и выбрать запрос на удаление.
Выбрать поля, необходимые для запроса, и написать условие для удаления (рис. 6.9).
Нажать кнопку
(запуск) и выполнить запрос. В результате из таблицы Товары будет удалена одна запись
Замечание: Если в таблице Учетная есть приход по этому виду товара, то удаление может не произойти.
Увеличить в два раза оклад сотрудникам с заданной должностью.
Выполним аналогичные действия и выберем тип запроса на обновление (рис. 6.10).
Рис. 6.9 Запрос 1 на удаление
Рис. 6.10 Запрос 2 на обновление
Создать новую таблицу данных, в которую занести наименования товаров и их цены, превышающие заданное значение.
Выполним такие же действия и выберем тип запроса на создание таблицы (рис. 6.11).
Рис. 6.11 Запрос 3 на создание таблицы
Выбрать коды и наименования товаров с кодами от 3 до 7.
Рис. 6.12 Запрос 4 на выборку значения из определённого интервала
Выбрать все сведения о сотрудниках, проживающих в указанном микрорайоне.
Рис. 6.13 Запрос 5 на выборку всех полей таблицы
Выбрать коды, названия и цены товаров, поступивших в заданном месяце.
Рис. 6.14 Запрос 6 на выборку временного периода
Запросы 4, 5, 6 – это запросы на выборку. Используя тип запроса на выборку и формируя те или иные условия выборки, мы получаем требуемые данные (рис. 6.12 – 6.14).
Определить количество кодов товара с ценой, не превышающей заданное значение.
Рис. 6.15 Запрос 7 на выборку с использованием групповой операции count()
Определить ФИО и должность сотрудника с наибольшим окладом.
Рис. 6.16 Запрос 8 на выборку с использованием подзапроса для агрегатной функции.
Определить название товара и его цену, являющуюся минимальной за весь период.
Рис. 6.17 Запрос 9 на выборку с использованием подзапроса для агрегатной функции
Определить общую стоимость товаров, оприходованных в заданном месяце.
Рис. 6.5.18 Запрос 10 на выборку с использованием групповой операции Sum()
Запросы 7 - 10 – это тоже запросы на выборку, но при их формировании необходимо использовать агрегатные функции (рис. 6.15 - 6.18). Чтобы их использовать в запросах, нужно в режиме Конструктора выполнить команду Вид -> Групповые операции.
Иногда бывает, что использование групповых операций невозможно (например, когда в запросе на экран выводятся столбцы, не участвующие в групповых операциях), тогда для агрегатных функций пишутся подзапросы. К таким случаям относятся запросы 8 и 9 (рис. 6.16 и 6.17)
Определить общее количество поступивших товаров в разрезе товаров и сотрудников.
Рис. 6.19 Запрос 11 - перекрестный
Определить общую стоимость поступивших товаров в разрезе товаров и сотрудников.
Рис. 6.20 Запрос 12 - перекрестный
Запросы 11, 12 – перекрестные запросы. При их выполнении следует выбрать тип запроса перекрестный (рис. 6.19 и 6.20)
Для создания простых форм на основе Автоформы следует:
выбрать объект Формы и нажать кнопку Создать, в открывшемся окне выбрать: Autoform: Columnar, в качестве источника данных указать нужную таблицу. Форма будет создана автоматически (рис. 6.21).
Рис. 6.21 Автоформа в столбец
Аналогично можно создать форму для таблицы Товары. Если исходная информация таблиц полностью не просматривается, или пользователя не устраивает дизайн формы, то можно изменить ее в режиме Конструктора (рис. 6.22).
Рис. 6.22 Форма в режиме Конструктора
Форма служит для
удобного ввода, просмотра и редактирования
данных. Кроме того, в форме можно
сортировать и фильтровать данные. Для
этого нужно выделить поле или значение
для сортировки или фильтрации и щелкнуть
по кнопкам
(сортировка по возрастанию и убыванию)
или по кнопкам
(установить
фильтр, изменить фильтр, отменить фильтр)
соответственно. В результате в форме
данные будут отсортированы или
отфильтрованы.
Чтобы изменить
внешний вид формы, например, изменить
простую форму на ленточную нужно открыть
форму в режиме Конструктора,
и
щелкнуть по кнопке
(свойства),
в окне свойств формы (рис. 6.23) выбрать
Режим по умолчанию - > Ленточные формы.
Рис. 6.23 Свойства формы
Вид ленточной формы представлен на рисунке 6.24.
Рис. 6.24 Ленточная форма
Составная форма (на основе двух или более таблиц) может быть подчинённой или связанной, она создается с помощью Мастера по следующим шагам: Формы -> Создание формы с помощью Мастера.
В окне Создание Форм (рис. 6.25) выбрать все поля из двух связанных по внешнему ключу таблиц (связанные поля выбрать только один раз), в следующем окне можно выбрать тип формы (связанная или подчинённая), далее - выбрать внешний вид (табличный), стиль и имя формы.
Рис. 6.25 Окно Создание форм
Рис. 6.26 Связанная форма
В результате получится связанная (рис. 6.26) или подчиненная (рис. 6.27) форма.
Рис. 6.27 Подчиненная форма
Чтобы включить
вычисляемое поле в форму или отчет, надо
открыть объект в режиме Конструктора,
затем, используя Панель элементов (рис.
6.28), вставить поле в свободную область
формы. Панель элементов открывается
автоматически, если же она не открылась,
то её можно открыть при помощи кнопки
.
Рис. 6.28 Панель элементов
Поле вставляется вместе с надписью. Для нашего примера вычисляемое поле должно быть: Стоимость товара = (Цена_приходная*Приход). Щелкнув по надписи и затем по кнопке Свойства, зададим в окне свойств Подпись: Стоимость товара (рис. 6.29).
Аналогично
предыдущим действиям, зададим свойства
Данные для вычисляемого поля (рис. 6.30).
Для этого рекомендуется использовать
Построитель выражений (рис. 6.31). Он
вызывается кнопкой
.
В нем можно
для поля написать формулу для вычисления,
в которой участвуют поля формы. Завершив
процесс конструирования, получим форму
с вычислением стоимости товара (рис.
6.32).
Рис. 6.29 Свойства надписи для вычисляемого поля
Рис. 6.30 Свойства вычисляемого поля
Рис. 6.31 Построитель выражений
Рис. 6.32 Форма с вычисляемым полем
Сводный отчет составляется с помощью Мастера, используя кнопку Итоги, можно добавить агрегатную функцию. Созданный отчет можно редактировать в режиме Конструктора, в частности добавлять вычисляемые поля, примечания и рисунки.