МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ


Расчётно-графическая работа

по дисциплине

Базы данных

« »

Вариант: 28

Факультет: АВТ

Группа:

Выполнил:

Преподаватель:

Дата сдачи:

Новосибирск 2009

Содержание

1.  Задание

Сформировать несколько баз данных «Лекарства», «Фирмы», «Пациенты», «Врачи». Предусмотреть: меню, печать на экран, ввод данных, редактирование, просмотр данных. С введением и использованием нескольких баз данных реализовать заданные запросы.

2.  Структура таблиц базы данных

Рассмотрим структуры всех таблиц:

В структуре каждой таблицы достаточно использовать три поля:

NAME- имя поля

TYPE- тип задаваемого поля

WIDTH- длина поля (в байтах)

Также для связывания отдельных таблиц требуются индексы таблицы -они находятся в столбце INDEXES. ( параметр Primary у родительских таблиц - первичный ключ)

Первая таблица – пациенты.dbf

Рис. 1 Пациенты. dbf

Вторая таблица – врачи.dbf

Рис. 2 Врачи. dbf

Третья таблица - лекарства.dbf

Рис. 3 Лекарства. dbf

Четвертая таблица - фирмы.dbf

Рис. 4 Фирмы. dbf

Пятая таблица – пациент_врач.dbf

( используется для связывания отдельных полей двух таблиц пациенты.dbf и врачи.dbf)

Рис. 5 Пациент_врач. dbf

Шестая таблица - пациент_лекарства.dbf

НЕ нашли? Не то? Что вы ищете?

( используется для связывания отдельных полей двух таблиц пациенты.dbf и лекарства.dbf)

Рис. 6 Пациент_лекарства. dbf

Седьмая таблица – лекарства_фирмы.dbf

( используется для связывания отдельных полей двух таблиц лекарства.dbf и фирмы.dbf)

Рис. 7 Лекарства_фирмы. dbf

Восьмая таблица – отделения.dbf

( используется для связывания отдельных полей двух таблиц пациенты.dbf и отделения.dbf)

Рис. 8 Отделения. dbf

3.  Данные в таблицах

Данные по каждой таблице в отдельности:

Первая таблица – пациенты.dbf

Рис. 9 Данные в таблице пациенты.dbf

Вторая таблица – врачи.dbf

Рис. 10 Данные в таблице врачи.dbf

Третья таблица - лекарства.dbf

Рис. 11 Данные в таблице лекарства.dbf

Четвертая таблица - фирмы.dbf

Рис. 12 Данные в таблице фирмы.dbf

Пятая таблица – пациент_врач.dbf

Рис. 13 Данные в таблице пациент_врач.dbf

Шестая таблица - пациент_лекарства.dbf

Рис. 14 Данные в таблице пациент_лекарства.dbf

Седьмая таблица – лекарства_фирмы.dbf

Рис. 15 Данные в таблице лекарства_фирмы.dbf

Восьмая таблица – отделения.dbf

Рис. 16 Данные в таблице отделения.dbf

4.Структура взаимосвязи данных таблиц

Рис. 17 Структура взаимосвязи данных таблиц

Отдельные поля таблиц соединены между собой связью ( линии между таблицами). Это так называемая связь между родительскими и дочерними таблицами. Этот рисунок полностью охватывает всю связь баз данных: ПАЦИЕНТЫ-ВРАЧИ-ЛЕКАРСТВА-ФИРМЫ.

5.Меню с основными командами

Для того, чтобы облегчить просмотр и редактирование таблиц и базы данных используется меню. В меню предусмотрены 5 пунктов: ЗАПРОСЫ, ТАБЛИЦЫ, РЕДАКТИРОВАНИЕ, О ПРОГРАММЕ, ВЫХОД В ОСНОВНОЕ МЕНЮ.

Рассмотрим каждый пункт меню в отдельности:

5.1 Пункт меню «Запросы»

Рис. 18 Пункт меню «Запросы»

При нажатии на пункт меню «Запросы» выпадает подменю с конкретными запросами, при нажатии на которых идет выполнение заданного запроса. Из меню можно выбрать только один из запросов.

5.2 Пункт меню «Таблицы»

Рис. 19 Пункт меню «Таблицы»

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

5.3 Пункт меню «Редактирование»

Рис. 20 Пункт меню «Редактирование»

При нажатии на пункт меню «Редактирование» выпадает подменю с командами для редактирования таблиц. Также здесь предусмотрены «горячие клавиши».

5.4 Пункт меню «О программе»

Рис. 21 Пункт меню «Редактирование»

При нажатии на пункт меню «О программе» запускается окно, на котором отображаются автор, версия и год создания данной работы.

5.5 Пункт меню «Выход в основное меню»

Рис. 22 Пункт меню «Выход в основное меню»

При нажатии на пункт меню «Выход в основное меню» происходит закрытие созданного меню и переход в основное меню программы для дальнейшей работы.

1.  Выполнение запросов

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

Рис. 23 Пункт меню «Запросы»

6.1 Запрос №1

При вызове Запроса №1 появляется следующее окно:

Рис. 24 Запрос №1

При нажатии на одну из четырех клавиш выполняется запрос:

Ø  1.Текст запроса:

Ø  SELECT distinct фирмы. название_фирмы, лекарства. название_лекарства,; лекарства. срок_годности_лекарств, пациенты. фамилия_пациента, ; пациенты. имя_пациента, Пациенты. отделение_н;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE пациенты. отделение_н = "Кардиология";

При нажатии «Отделение «Кардиология» появляется окно:

Рис. 25 Результат запроса №1

Ø  2.Текст запроса:

Ø  SELECT фирмы. название_фирмы, лекарства. название_лекарства,; лекарства. срок_годности_лекарств, пациенты. фамилия_пациента, пациенты. имя_пациента, Отделения. название_отделения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE отделения. название_отделения = "Инфекционное";

При нажатии «Отделение «Инфекционное» появляется окно:

Рис. 26 Результат запроса №1

Ø  3.Текст запроса:

Ø  SELECT фирмы. название_фирмы, лекарства. название_лекарства,; лекарства. срок_годности_лекарств,; пациенты. фамилия_пациента, пациенты. имя_пациента, пациенты. отделение_н;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE пациенты. отделение_н = "Терапия";

При нажатии «Отделение «Терапия» появляется окно:

Рис. 27 Результат запроса №1

Ø  4.Текст запроса:

Ø  SELECT фирмы. название_фирмы, лекарства. название_лекарства,; лекарства. срок_годности_лекарств,; пациенты. фамилия_пациента, пациенты. имя_пациента,; Отделения. название_отделения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE отделения. название_отделения = "Нейрохирургия";

При нажатии «Отделение «Нейрохирургия» появляется окно:

Рис. 28 Результат запроса №1

6.2 Запрос №2

Рис. 29 Запрос №2

Текст запроса:

Ø  SELECT пациенты. номер_палаты, пациенты. фамилия_пациента,; пациенты. Имя_пациента, пациенты. дата_рождения, пациенты. диагноз,; пациенты. номер_койки,;

Ø  лекарства. название_лекарства, отделения. название_отделения, фирмы. название_фирмы;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE Фирмы. название_фирмы = bo1.Value;

Результат запроса:

Рис. 30 Результат запроса №2

6.3 Запрос №3

Рис. 31 Запрос №3

Ø  Текст запроса:

Ø  SELECT distinct лекарства. название_лекарства, лекарства. срок_годности_лекарств, пациенты. фамилия_пациента, пациенты. Имя_пациента, пациенты. дата_рождения,; пациенты. диагноз, пациенты. номер_палаты, пациенты. номер_койки,;

Ø  отделения. название_отделения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE пациенты. диагноз = bo1.value

Результат запроса:

Рис. 32 Результат запроса №3

6.4 Запрос №4

Рис. 33 Запрос №4

Ø  Текст запроса:

Ø  SELECT врачи. фамилия_врача, врачи. имя_врача, врачи. рабочий_телефон,; пациенты. этаж,;

Ø  отделения. название_отделения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE отделения. название_отделения = bo2.Value AND пациенты. этаж=2;

Результат запроса:

Рис. 34 Результат запроса №4

6.5 Запрос №5

Рис. 35 Запрос №5

Ø  Текст запроса:

Ø  SELECT distinct пациенты. фамилия_пациента, пациенты. имя_пациента, лекарства. название_лекарства , врачи. фамилия_врача, врачи. имя_врача;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE врачи. фамилия_врача = bo1.Value;

Результат запроса:

Рис. 36 Результат запроса №5

6.6 Запрос №6

Рис. 37 Запрос №6

Ø  Текст запроса:

Ø  SELECT distinct пациенты. фамилия_пациента,; пациенты. Имя_пациента, пациенты. номер_палаты, пациенты. диагноз,; пациенты. номер_койки, отделения. название_отделения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE отделения. название_отделения = bo1.Value;

Результат запроса:

Рис. 38 Результат запроса №6

6.7 Запрос №7

Рис. 39 Запрос №7

Ø  Текст запроса:

Ø  SELECT distinct пациенты. Имя_пациента, пациенты. фамилия_пациента,; лекарства. название_лекарства;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE лекарства. название_лекарства = bo1.value

Результат запроса:

Рис. 40 Результат запроса №7

6.8 Запрос №8

Рис. 41 Запрос №8

Ø  Текст запроса:

Ø  SELECT distinct врачи. фамилия_врача, врачи. имя_врача, пациенты. этаж,; пациенты. отделение_н;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE пациенты. этаж=2;

Результат запроса:

Рис. 42 Результат запроса №8

6.9 Запрос №9

Рис. 43 Запрос №9

Ø  Текст запроса:

Ø  SELECT врачи. фамилия_врача,; врачи. имя_врача, пациенты. этаж, Count(врачи. фамилия_врача) as "Кол_во_пациентов";

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE;

Ø  пациенты. этаж = ThisForm. Text1.Value;

Ø  GROUP BY врачи. фамилия_врача;

Ø  HAVING "Кол_во_пациентов" > 5

Результат запроса:

Рис. 44 Результат запроса №9

6.10 Запрос №10

Рис. 45 Запрос №10

Ø  Текст запроса:

Ø  SELECT distinct врачи. фамилия_врача,; врачи. имя_врача, пациенты. фамилия_пациента, пациенты. имя_пациента,; пациенты. дата_рождения, пациенты. отделение_н,;

Ø  YEAR(DATE())-YEAR(пациенты. дата_рождения) AS возраст;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE YEAR(DATE())-YEAR(пациенты. дата_рождения) > (SELECT (AVG(YEAR(DATE()) - YEAR(пациенты. дата_рождения)));

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE пациенты. этаж=1 AND пациенты. отделение_н="Кардиология");

Результат запроса:

Рис. 46 Результат запроса №10

6.11 Запрос №11

Рис. 47 Запрос №11

Ø  Текст запроса:

Ø  SELECT пациенты. фамилия_пациента, пациенты. имя_пациента, врачи. фамилия_врача,; врачи. имя_врача;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

WHERE пациенты. фамилия_пациента= bo1.Value;

Результат запроса:

Рис. 48 Результат запроса №11

6.12 Запрос №12

Рис. 49 Запрос №12

Ø  Текст запроса:

Ø  SELECT врачи. фамилия_врача,; врачи. имя_врача, пациенты. фамилия_пациента, пациенты. номер_палаты, пациенты. дата_рождения, COUNT(врачи. фамилия_врача) as "Кол_во_пациентов";

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  WHERE year(пациенты. дата_рождения) > ThisForm. Text1.Value;

Ø  GROUP BY врачи. фамилия_врача;

Ø  HAVING "Кол_во_пациентов" >= 1

Рис. 50 Результат запроса №12

6.13 Запрос №13

Рис. 51 Запрос №13

Ø  Текст запроса:

Ø  SELECT distinct врачи. фамилия_врача,; врачи. имя_врача, врачи. рабочий_телефон,;

Ø  отделения. название_отделения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Результат запроса:

Рис. 52 Результат запроса №11

6.14 Запрос №14

Рис. 53 Запрос №14

Ø  Текст запроса:

Ø  Select пациенты. фамилия_пациента, имя_пациента, пациенты. дата_рождения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  Where (year(пациенты. дата_рождения)) > ThisForm. Text1.Value

ThisForm. Text1.Value=YEAR(пациенты. дата_рождения)

Результат запроса:

Рис. 54 Результат запроса №14

6.15 Запрос №15

Рис. 55 Запрос №15

Ø  Текст запроса:

Ø  SELECT пациенты. фамилия_пациента, пациенты. номер_палаты,; COUNT(пац_врач. идент_врач) as "Кол_во_врачей";

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  GROUP BY пац_врач. идент_врач;

HAVING Кол_во_врачей>1

Результат запроса:

Рис. 56 Результат запроса №15

6.16 Запрос №16

Рис. 57 Запрос №16

Ø  Текст запроса:

Ø  Select distinct врачи. фамилия_врача, врачи. имя_врача,; пациенты. фамилия_пациента, имя_пациента, пациенты. дата_рождения;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  Where YEAR(пациенты. дата_рождения) <= ThisForm. Text1.Value;

Результат запроса:

Рис. 58 Результат запроса №16

6.17 Запрос №17

Рис. 59 Запрос №17

Ø  Текст запроса:

Ø  SELECT DISTINCT врачи. фамилия_врача, врачи. имя_врача,; врачи. рабочий_телефон;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  Where врачи. фамилия_врача NOT IN (SELECT врачи. фамилия_врача;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  Where пациенты. фамилия_пациента=bo1.Value);

Результат запроса:

Рис. 60 Результат запроса №17

6.18 Запрос №18

Рис. 61 Запрос №18

Ø  Текст запроса:

Ø  SELECT пациенты. фамилия_пациента, пациенты. имя_пациента,; врачи. фамилия_врача, врачи. имя_врача, лекарства. название_лекарства,; лекарства. фирмы_н;

Ø  FROM ;

Ø  rgr! пациенты ;

Ø  INNER JOIN rgr! пац_врач ;

Ø  ON Пациенты. идент_пац = Пац_врач. идент_пац ;

Ø  INNER JOIN rgr! пациенты_лекарства ;

Ø  ON Пациенты. идент_пац = Пациенты_лекарства. идент_пац ;

Ø  INNER JOIN rgr! лекарства ;

Ø  ON Лекарства. идент_лек = Пациенты_лекарства. идент_лек ;

Ø  INNER JOIN rgr! лекарства_фирмы ;

Ø  ON Лекарства. идент_лек = Лекарства_фирмы. идент_лек ;

Ø  INNER JOIN rgr! фирмы ;

Ø  ON Фирмы. идент_фир = Лекарства_фирмы. идент_фир ;

Ø  INNER JOIN rgr! отделения ;

Ø  ON Отделения. идент_отд = Пациенты. отделение ;

Ø  INNER JOIN rgr! врачи ;

Ø  ON Врачи. идент_врач = Пац_врач. идент_врач;

Ø  Where врачи. фамилия_врача=bo1.Value AND;

Ø  лекарства. название_лекарства=bo2.Value

Результат запроса:

Рис. 62 Результат запроса №18

7. Специальные формы для просмотра и редактирования данных

Для удобного просмотра данных таблиц применяются специальные формы для отображения и редактирования данных. Эти формы вызываются отдельным пунктом меню «Таблицы» (подробнее на стр. 14).

Рис. 41 Пункт меню «Таблицы»

7.1 База данных <Пациенты>

Рис. 42 База данных «Пациенты»

7.2 База данных <Врачи>

Рис. 43 База данных «Врачи»

7.3 База данных <Лекарства>

Рис. 44 База данных «Лекарства»

7.4 База данных <Фирмы>

Рис. 45 База данных «Фирмы»

7.5 База данных <Пациенты-Врач>

Рис. 46 База данных «Пациенты-Врач»

7.6 База данных <Пациенты-Лекарства>

Рис. 47 База данных «Пациенты-Лекарства»

7.7 База данных <Лекарства-Фирмы>

Рис. 48 База данных «Лекарства-Фирмы»

В данных формах отображены все данные, которые хранятся в исходных таблицах. С помощью них можно просматривать все поля и данные каждой таблицы, а также редактировать их (данные).

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

8.Выводы

В результате выполнения расчетно-графического задания был получен опыт работы с СУБД Microsoft Visual FoxPro 9.0, и знания по дисциплине "Базы данных" были закреплены на практике.

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

Можно еще добавить, что интерфейс Visual FoxPro 9 позволяет полноценно работать с базой данных и при помощи пунктов меню, и при помощи команд, вводимых в командном окне, и при помощи специальных «Мастеров», помогающих неопытным пользователям.

Таким образом, Visual FoxPro 9 обладает всеми возможностями современных баз данных и для решения некоторого круга задач предпочтительно использовать базу данных СУБД Visual FoxPro 9.

9.Список используемой литературы

1. Visual FoxPro 9 — М.:НТ Пресс, 20с.

2. Малыхина данных: основы, проектирование, использование. - Спб.: БХВ-Петербург, 2004.

3. Селко Дж. Программирование на SQL для профессионалов.- М.: Лори, 2004.