Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
базы данных отчет минипекарня.docx
Скачиваний:
3
Добавлен:
29.10.2018
Размер:
376.82 Кб
Скачать

4.Разработка запросов

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

Прежде чем приступить к созданию запросов, необходимо определить, что они собой представляют. Запрос – это виртуальная таблица, построенная на основе физических таблиц и других запросов путем их соединения по ключевым полям и выбора необходимых строк и столбцов. Слово «запрос» используется, как команда, записанная на SQL, выполняя которую СУБД Access строит виртуальную таблицу.

Наличие структурированного языка запросов SQL – является одним из достоинств реляционной модели данных и реляционных СУБД.

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

Запросы в СУБД Access могут создаваться при помощи:

- мастера запросов;

- конструктора запросов;

- структурированного языка запросов (SQL);

Использование мастера запросов во многих случаях является малоэффективным, в связи с чем, в базах данных «Минипекарня» для проектирования запросов будет использоваться режим конструктора и структурированный язык запросов (SQL).

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

Определим набор запросов, которые необходимо создать в базах данных «Минипекарня».

Запрос 1: Определить, при производстве каких видов продукции используется определенный материал;

Запрос 2: Проанализировать соответствие фактического и нормативного расхода каждой бригадой материалов определенного типа;

Запрос 3: Подсчитать количество смен, отработанных каждой бригадой за определенный период;

Запрос 4: Сравнить объемы производства продукции каждого вида каждой бригадой.

Приступим к выполнению запросов в режиме конструктора.

1. Определить, при производстве каких видов продукции используется определенный материал.

Для вывода списка продукции, которая выпекается из определенных материалов, в конструкторе запроса необходимо определить список таблиц, которые участвуют в запросе. Данный запрос является запросом на выборку. Для вывода списка продукции необходима таблица «Материалы», в которой выбирается поле «Название», а также таблица «Продукция» с полем «Название». Для уточнения результатов добавим в условие отбора поля «Название материала» значение [Введите название материала]. Таким образом, пользователь запроса сможет уточнить, какой материал его интересует.

Фотография конструктора запроса на выборку представлена на рисунке 4.1.

Рисунок 4.1 – Фотография запроса 1

Текст запроса на языке SQL будет иметь следующий вид:

SELECT Материалы.Название, Продукция.Название

FROM Продукция INNER JOIN (Материалы INNER JOIN Норма ON Материалы.КодМат = Норма.КодМат) ON Продукция.КодПрод = Норма.КодПрод

WHERE (((Материалы.Название)=[Введите название материала]))

ORDER BY Материалы.Название DESC;

Жирным шрифтом в команде запросов выделены зарезервированные слова (команды) языка SQL.

Результаты выполнения запроса 1 представлены на рисунке 4.2.

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

2. Проанализировать соответствие фактического и нормативного расхода каждой бригадой материалов определенного типа.

Данный запрос, является запросом на выборку с группировкой. В запрос добавляются поля «Название» из таблицы «Материалы», «Название» из таблицы «Бригады», «Название» из таблицы «Продукция», «Количество Израсходованного Материала» из таблицы «Факический Расход Материалов», «Значение» из таблицы «Нормы», а также вычисляемое поле «Разница» = Количество Израсходованного Материала – Значение по норме.

Фотография конструктора запроса представлена на рисунке 4.3.

Рисунок 4.3 – Фотография запроса 2

Текст запроса на языке SQL будет иметь следующий вид:

SELECT Материалы.Название, Бригады.Название, Продукция.Название, Фактический Расход Материала.КолРасх AS [Израсходованно], Норма.Знач, [КолРасх]-[Знач] AS Разница

FROM Продукция INNER JOIN ((Материалы INNER JOIN Норма ON Материалы.КодМат = Норма.КодМат) INNER JOIN (((Бригады INNER JOIN Карты ON Бригады.КодБриг = Карты.КодБриг) INNER JOIN [Фактический Выпуск Продукции] ON Карты.КодКарт = [Фактический Выпуск Продукции].КодКарт) INNER JOIN [Фактический Расход Материала] ON Карты.КодКарт = [Фактический Расход Материала].КодКарт) ON Материалы.КодМат = [Фактический Расход Материала].КодМат) ON (Продукция.КодПрод = [Фактический Выпуск Продукции].КодПрод) AND (Продукция.КодПрод = Норма.КодПрод)

GROUP BY Материалы.Название, Бригады.Название, Продукция.Название, Норма.Знач, [КолРасх]-[Знач];

Результаты выполнения запроса 2 представлены на рисунке 4.4.

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

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

Данный запрос является запросом на выборку с группировкой. Для выполнения данного запроса необходимо подсчитать количество позиций данной бригады в таблице «Карты». В данный запрос необходимо включить следующие таблицы: «Бригады» и «Карты». Таблица «Бригады» позволит произвести выборку по каждой бригаде, для этого в строке поле необходимо указать «Название». Таблица «Карты» позволит определить количество отработанных смен, для этого в строке поле необходимо указать «КодКарт», а в строке групповая операция указать функцию Count. Кроме того необходимо добавить поле Дата и в условии отбора для него указать <=[Введите дату]. Это позволит определить количество отработанных смен за определенный период.

Фотография конструктора запроса представлена на рисунке 4.5.

Рисунок 4.5 – Фотография запроса 3

Текст запроса на языке SQL имеет следующий вид:

SELECT Бригады.Название, Count(Карты.КодКарт) AS [Всего смен]

FROM Бригады INNER JOIN Карты ON Бригады.КодБриг = Карты.КодБриг

WHERE (((Карты.Дата)<=[Введите дату]))

GROUP BY Бригады.Название;

Результаты выполнения запроса 3 представлены на рисунке 4.6.

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

4. Сравнить объемы производства продукции каждого вида каждой бригадой.

В режиме конструктора определим тип запроса как перекрестный, и включим следующие таблицы: «Продукция», «Бригады», «Карты», «Фактический Выпуск Продукции».

Заголовки строк определим как название продукции, заголовки столбцов должны отображать названия бригад. На пересечении строк и столбцов суммарное количество продукции, выпущенной данной бригадой. Его определим с помощью функции Sum.

Фотография выполнения перекрестного запроса представлена на рисунке 4.7.

Рисунок 4.7 – Фотография запроса 4

Текст запроса на языке SQL имеет следующий вид:

TRANSFORM Sum([Фактический Выпуск Продукции].КолПрод) AS [Sum-КолПрод]

SELECT Продукция.Название

FROM Продукция INNER JOIN ((Бригады INNER JOIN Карты ON Бригады.КодБриг = Карты.КодБриг) INNER JOIN [Фактический Выпуск Продукции] ON Карты.КодКарт = [Фактический Выпуск Продукции].КодКарт) ON Продукция.КодПрод = [Фактический Выпуск Продукции].КодПрод

GROUP BY Продукция.Название

PIVOT Бригады.Название;

Результаты выполнения запроса 4 представлены на рисунке 4.8.

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

ЗАКЛЮЧЕНИЕ

В данной работе, на основе представленной предметной области «Минипекарня» были выделены следующие типы объектов: «Пекари», «Бригады», «Назначение в бригаду», «Продукция», «Материалы», «Норма расходования», «Фактический Выпуск Продукции», «Фактический Расход Материалов», «Карта Работы Бригады». На основе выдвинутых типов объектов и разработанного словаря имен, были созданы таблицы, в которых был определен список полей. На основе созданных таблиц, спроектирована схема базы данных «Минипекарня», все отношения на схеме являются типом «один ко многим».

Для заполнения таблиц созданы ленточные формы, формы в один столбец, а так же формы с наличием подчиненных.

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

Все поставленные задачи были реализованы в СУБД Microsoft Office Access.