Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка БД.doc
Скачиваний:
6
Добавлен:
03.09.2019
Размер:
201.73 Кб
Скачать

Состав полей таблицы “Раздача”

Подпись поля

Системное имя

Тип

Размер поля

Номер раздачи

НомРазд

Текстовый

7

Номер животного

НомЖив

Текстовый

5

Код продукта

КодПрод

Текстовый

4

Количество продукта

КолПрод

Числовой

4 байт

Время раздачи

ВрмРазд

Дата/время

Ключевые поля в каждой из таблиц выделены жирным шрифтом.

Поля, по которым будут установлены связи между таблицами, присутствуют в каждой из этих таблиц. В родительских таблицах эти поля являются ключевыми, в дочерних – обычными. Это позволяет установить между таблицами связи типа один ко многим.

При формировании системных имен с использованием сокращений из словаря между частями системного имени не ставится пробел. Возможен такой вариант формирования системных имен, при котором части системного имени разделены знаком подчеркивания. В этом случае имена полей таблицы “Смотрители” выглядели бы следующим образом: Код_Смт, Фам_Смт, Имя_Смт, Отч_Смт, Дат_Рож.

Следует обратить внимание на тип некоторых полей. Поля КодСмт, НомКлт, НомЖив, КодПрод, НомРазд являются текстовыми, так как ни с одним из этих полей нет необходимости производить математические операции.

Создадим каждую из таблиц базы данных “Зоопарк” в пакете Access в режиме конструктора.

После того как создание структуры таблиц будет завершено, следует установить связи между ними. Для этого необходимо добавить все таблицы базы на схему данных и установить связи путем перетаскивания поля из одной таблицы в это же поле в другой таблице. При установлении связей программой предлагается установить обеспечение целостности данных, каскадное обновление и каскадное удаление. Рекомендуется включить опции обеспечения целостности и каскадного обновления.

Схема данных базы “Зоопарк” представлена на рис. 2.2.

Рис.2.2. Схема данных базы “Зоопарк”

В таблицах необходимо задать для полей подписи, организовать контроль вводимых значений, создать поля со списками.

Подписи необходимы пользователям для работы с базой данных. Если разработчики базы работают с системными именами, которые пользователям знать не обязательно, то подписи понятны и тем, и другим.

Контроль вводимых значений необходим преимущественно для числовых полей, чтобы, например, нельзя было ввести в поле с количестом или стоимостью отрицательные значения и т.п.

Далее при помощи мастера форм создадим для каждой из таблиц форму в один столбец для ввода информации.

Пример формы для заполнения таблицы “ВидыПродуктов” приведен на рис. 2.3.

Рис. 2.3. Форма для заполнения таблицы “ВидыПродуктов”

Возможно создание форм с наличием подчиненных. Такие формы могут быть созданы на основе двух или более таблиц, связанных между собой.

Следующий шаг – создание запросов. Создадим запросы на выборку, на выборку с группировкой, перекрестный и запрос на обновление. Результаты запросов представим в виде SQL-команд.

Создадим запрос на выборку, в котором будет выведена информация о кормлении животного с определенным номером (допустим, с номером “00001”). На экран будут выведены поля: номер животного, вид животного, время раздачи, наименование продукта и количество. Полем, по которому осуществляется выборка, является номер животного (НомЖив). SQL-команда будет выглядеть следующим образом:

SELECT Животные.НомЖив, Животные.ВидЖив,

Раздача.ВрмРазд,

ВидыПродуктов.НаимПрод, Раздача.КолПрод

FROM Животные

INNER JOIN (ВидыПродуктов

INNER JOIN Раздача

ON ВидыПродуктов.КодПрод = Раздача.КодПрод)

ON Животные.НомЖив = Раздача.НомЖив

WHERE Животные.НомЖив="00001";

Создадим запрос на выборку с группировкой, в котором будет выведена информация о продуктах, розданных всем животным, а также об энергетической ценности этих продуктов. На экран будут выведены поля: код продукта, наименование продукта, количество, энергетическая ценность. SQL-команда будет выглядеть следующим образом:

SELECT ВидыПродуктов.КодПрод,

ВидыПродуктов.НаимПрод, Sum(Раздача.КолПрод) AS [КолПродИтг],

Sum([КолПрод]*[КлрПрод]) AS [КлрИтг]

FROM ВидыПродуктов

INNER JOIN Раздача

ON ВидыПродуктов.КодПрод = Раздача.КодПрод

GROUP BY ВидыПродуктов.КодПрод,

ВидыПродуктов.НаимПрод;

В данном случае полями, по которым осуществляется группировка, являются код продукта и наименование продукта. Калорийность потребленного количества каждого из продуктов рассчитывается при помощи вычисляемого поля КлрИтг как произведение потребленного количества на калорийность единицы продукта. По полю КлрИтг устанавливается групповая операция сумма (Sum).

Создадим перекрестный запрос, в котором по строкам будут расположены виды продуктов, по столбцам – смотрители, а на пересечении строк и столбцов – суммарное количество данного продукта, розданного данным смотрителем. SQL-команда, позволяющая выполнить этот запрос, представлена ниже:

TRANSFORM Sum(Раздача.КолПрод) AS [КолПродИтг]

SELECT ВидыПродуктов.НаимПрод

FROM Смотрители

INNER JOIN (Клетки

INNER JOIN (Животные

INNER JOIN (ВидыПродуктов

INNER JOIN Раздача

ON ВидыПродуктов.КодПрод = Раздача.КодПрод)

ON Животные.НомЖив = Раздача.НомЖив)

ON Клетки.НомКлт = Животные.НомКлт)

ON Смотрители.КодСмт = Клетки.КодСмт

GROUP BY ВидыПродуктов.НаимПрод

PIVOT Смотрители.ФамСмт;

Создадим запрос на обновление. Допустим, что один из смотрителей (с кодом “002”) увольняется. Все клетки, находящиеся на его попечении, переходят к другому смотрителю (с кодом “001”). Для этого нужно написать следующую SQL-команду:

UPDATE Смотрители

INNER JOIN Клетки

ON Смотрители.КодСмт = Клетки.КодСмт

SET Клетки.КодСмт = "001"

WHERE Клетки.КодСмт="002";

В табл. 2.7-2.9 представлены распечатки первых трех рассмотренных запросов.

Таблица 2.7

Результаты выполнения запроса на выборку

НомЖив

ВидЖив

НомРазд

ВрмРазд

НаимПрод

КолПрод

00001

Зубр

0000001

02.09.02

Комбикорм

5

00001

Зубр

0000002

02.09.02

Овес

3

Таблица 2.8

Результаты выполнения запроса на выборку с группировкой

КодПрод

НаимПрод

КолПродИтг

КлрИтг

0002

Овес

13

12350

0003

Комбикорм

6

9000

0004

Мясо

5

52500

Таблица 2.9

Результаты выполнения перекрестного запроса

НаимПрод

Иванов

Петров

Комбикорм

1

5

Мясо

5

Овес

10

3

При выполнении запроса на обновление следует помнить, что данные таблицы, подвергающейся обновлению изменяются безвозвратно.

Создадим отчет, в котором будут отражены данные о суммарном расходе продуктов и их стоимости. Для этого предварительно необходимо написать запрос аналогичный приведенному выше запросу на выборку с группировкой, только вместо вычисляемого поля КлрИтг появится вычисляемое поле СтмИтг, в котором будет рассчитана стоимость суммарного количества данного продукта, попавшего в раздачу. На основании такого запроса создается отчет, приведенный в табл. 2.10

Таблица 2.10