Автор: Пользователь скрыл имя, 18 Декабря 2011 в 20:48, лабораторная работа
Успешная работа экономических, финансовых и бухгалтерских служб предприятия во многом зависит от правильной организации системы учета и обработки информации, которые невозможно представить без базы данных. Базы данных позволяют организовать доступ к ее информации и хранение наиболее эффективно с выполнением требований по оперативности, качеству и гибкости при относительно небольших затратах.
1. Введение
2. Постановка задачи
3. Проектирование и создание базы данных «Хирургическое отделение»
4. Создание форм и заполнение таблиц
5. Разработка запросов
6. Заключение
Для заполнения таблиц базы данных «Хирургическое отделение», создадим по каждой таблице форму «в один столбец» или «ленточную» форму. Для этого на вкладке «создание» «формы» выберем «мастер форм» и определим таблицу и поля, которые должны присутствовать в форме. Создание формы представлено на рисунке 3.1
Рисунок
3.1 – Создание форм базы данных «Минипекарня»
Для каждой таблицы создадим по две формы, одну форму в один столбец, и ленточную форму.
Для удобства ввода данных в таблицы с наличием полей со списком, или подчиненных полей, необходимо создать формы с подчиненными. Такие формы могут быть созданы на основе двух или нескольких таблиц связанных межу собой.
Для обеспечения более удобного ввода и просмотра данных создадим ряд форм с наличием подчиненных.
Для таблицы «Медработники» создадим форму с подчиненной таблицей «Получение специльности», где с помощью функции DLookUp выведем наименования специальностей, которые получил данный работник.
Форма с
наличием подчиненных по таблице «Медработники»
представлена на рисунке 3.2
Рисунок
3.2 – Форма по таблице «Медработники»,
с наличием подчиненной формы «Получение
специальности»
Для таблицы «Операции» создадим форму с подчиненными формами «Пациенты» и «Бригады».
Форма для
таблицы «Операции» представлена на рисунке
3.3
Рисунок
3.3 – Форма по таблице «Операции»
с подчиненными формами «Пациенты» и «Бригады»
Заполним созданные формы по следующим таблицам. Обеспечение целостности данных требует, чтобы сначала заполнялись родительские таблицы, затем дочерние.
На рисунках
3.4-3.13 представлены исходные данные базы
«Хирургическое отделение»
4.РАЗРАБОТКА ЗАПРОСОВ
Операции, связанные с обработкой данных, реализуются за счет использования запросов. В связи с чем, неотъемлемой частью создания базы данных является проектирования запросов. Правильно спроектированные запросы, позволяют быстро отображать нужную информацию
Прежде чем приступить к созданию запросов, необходимо определить, что они собой представляют. Запрос – это виртуальная таблица, построенная на основе физических таблиц и других запросов путем их соединения по ключевым полям и выбора необходимых строк и столбцов. Слово «запрос» используется, как команда, записанная на SQL, выполняя которую СУБД Access строит виртуальную таблицу.
Наличие структурированного языка запросов SQL – является одним из достоинств реляционной модели данных и реляционных СУБД.
Виртуальность таблицы, получаемой при выполнении запроса, означает, что результаты запроса в базах данных не хранятся, но хранится текст самого запроса на языке SQL.
Запросы в СУБД Access могут создаваться при помощи:
- мастера запросов;
- конструктора запросов;
- структурированного языка запросов (SQL);
Использование мастера запросов во многих случаях является малоэффективным, в связи с чем, в базах данных «Хирургическое отделение» для проектирования запросов будет использоваться режим конструктора и структурированный язык запросов (SQL).
При создании запроса в режиме конструктора необходимо определить, данные каких таблиц и запросов будут использоваться в качестве исходных. В качестве исходных данных в запрос могут быть добавлены одна или несколько таблиц и/или ранее созданные запросы.
Определим набор запросов, которые необходимо создать в базах данных «Хирургическое отделение».
Запрос 1: Составить список операций, выполненных определенной бригадой медперсонала;
Запрос 2: Вывести список больных, которые ни разу не оперировались;
Запрос 3: Подсчитать количество пациентов в каждой палате по состоянию на определенную дату;
Запрос 4: Подсчитать, какая сумма премий была заработана для отделения каждой бригадой медперсонала за определенный период;
Запрос 5: Создать перекрестный запрос «Бригады - Специальности», на пересечении строк и столбцов в котором должно определяться, сколько человек в данной бригаде имеет данную специальность.
Приступим к выполнению запросов в режиме конструктора.
Для вывода списка операций, которые были выполнены определенной бригадой, в конструкторе запроса необходимо определить список таблиц, которые участвуют в запросе. Данный запрос является запросом на выборку. Для вывода списка продукции необходима таблица «Бригады», в которой выбирается поле «Название», таблица «Операции», откуда выбирается поле «Код Операции» а также таблица «Пациенты» с полями «ФИО» и «Диагноз».
Фотография конструктора запроса на выборку представлена на рисунке 4.1.
Рисунок
4.1 – Фотография запроса 1
Текст запроса на языке SQL будет иметь следующий вид:
SELECT Бригада.Название, Операции.КодОп, Пациенты.ФИО, Пациенты.Диагноз
FROM Пациенты INNER JOIN (Бригада INNER JOIN Операции ON Бригада.КодБриг = Операции.КодБриг) ON Пациенты.КодПац = Операции.КодПац
WHERE (((Бригада.Название)=[Введите название бригады]));
Жирным
шрифтом в команде запросов выделены
зарезервированные слова (команды)
языка SQL.
Результаты выполнения запроса 1 представлены в таблице 4.1.
Таблица 4.1- Результаты выполнения запроса 1
Данный запрос также является запросом на выборку. В запрос добавляются поля «Код Пациента» и «ФИО» из таблицы «Пациенты», а также «Код Операции» из таблицы «Операции». В конструкторе присваиваем условием отбора поля «Код Операции» значение «Is Null», запрещаем его вывод на экран, кроме того определяем соединение между таблицами как левое.
Фотография конструктора запроса представлена на рисунке 4.2.
Рисунок
4.2 – Фотография запроса 2
Текст запроса на языке SQL будет иметь следующий вид:
SELECT Пациенты.КодПац, Пациенты.ФИО
FROM Пациенты LEFT JOIN Операции ON Пациенты.КодПац = Операции.КодПац
WHERE (((Операции.КодОп) Is Null));
Результаты
выполнения запроса 2 представлены
в таблице 4.2.
Таблица 4.2- Результаты выполнения запроса 2
Данный запрос является запросом на выборку с группировкой. Для выполнения данного запроса необходимо подсчитать количество пациентов по записям в таблице «Пребывание в палате». В данный запрос необходимо включить следующие таблицы: «Палаты», «Пребывание в палате» и «Пациенты». Таблица «Палаты» определяет название палат, для этого в строке поле необходимо указать «Код Палаты» и «Номер». Таблица «Пациенты» позволит определить количество пациентов в палате, для этого в строке поле необходимо указать «КодПац», а в строке групповая операция указать функцию Count. Кроме того, необходимо добавить поле «Дата» из таблицы «Пребывание в палате» и в условии отбора для него указать <=[Введите дату].
Фотография
конструктора запроса представлена
на рисунке 4.3.
Рисунок
4.3 – Фотография запроса 3
Текст запроса на языке SQL имеет следующий вид:
SELECT Палата.КодПал, Палата.Номер, Count(Пациенты.КодПац) AS [Количество Пациентов]
FROM Пациенты INNER JOIN (Палата INNER JOIN [Пребывание в палате] ON Палата.КодПал = [Пребывание в палате].КодПал) ON Пациенты.КодПац = [Пребывание в палате].КодПац
WHERE ((([Пребывание в палате].Дата)<=[Введите дату]))
GROUP BY Палата.КодПал, Палата.Номер;
Результаты
выполнения запроса 2 представлены
в таблице 4.3.
Таблица 4.3- Результаты выполнения запроса 3
Данный запрос является запросом на выборку с группировкой. Для выполнения данного запроса необходимо подсчитать сумму премий из таблицы «Операции» по бригадам на определенную дату. В данный запрос необходимо включить таблицы «Бригады» и «Операции». Таблица «Бригады» определяет название бригад, для этого в строке поле необходимо указать «Код Бригады» и «Название». Таблица «Операции» позволит определить общую премию, для этого в строке поле необходимо указать «СуммаФонд», а в строке групповая операция указать функцию Sum. Кроме того, необходимо добавить поле «Дата» из таблицы «Операции» и в условии отбора для него указать <=[Введите дату].
Фотография
конструктора запроса представлена
на рисунке 4.4.
Рисунок
4.4 – Фотография запроса 4
Текст запроса на языке SQL имеет следующий вид:
SELECT Бригада.КодБриг, Бригада.Название, Sum(Операции.СуммаФонд) AS [Сумма в Фонд]
FROM Бригада INNER JOIN Операции ON Бригада.КодБриг = Операции.КодБриг
WHERE (((Операции.Дата)<=[Введите дату]))
GROUP BY
Бригада.КодБриг, Бригада.Название;
Результаты выполнения запроса 4 представлены в таблице 4.4.
Таблица
4.3- Результаты выполнения запроса 4
5: Создать перекрестный запрос «Бригады - Специальности», на пересечении строк и столбцов в котором должно определяться, сколько человек в данной бригаде имеет данную специальность.
В режиме конструктора определим тип запроса как перекрестный, и включим следующие таблицы «Бригады», «Состав Бригады», «Медработники», «Получение Специальности», «Специальности».
Заголовки
строк определим как название
бригад, заголовки столбцов должны отображать
названия специальностей. На пересечении
строк и столбцов количество медработников,
получивших данную специальность. Его
определим с помощью функции Count.
Фотография выполнения перекрестного запроса представлена на рисунке 4.5
Рисунок
4.5 – Фотография запроса 5
Текст запроса на языке SQL имеет следующий вид:
TRANSFORM Count(Медработники.КодРаб) AS [Count-КодРаб]
SELECT Бригада.Название
FROM Специальность INNER JOIN ((Медработники INNER JOIN (Бригада INNER JOIN [Состав бригады] ON Бригада.КодБриг = [Состав бригады].КодБриг) ON Медработники.КодРаб = [Состав бригады].КодРаб) INNER JOIN [Получение специальности] ON Медработники.КодРаб = [Получение специальности].КодРаб) ON Специальность.КодСпец = [Получение специальности].КодСпец
GROUP BY Бригада.Название
PIVOT Специальность.Название;
Результаты
выполнения запроса 5 представлены
в таблице 4.5.
Таблица 4.5- Результаты выполнения запроса 5
Информация о работе Предметная область “Хирургическое отделение”