Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Desktop / СУБД / Старостина / библиотека

.doc
Скачиваний:
12
Добавлен:
11.02.2015
Размер:
2.21 Mб
Скачать

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального образования

«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Н. П. ОГАРЁВА»

Факультет математики и информационных технологий

Кафедра прикладной математики

Спецкурс СУБД

Библиотека

Специализация: защита информации

Выполнил: студентка 404 группы

Старостина Оксана

Саранск 2013

Содержание

Техническое задание

Библиотека закупает книги у поставщиков. Закупленные книги поступают на склад библиотеки. Один и тот же автор может написать несколько книг, и одна книга может быть написана несколькими авторами. Книги могут быть выданы читателям. Читатель после прочтения книги сдаёт её в библиотеку. Читатель может не вернуть книгу в библиотеку по следующим причинам: 1) утеря. 2) не подлежит восстановлению.

Необходимо разработать ER модель, физическую модель по учёту движения книг.

Предусмотреть реализацию следующих хозяйственных операций:

  1. Приход книг на склад библиотеки поставщиками.

  2. Выдача книг со склада библиотеки читателям.

  3. Возврат книг на склад от читателя.

  4. Списание книг со склада.

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

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

ER- модель

N

книги

авторы

1

M

M

экземпляры

N

M

читатели

Диаграмма базы данных

Физическая модель

Читатели ( table_reader)

Книги ( table_books)

Экземпляры ( table_exemplers)

Авторы ( table_autors)

Связь между авторами и книгами

Операции над книгами

Иерархический справочник

Table_books

Запросы по хозяйственным операциям

  1. Сформируем запрос, который показывает приход книг на склад от поставщиков за период с 1 января по 3 января

use library

select book_name, inv_num, provis, date_prov from table_books, table_exemplares

where (date_prov > '31.12.2011')and (date_prov < '04.01.2012') and (table_books.id_book=table_exemplares.id_book)

order by date_prov

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

  1. Сформируем запрос, который показывает выдачу книг со склада библиотеки читателям с 11 января по 15 января

use library

select book_name, inv_num, name, date, operation from table_books, table_exemplares, table_reader, table_exemplares_reader

where (date > '10.01.2012')and (date < '16.01.2012')

and (table_reader.id_reader=table_exemplares_reader.id_reader)

and (table_exemplares.id_book=table_books.id_book) and(table_exemplares_reader.inv_num1=table_exemplares.inv_num)

order by name

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

  1. Сформируем запрос, который показывает возврат книг на склад библиотеки от читателей с 11 января по 15 января

use library

select book_name, inv_num, name, date from table_books, table_exemplares, table_reader, table_exemplares_reader

where (date > '10.01.2012')and (date < '16.01.2012')

and (table_reader.id_reader=table_exemplares_reader.id_reader)

and (table_exemplares.id_book=table_books.id_book)

and(table_exemplares_reader.inv_num1=table_exemplares.inv_num)

and (table_exemplares_reader.operation=1)

order by name

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

  1. Сформируем запрос, который показывает списание книг на период с 11 января по 15 января

use library

select book_name, inv_num, name, date from table_books, table_exemplares, table_reader, table_exemplares_reader

where (date > '10.01.2012')and (date < '16.01.2012')

and (table_reader.id_reader=table_exemplares_reader.id_reader)

and (table_exemplares.id_book=table_books.id_book)

and(table_exemplares_reader.inv_num1=table_exemplares.inv_num)

and (table_exemplares_reader.operation>2)

order by name

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

  1. Сформируем запрос, который показывает количество книг у каждого читателя

use library

select name, count(*) as [всего2] from table_reader, table_exemplares_reader

where (table_reader.id_reader=table_exemplares_reader.id_reader) and (table_reader.id_reader=table_reader.id_reader)

group by name

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

  1. Сформируем запрос, который показывает соответствие книг и авторов

use library

SELECT books.book_name, authors_name.author_name

from table_books as books

INNER JOIN

(select author_book.id_book, author.author_name from "table_author_books" as author_book

INNER JOIN

table_authors as author

ON author_book.id_author = author.id_author

)as authors_name

ON books.id_book = authors_name.id_book

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

12