Desktop / СУБД / Старостина / библиотека
.docФедеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. Н. П. ОГАРЁВА»
Факультет математики и информационных технологий
Кафедра прикладной математики
Спецкурс СУБД
Библиотека
Специализация: защита информации
Выполнил: студентка 404 группы
Старостина Оксана
Саранск 2013
Содержание
Техническое задание
Библиотека закупает книги у поставщиков. Закупленные книги поступают на склад библиотеки. Один и тот же автор может написать несколько книг, и одна книга может быть написана несколькими авторами. Книги могут быть выданы читателям. Читатель после прочтения книги сдаёт её в библиотеку. Читатель может не вернуть книгу в библиотеку по следующим причинам: 1) утеря. 2) не подлежит восстановлению.
Необходимо разработать ER модель, физическую модель по учёту движения книг.
Предусмотреть реализацию следующих хозяйственных операций:
-
Приход книг на склад библиотеки поставщиками.
-
Выдача книг со склада библиотеки читателям.
-
Возврат книг на склад от читателя.
-
Списание книг со склада.
Для просмотра хозяйственных операций реализуем запросы по ним за выбранный промежуток времени.
Сформировать запрос по объемам книг на складе и у каждого читателя на выбранный момент времени.
ER- модель
N
книги
авторы
1
M M
экземпляры
N
M
читатели
Диаграмма базы данных
Физическая модель
Читатели ( table_reader)
Книги ( table_books)
Экземпляры ( table_exemplers)
Авторы ( table_autors)
Связь между авторами и книгами
Операции над книгами
Иерархический справочник
Table_books
Запросы по хозяйственным операциям
-
Сформируем запрос, который показывает приход книг на склад от поставщиков за период с 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
Результат запроса:
-
Сформируем запрос, который показывает выдачу книг со склада библиотеки читателям с 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
Результат запроса:
-
Сформируем запрос, который показывает возврат книг на склад библиотеки от читателей с 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
Результат запроса:
-
Сформируем запрос, который показывает списание книг на период с 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
Результат запроса:
-
Сформируем запрос, который показывает количество книг у каждого читателя
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
Результат запроса:
-
Сформируем запрос, который показывает соответствие книг и авторов
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
Результат запроса: