Скачиваний:
170
Добавлен:
15.03.2015
Размер:
748.61 Кб
Скачать

4.3 Запросы к информационной системе

Чтобы окончательно убедиться, что спроектированная база данных работоспособна, построим выражения для 10 вариантов запросов:

1. Получить список читателей с заданными характеристиками: студентов указанного учебного заведения, факультета, научных работников по определенной тематике и т.д. (рис. 29).

SELECT П.Имя_польз, П.Фамилия_польз, П.Отчество_польз, П.Номер_абонем, 'Должность_Официант' Статус

FROM Рабочий Р JOIN Пользователь П

ON Р.Номер_абонем = П.Номер_абонем

AND Р.Должность_раб = 'Официант'

UNION ALL

SELECT П.Имя_польз, П.Фамилия_польз, П.Отчество_польз, П.Номер_абонем, 'Факультет_ИСиТ'

FROM Студент С JOIN Пользователь П

ON С.Номер_абонем = П.Номер_абонем

JOIN Факультет Ф

ON Ф.Номер_факульт = С.Номер_факульт

AND Ф.Назван_факульт = 'ИСиТ'

UNION ALL

SELECT П.Имя_польз, П.Фамилия_польз, П.Отчество_польз, П.Номер_абонем, 'Научн_тема_философия'

FROM Научн_работник Н JOIN Пользователь П

ON Н.Номер_абонем = П.Номер_абонем

AND Н.Научная_тема = 'Философия'

UNION ALL

SELECT П.Имя_польз, П.Фамилия_польз, П.Отчество_польз, П.Номер_абонем, 'Посл_место_раб_Сбербанк'

FROM Безработный Б JOIN Пользователь П

ON Б.Номер_абонем = П.Номер_абонем

AND Б.Посл_место_раб = 'Сбербанк';

Рисунок 33 - Результат работы запроса 1

2. Выдать перечень читателей, на руках у которых находится указанное произведение (рис. 30).

SELECT П.Фамилия_польз, П.Имя_польз, П.Отчество_польз, П.Номер_абонем

FROM Пользователь П JOIN Абонемент А

ON П.Номер_абонем = А.Номер_абонем

JOIN Абонем_журнал А_ж

ON А.Номер_абонем = А_ж.Номер_абонем

JOIN Журнал_посещ Ж

ON А_ж.Номер_записи = Ж.Номер_записи

JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

JOIN Произвед_журнал П_ж

ON Ж.Номер_записи = П_ж.Номер_записи

JOIN Произведение Пр

ON П_ж.Артикул_произв = Пр.Артикул_произв

JOIN Атрибут_произв А_п

ON Пр.Артикул_произв = А_п.Артикул_произв

WHERE А_п.Название_произв = 'Капитанская дочка'

AND В.Дата_выдачи IS NOT NULL

AND В.Срок_сдачи > sysdate;

Рисунок 34 - Результат работы запроса 2

3. Получить список читателей, на руках у которых находится указанное издание (книга, журнал и т.д) (рис. 31).

SELECT П.Фамилия_польз, П.Имя_польз, П.Отчество_польз, П.Номер_абонем

FROM Пользователь П JOIN Абонемент А

ON П.Номер_абонем = А.Номер_абонем

JOIN Абонем_журнал А_ж

ON А.Номер_абонем = А_ж.Номер_абонем

JOIN Журнал_посещ Ж

ON А_ж.Номер_записи = Ж.Номер_записи

JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

JOIN Произвед_журнал П_ж

ON Ж.Номер_записи = П_ж.Номер_записи

JOIN Произведение Пр

ON П_ж.Артикул_произв = Пр.Артикул_произв

JOIN Атрибут_произв А_п

ON Пр.Артикул_произв = А_п.Артикул_произв

JOIN Издание И

ON Пр.Артикул_издания = И.Артикул_издания

WHERE И.Назван_издания = 'Искра'

AND В.Дата_выдачи IS NOT NULL

AND В.Срок_сдачи > sysdate;

Рисунок 35 - Результат работы запроса 3

4. Получить перечень читателей, которые в течение указанного промежутка времени получали издание с некоторым произведением, и название этого издания (рис. 32).

SELECT П.Фамилия_польз, П.Имя_польз, П.Отчество_польз, П.Номер_абонем, И.Назван_издания

FROM Пользователь П JOIN Абонемент А

ON П.Номер_абонем = А.Номер_абонем

JOIN Абонем_журнал А_ж

ON А.Номер_абонем = А_ж.Номер_абонем

JOIN Журнал_посещ Ж

ON А_ж.Номер_записи = Ж.Номер_записи

JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

JOIN Произвед_журнал П_ж

ON Ж.Номер_записи = П_ж.Номер_записи

JOIN Произведение Пр

ON П_ж.Артикул_произв = Пр.Артикул_произв

JOIN Атрибут_произв А_п

ON Пр.Артикул_произв = А_п.Артикул_произв

JOIN Издание И

ON Пр.Артикул_издания = И.Артикул_издания

WHERE А_п.Название_произв = 'Капитанская дочка'

AND В.Дата_выдачи BETWEEN '05.09.2013' AND '17.05.2014';

Рисунок 36 - Результат работы запроса 4

5. Выдать список изданий, которые в течение некоторого времени получал указанный читатель из фонда библиотеки, где он зарегистрирован (рис. 33).

SELECT И.Назван_издания

FROM Пользователь П JOIN Абонемент Аб

ON П.Номер_абонем = Аб.Номер_абонем

JOIN Абонем_журнал А_ж

ON Аб.Номер_абонем = А_ж.Номер_абонем

JOIN Библиотека Б

ON Б.Номер_библ = Аб.Номер_библ

JOIN Журнал_посещ Ж

ON А_ж.Номер_записи = Ж.Номер_записи

JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

JOIN Произвед_журнал П_ж

ON Ж.Номер_записи = П_ж.Номер_записи

JOIN Произведение Пр

ON П_ж.Артикул_произв = Пр.Артикул_произв

JOIN Издание И

ON Пр.Артикул_издания = И.Артикул_издания

WHERE В.Дата_выдачи BETWEEN '05.09.2013' AND '17.05.2014'

AND П.Фамилия_польз = 'Майкина'

AND П.Имя_польз = 'Ольга'

AND П.Отчество_польз = 'Киевна'

AND Б.Название_библ = 'Юношеская библ.';

Рисунок 37 - Результат работы запроса 5

6. Получить перечень изданий, которыми в течение некоторого времени пользовался указанный читатель из фонда библиотеки, где он не зарегистрирован (рис. 34).

SELECT И.Назван_издания

FROM Абонемент Аб JOIN Пользователь П

ON П.Номер_абонем = Аб.Номер_абонем

JOIN Абонем_журнал А_ж

ON Аб.Номер_абонем = А_ж.Номер_абонем

JOIN Библиотека Б

ON Б.Номер_библ = Аб.Номер_библ

JOIN Журнал_посещ Ж

ON А_ж.Номер_записи = Ж.Номер_записи

JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

JOIN Произвед_журнал П_ж

ON Ж.Номер_записи = П_ж.Номер_записи

JOIN Произведение Пр

ON П_ж.Артикул_произв = Пр.Артикул_произв

JOIN Издание И

ON Пр.Артикул_издания = И.Артикул_издания

WHERE В.Дата_выдачи BETWEEN '05.09.2013' AND '17.05.2014'

AND П.Фамилия_польз = 'Сапин'

AND П.Имя_польз = 'Сергей'

AND П.Отчество_польз = 'Гаевич'

AND Б.Название_библ != 'Детская библ.';

Рисунок 38 - Результат работы запроса 6

7. Получить список литературы, которая в настоящий момент выдана с определенной полки некоторой библиотеки (рис. 35).

SELECT И.Назван_издания

FROM Издание И JOIN Библ_фонд Б_ф

ON Б_ф.Артикул_издания = И.Артикул_издания

JOIN Произведение Пр

ON И.Артикул_издания = Пр.Артикул_издания

JOIN Произвед_журнал П_ж

ON Пр.Артикул_произв = П_ж.Артикул_произв

JOIN Журнал_посещ Ж

ON П_ж.Номер_записи = Ж.Номер_записи

JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

JOIN Абонем_журнал А_ж

ON Ж.Номер_записи = А_ж.Номер_записи

JOIN Абонемент А

ON А_ж.Номер_абонем = А.Номер_абонем

WHERE Ж.Дата_возврата = NULL

AND В.Срок_сдачи > sysdate

AND Б_ф.Номер_зала = '1с'

AND Б_ф.Номер_стеллажа = '1'

AND Б_ф.Номер_полки = '1'

AND А.Номер_библ = '1';

Рисунок 39 - Результат работы запроса 7

8. Выдать список читателей, которые в течение обозначенного периода были обслужены указанным библиотекарем (рис. 36).

SELECT DISTINCT П.Фамилия_польз, П.Имя_польз, П.Отчество_польз, П.Номер_абонем

FROM Выдача В JOIN Журнал_посещ Ж

ON В.Номер_записи = Ж.Номер_записи

JOIN Абонем_журнал А_ж

ON Ж.Номер_записи = А_ж.Номер_записи

JOIN Библиотекарь Б_рь

ON Ж.Номер_библ_ря = Б_рь.Номер_библ_ря

JOIN Абонемент А

ON А_ж.Номер_абонем = А.Номер_абонем

JOIN Пользователь П

ON А.Номер_абонем = П.Номер_абонем

WHERE Б_рь.Фамилия_библ_ря = 'Зонова'

AND Б_рь.Имя_библ_ря = 'Ольга'

AND Б_рь.Отчество_библ_ря = 'Баевна'

AND В.Дата_выдачи BETWEEN '05.09.2013' AND '17.05.2014';

Рисунок 40 - Результат работы запроса 8

9. Получить данные о выработке библиотекарей (число обслуженных читателей в указанный период времени) (рис. 37).

SELECT Ж.Номер_библ_ря, (COUNT(В.Дата_выдачи) + COUNT(Ж.Дата_возврата)) Количество

FROM Журнал_посещ Ж JOIN Выдача В

ON Ж.Номер_записи = В.Номер_записи

WHERE В.Дата_выдачи BETWEEN '05.09.2013' AND '17.05.2014'

GROUP BY Ж.Номер_библ_ря;

Рисунок 41 - Результат работы запроса 9

10. Получить список читателей с просроченным сроком литературы (рис. 38).

SELECT DISTINCT П.Фамилия_польз, П.Имя_польз, П.Отчество_польз, П.Номер_абонем

FROM Выдача В JOIN Журнал_посещ Ж

ON В.Номер_записи = Ж.Номер_записи

JOIN Абонем_журнал А_ж

ON Ж.Номер_записи = А_ж.Номер_записи

JOIN Абонемент А

ON А_ж.Номер_абонем = А.Номер_абонем

JOIN Пользователь П

ON А.Номер_абонем = П.Номер_абонем

WHERE Ж.Дата_возврата = NULL

AND В.Срок_сдачи < sysdate;

Рисунок 42 - Результат работы запроса 10

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

Соседние файлы в папке ИСТ11-Курсовой проект Ильина А.С