Информационная система 'Абонемент библиотеки'
Курсовая
работа
Дисциплина
Проектирование баз данных
На тему:
Информационная система «Абонемент библиотеки»
Задание
Основная деятельность - выдача комплектов книг учащимся. Абонемент
библиотеки формирует комплекты книг в соответствии с учебным планом, выдает
книги учащимся и ведет учет о выданных книгах.
База данных предназначена для получения следующей информации:
· Списки учащихся определенных групп.
· Списки сотрудников, и прикрепленных к ним формуляров.
· Списки читателей, получивших и не получивших книги.
· Данные о имеющихся книгах в абонементе.
Анализ
предметной области
Целью представленного нами объекта будет автоматизация деятельности
абонемента библиотеки АУЭС.
Сведения об этапе начальной разработки в основном получаются из опроса
основных и конечных пользователей. Эти люди являются основными клиентами БД и
их необходимо идентифицировать с особой тщательностью. Основными пользователями
приложения Абонемент библиотеки АУЭС, являются:
§ Сотрудники библиотеки, в чьи обязанности входит вести учет о выданных
комплектах книг и их получателей и следить за всеми изменениями в учебном
плане;
§ Пользователи библиотеки, которые могут просмотреть всю нужную им
информацию о книгах и сотрудниках.
Задачи Изостудии
Изостудия расположена в здании Алматинского Университета Энергетики и
Связи, ее могут посещать только студенты данного ВУЗа. Здесь они получают
необходимую им в семестре литературу.
Организационная структура
Всю основную работу выполняют библиотекари. Они обслуживают
студентов(читателей), заводя на них формуляры, выдавая им комплекты книг и ведя
учет о каждом читателе.
Описание операций
Абонемент осуществляет несколько видов операций:
ü ведение информации о читателях и сотрудниках
ü ведение контроля выдачи комплектов книг
ü формировка комплектов книг соответственно учебному плану
ü ведение информации о читателях и сотрудниках
ü регистрация новых читателей и сотрудников, заведение на них
формуляров.
ü ведение контроля выдачи комплектов книг
ü учет выданных комплектов книг студентам.
ü формировка комплектов книг соответственно учебному плану
ü составление содержания комплектов книг
Проблемы и ограничения
ü неавтоматизированная система не отвечает современным
требованиями
ü отсутствие компьютеризованной системы регистрации читателей
затрудняет управление информацией.
ü Сотрудники тратят слишком много времени на обработку данных
вручную
Система ручной обработки данных весьма не удобна, уходит много времени.
Выявив проблемы, мы пришли к выводу, что имеющаяся ручная система учета,
не отвечает текущим требованиям. Время, затрачиваемое на работу с документами
постоянно растет. Кроме того, упорядочивание информации требует слишком много
времени. Проблемы решаются в рамках двух наборов ограничений: ограничения
деятельности, определяемые политикой предприятия, и экономические ограничения,
определяемые финансами предприятия.
Хорошо спроектированная база данных должна решить большинство проблем
изостудии.
Ограничение по времени
Заказчик предлагает, чтобы новая система была введена в строй в течении
трех месяцев.
Аппаратное и программное обеспечение
Система должна функционировать на имеющейся в библиотеке компьютерах.
Предназначение системы
Для изостудии определены два направления решаемых задач общие и
специфичные.
К общим задачам относятся
. Повышение эффективности и , тем самым, увеличение пропускной
способности и расширение сферы деятельности абонемента библиотеки.
2. Обеспечение необходимо информацией для планирования, управления и
безопасности.
Сфера действия и границы
Система будет ограничена таким образом, чтобы она могла обслужить
следующие сферы деятельности
ü ведение информации о сотрудниках и читателях
ü ведение личных формуляров
ü ведение учета имеющихся книг
Так как абонемент библиотеки небольшой и решает относительно небольшой
круг задач, то сферу деятельности на модули подразделять не будем.
1.2 Этап проектирования базы данных
Концептуальный проект
Источники информации и пользователи
Для абонемента библиотеки мы выявили следующие источники информации:
сотрудники
читатели
используемые в настоящее время компьютерные формы документов, папки с
файлами и отчетные формы.
сотрудник (который и является администратором) управляет системой, вводит
данные в БД, выполняет запросы, обновляет БД и определяет требования к
отчетности.
Необходимая информация:
требования пользователя
Система должна быть проста в использовании. Интерфейс основного меню
должен быть очень удобным.
Система должна обеспечивать безопасность. Это осуществляется с помощью
паролей и прав доступа.
Система должна быть полностью интегрирована, т. е. должны быть исключены
избыточность данных и избыточные обновления. Система должна гарантировать
целостность БД.
Таким образом выделим сущности, определенные на основе начального этапа
разработки:
)Читатели
)Сотрудники
)Книги
)Предметы
)Группы
)Специальность
)Факультет
UML диаграммы
Для моделирования статических объектов в объектно-ориентированной
концепции UML существует 12 диаграмм, но так как
большинство объектов БД “Изостудия” являются статическими, то используем самые
основные:
.Диаграмма компонентов.
.Диаграмма прецедентов
3.Диаграмма классов.
.Диаграмма развертывания.
Диаграмма компонентов
Диаграмма компонентов показывает набор компонентов и отношений между
ними.
Компонент - это физически заменяемая часть системы, которая имеет набор интерфейсов
и обеспечивает их реализацию.
В моем случае исполняемый модуль Izostudia.exe обращается за получением или добавлением информации к
базе данных Izostudia.mdf. Но обращается не напрямую, а через MS SQL SERVER. Таким образом MS SQL Server 2008 является интерфейсом между программой и базой
данных, обеспечивая их взаимодействие.
Рисунок 1. Диаграмма компонентов
Диаграмма прецедентов
Для характеристики взаимодействия пользователей с базами данных
применяется диаграмма прецедентов или вариантов использования:
Рисунок 2. Диаграмма прецедентов
Из нее видно, что пользоваться базой могут 2 группы пользователей:
сотрудники(admin) и пользователи(user).
Диаграмма классов
Диаграмма классов в UML
является частным случаем ER
диаграммы. ER диаграммы используются для
логического проектирования баз данных. Главное их отличие: В ER диаграмме уделяется внимание
структуре данных, а в диаграмме классов - поведению классов.
Рисунок 3. Диаграмма классов
Рисунок 4. Диаграмма развертывания
Диаграмма развёртывания, Deployment diagram в UML моделирует физическое
развертывание артефактов на узлах. Например, чтобы описать веб-сайт диаграмма
развертывания должна показывать, какие аппаратные компоненты ("узлы")
существуют (например, веб-сервер, сервер базы данных, сервер приложения), какие
программные компоненты ("артефакты") работают на каждом узле
(например, веб-приложение, база данных), и как различные части этого комплекса соединяются
друг с другом (например, JDBC, REST, RMI).
Узлы представляются как прямоугольные параллелепипеды с артефактами,
расположенными в них, изображенными в виде прямоугольников. Узлы могут иметь
подузлы, которые представляются как вложенные прямоугольные параллелепипеды.
Один узел диаграммы развертывания может концептуально представлять множество
физических узлов, таких как кластер серверов баз данных.
Существует два типа узлов:
• Узел устройства
• Узел среды выполнения
Узлы устройств - это физические вычислительные ресурсы со своей памятью и
сервисами для выполнения программного обеспечения, такие как обычные ПК,
мобильные телефоны. Узел среды выполнения - это программный вычислительный
ресурс, который работает внутри внешнего узла и который предоставляет собой
сервис, выполняющий другие исполняемые программные элементы.
Диаграмма развертывания нашей системы очень проста, так как не требует
специального оборудования и может устанавливаться на любой ПК.
Проектирование
БД
Учитывая особенности данной системы, расмотренной в анализе
предметной области, выделим основные таблицы и связи между ними,
предоставленные на предварительной ER-диаграмме, которая приведена на рисунке 5.
Рисунок
5 - Общая ER-диаграмма
На основе этапа начальной разработки сформируем бизнес-правила. Затем
определяем связи между сущностями, в основном опираясь на описание операций.
Точнее связи сущности базируются на бизнес-правилах, построенных на основе
подробного описания операций.
Разработка
и построение подробной ER диаграммы на основании бизнес правил
Бизнес - правила:
Бизнес - правило 1.
Один читатель может иметь только один формуляр.
Бизнес - правило 2.
Один читатель может учиться только в одной группе.
Бизнес - правило 3.
Одна группа может относится только к одной специальности
Бизнес - правило 4.
Каждая специальность относится только к одному факультету
Бизнес - правило 5.
Специальность может иметь много учебных планов
Бизнес - правило 6.
Учебный план может содержать один предмет только по одному
разу
Бизнес - правило 7.
Учебный план может подразделять несколько формирований
комплектов.
Бизнес - правило 8.
Один сотрудник может завести много формуляров
Бизнес - правило 9.
В Абонементе АУЭС может работать много сотрудников
Бизнес - правило 10.
В Абонементе АУЭС может храниться множество книг
Бизнес - правило 11.
Одна книга может входить во множество формирований комплектов.
Разработка
и построение подробной ER диаграммы на основании бизнес правил
Рисунок 6. Окончательный вариант концептуальной модели информационной
системы Абонемент библиотеки АУЭС
Анализ
информационных задач и круга пользователей системы
С данной ИС могут работать следующие группы пользователей:
· Сотрудник(admin);
· Читатель(user);
Пользователями данной информационной системы являются ученики АУЭС и
работники библиотеки
· Ученики просматривают данные о выданных книгах, сотрудниках и сроках
возврата
· Работники библиотеки также просматривают информацию и данные
об учениках
Сотрудник то есть администратор в одном лице просматривает , удаляет,
редактирует, добавляет записи.
Определение атрибутов каждой сущности
Сегмент ER модели
|
Описание (ПК- первичный ключ)
|
|
Таблица Читатель содержит следующие данные:
№читательского
билета-идентификатор читателя Фамилия - Фамилия читателя Имя - Имя читателя
Отчество -Отчество читателя
|
|
Таблица Группа содержит следующие данные:
ID_группы - идентификатор
группы Название- Название группы
|
|
Таблица Специальность содержит следующие данные:
ID _специальности-
идентификатор специальности Название - название специальности
|
|
Таблица Факультет содержит следующие данные:
ID _факультета-
идентификатор факультета Название - название факультета
|
|
Таблица Формуляр содержит следующие данные: ID _формуляра-
идентификатор формуляра Роспись - электронная роспись читателя Дата_выдачи-
дата выдачи комплекта Дата_возврата - дата возврата комплекта
|
Таблица
Сотрудник содержит следующие данные:
ID
_сотрудника- идентификатор сотрудника
ФИО-ФИО сотрудника
Телефон- телефон сотрудника
|
|
|
Таблица абонемент АУЭС содержит следующие данные: ID
_абонемента- идентификатор абонемента Телефон - Телефон учреждения Адрес - Адрес учреждения
|
|
Таблица Книги содержит следующие данные: ISBN- идентификатор
книги Название - название книги Автор - Имя автора книги
Количество_экземпляров - количество экзмпляров книг
|
Таблица
Формирование_комплекта содержит следующие данные:
ID _комплекта- идентификатор комплекта
Название - название комплекта
|
|
|
Таблица Предмет содержит следующие данные: ID_предмета-
идентификатор предмета Название - название предмета
|
|
Таблица Учебный_план содержит следующие данные: ID
_учебного_плана- идентификатор учебного плана Название - название учебного
плана
|
Составление
реляционных отношений
Каждое реляционное отношение соответствует одной сущности и в него
вносятся все атрибуты сущности. Для каждого отношения необходимо определить
первичный ключ и внешние ключи (если они есть). Отношения приведены в таблицах.
Для каждого соотношения указаны атрибуты с их внутренним названием, типом и
длиной. Обязательное поле обозначено not null, необязательное - null. Типы
данных обозначаются так: int - числовой, varchar - символьный, datetime - дата, char.
Таблица 1. Схема отношения Читатель (chitatel)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
№_читательского_билета
|
#_chitatelskogo_bileta
|
Int
|
Первичный ключ
|
Фамилия
|
Familiya
|
Varchar(25)
|
Not null
|
Имя
|
Imya
|
Varchar(20)
|
Not null
|
Отчество
|
Otchestvo
|
Varchar(25)
|
Not null
|
ID_Группы
|
ID_gruppy
|
Int
|
Внешний ключ
|
Таблица 2. Схема отношения Формуляр (formulyar )
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID_формуляра
|
ID_formulyara
|
Int
|
Первичный ключ
|
ID_сотрудника
|
ID_sotrudnika
|
int
|
Внешний ключ
|
Роспись
|
Rospis
|
Varchar(25)
|
Not null
|
Дата_выдачи
|
Data_vydachi
|
Date
|
Not null
|
Дата_возврата
|
Data_vozvrata
|
date
|
Not null
|
Таблица 3. Схема отношения Группы (Gruppa)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID группы
|
ID_gruppy
|
Int
|
Первичный ключ
|
ID_специальности
|
ID_specialnosti
|
Int
|
Внешний ключ
|
Название
|
Nazvanie
|
Varchar(25)
|
Not Null
|
Таблица 4. Схема отношения Абонемент АУЭС (abonement_AUES)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID абонемента
|
ID_abonementa
|
Int
|
Первичный ключ
|
Адрес
|
adres
|
Varchar(20)
|
Not null
|
Телефон
|
telefon
|
int
|
Not null
|
Таблица 5. Схема отношения Факультет (fakultet)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID факультета
|
ID_fakulteta
|
Int
|
Первичный ключ
|
Название
|
Nazvanie
|
Varchar(25)
|
Not null
|
Таблица 6. Схема отношения Формирование комплекта
(Formirovanie_komplekta)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID комплекта
|
Id_komplekta
|
int
|
Первичный ключ
|
ISBN
|
ISBN
|
int
|
Внешний ключ
|
ID_учебного плана
|
ID_uchebnogo_plana
|
int
|
Внешний ключ
|
Название
|
Nazvanie
|
Varchar(25)
|
Not null
|
Таблица 7. Схема отношения Книги (knigi)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ISBN
|
ISBN
|
Int
|
Первичный ключ
|
ID_абонемента
|
ID_abonementa
|
int
|
Внешний ключ
|
Название
|
Nazvanie
|
Varchar(20)
|
not null
|
Год выпуска
|
God_vypuska
|
Int
|
not null
|
Автор
|
Avtor
|
Varchar(25)
|
Not null
|
Количество_экземпляров
|
Kolichestvo_ekzemolyarov
|
int
|
Not null
|
Таблица 8. Схема отношения Предмет (Predmet)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID предмета
|
Id_predmeta
|
int
|
Первичный ключ
|
Наименование
|
Naimenovanie
|
Varchar(25)
|
Not null
|
Таблица 9. Схема отношения Сотрудник (Sotrudnik)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID_сотрудника
|
Id_sotrudnika
|
int
|
первичный ключ
|
ID_абонемента
|
ID_abnementa
|
int
|
Фамилия
|
Familiya
|
Varchar(25)
|
Not null
|
Имя
|
Imya
|
Varchar(20)
|
Not null
|
Отчество
|
Otchestvo
|
Varchar(25)
|
Not null
|
Должность
|
Doljnost
|
Varchar(25)
|
Not null
|
Telefon
|
Telefon
|
int
|
Not null
|
Таблица 10. Схема отношения Специальность (Specialnost)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID_специальности
|
Id_specialnosti
|
int
|
Первичный ключ
|
ID_факультета
|
ID_fakulteta
|
int
|
not null
|
Название
|
Nazvanie
|
Varchar (25)
|
Not null
|
Таблица 11. Схема отношения Учебный план(Uchebnyi_plan)
Содержание поля
|
Имя поля
|
Тип, длина
|
Примечания
|
ID учебного плана
|
Id_uchebnogo_plana
|
int
|
первичный ключ
|
ID специальности
|
ID_specialnosti
|
int
|
внешний ключ
|
Название
|
Nazvanie
|
Varchar(25)
|
Not null
|
Расчет
места, занимаемого БД
На этом этапе необходимо знать, какой объем памяти будет занимать
создаваемая база данных. Объём внешней памяти, необходимый для функционирования
системы, складывается из двух составляющих: память, занимаемая модулями СУБД
(ядро, утилиты, вспомогательные программы), и память, отводимая под данные (МД).
Наиболее существенным обычно является МД.
Объём памяти, занимаемый программными модулями пользователя, обычно
невелик по сравнению с объёмом самих данных, поэтому может не учитываться. В
проекте рассчитывается предполагаемый максимальный объем памяти занимаемой БД
на сроком в год.
база данные реляционный отношение
Таблица10. Расчет физической памяти для таблицы Сотрудники (Sotrudniki)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_sotrudnika
|
Int
|
4
|
ID_abonementa
|
Int
|
4
|
Familiya
|
Varchar(25)
|
25
|
Imya
|
Varchar(20)
|
20
|
Otchestvo
|
Varchar(25)
|
25
|
Doljnost
|
Varchar(25)
|
25
|
Telefon
|
int
|
4
|
Общая длина строки: 107 байт. Число строк: ~ 15
Общий объем требуемой памяти: ~ 1605 байт
Таблица11. Расчет физической памяти для таблицы группа (Gruppa)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_gruppy
|
Int
|
4
|
ID_specialnosti
|
int
|
4
|
Nazvanie
|
Varchar(25)
|
25
|
Общая длина строки: 33 байт
Число строк: ~ 15
Общий объем требуемой памяти: ~ 495 байт
Таблица 12. Расчет физической памяти для таблицы Формуляр (Formulyar)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_formulyara
|
Int
|
4
|
ID_sotrudnika
|
int
|
4
|
Rospis
|
Varchar(25)
|
25
|
Data_vydachi
|
Date
|
4
|
Data_vozvrata
|
date
|
4
|
Общая длина строки: 41 байт
Число строк: ~ 4
Общий объем требуемой памяти: ~ 164 байт
Таблица 13. Расчет физической памяти для таблицы Читатель(Chitatel)
Имя поля
|
Тип, длина
|
Длина(байт)
|
#_Chitatelskogo_bileta
|
Int
|
4
|
ID_gruppy
|
int
|
4
|
Familiya
|
Varchar(25)
|
25
|
Imya
|
Varchar(20)
|
20
|
Otchestvo
|
Varchar(25)
|
25
|
Общая длина строки: 78
байт
Число строк: ~ 26
Общий объем требуемой памяти: ~ 2028 байт
Таблица 14. Расчет физической памяти для таблицы Формирование комплекта
(Formirovanie_komplekta)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_komplekta
|
Int
|
4
|
ISBN
|
int
|
4
|
ID_uchebnogo_plana
|
int
|
4
|
Nazvanie
|
Varchar(25)
|
25
|
Общая длина строки: 37байт
Число строк: ~ 12
Общий объем требуемой памяти: ~ 444 байт
Таблица 15. Расчет физической памяти для таблицы Книги(Knigi)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ISBN
|
int
|
4
|
Id_abonimenta
|
int
|
4
|
Nazvanie
|
Varchar(20)
|
20
|
God_vypuska
|
Int
|
4
|
Avtor
|
Varchar(25)
|
25
|
Kolichestvo_ekzemplyarov
|
int
|
4
|
Общая длина строки: 61
байт
Число строк: ~ 9
Общий объем требуемой памяти: ~ 549 байт
Таблица 16. Расчет физической памяти для таблицы Специальность
(Specialnost)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_specialnosti
|
Int
|
4
|
ID_fakulteta
|
int
|
4
|
Nazvanie
|
VarChar(25)
|
25
|
Общая длина строки: 33 байт
Число строк: ~ 6
Общий объем требуемой памяти: ~ 198 байт
Таблица 17. Расчет физической памяти для таблицы Учебный план
(Uchebnyi_plan)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_uchebnogo_plana
|
int
|
4
|
ID_specialnosti
|
Int
|
4
|
Nazvanie
|
Varchar(25)
|
25
|
Общая длина строки: 33
байт
Число строк: ~ 16
Общий объем требуемой памяти: ~ 528 байт
Таблица 18. Расчет физической памяти для таблицы Предмет(predmet)
Имя поля
|
Тип, длина
|
Длина(байт)
|
ID_predmeta
|
int
|
4
|
Naimenovanie
|
Varchar(25)
|
25
|
Общая длина строки: 29
байт
Число строк: ~ 6
Общий объем требуемой памяти: ~ 174 байт
Таблица 18. Расчет физической памяти для таблицы Факультет (Fakultet)
Имя поля
|
Тип, длина
|
Длина(байт)
|
Id_fakulteta
|
int
|
4
|
Nazvanie
|
Varchar(25)
|
25
|
Общая длина строки: 29 байт
Число строк: ~ 4
Общий объем требуемой памяти: ~ 116 байт
Таблица 19. Расчет физической памяти для таблицы Абонемент
АУЭС(abonement_AUES)
Имя поля
|
Тип, длина
|
Длина(байт)
|
Id_abonementa
|
int
|
4
|
Telefon
|
int
|
4
|
Adres
|
Varchar (20)
|
20
|
Общая длина строки: 28 байт
Число строк: ~ 1
Общий объем требуемой памяти: ~ 28байт
Таким образом, из полученных данных можно рассчитать приблизительный
максимальный объем базы данных. Объем будет равен сумме объемов всех таблиц:
База данных = 1605+495+164+2028+549+444+198+528+174+116+28=6329 байт
Задание
места хранения БД. Загрузка базы данных
Исходя из данных, полученных во время физического проектирования можно
сделать вывод, что размер данных БД за первый год работы базы будет равен
498263 байт. На следующий год этот размер будет увеличен в 2 раза. Перед
запуском БД необходимо выставить необходимые размеры первоначальной БД и ее
роста.
Логическое
проектирование
Задача логического проектирования состоит в создании реляционных
табличных структур на языке DDL.
Создание
базы
create database Azim1PRIMARY
(NAME=q_data, FILENAME='D:\123\q_data.mdf', size=4,
maxsize=25,filegrowth=1 mb)ON
(NAME=q_log, FILENAME='D:\123\q_log.ldf', size=4,
maxsize=20,filegrowth=1 mb);Azim1
Схемы
отношений составленные на языке определения данных (DDL, Data Definition
Language)
Создание таблиц
create table fakultet(_fakulteta int Primary key,varchar(25)
NOT NULL);table specialnost (_specialnosti int Primary key,_fakulteta int NOT
NULL references fakultet(ID_fakulteta),varchar(25) NOT NULL);table
gruppa(_gruppy int Primary key,_specialnosti int NOT NULL references
specialnost(ID_specialnosti),varchar(25) NOT NULL);table chitatel(
#_chitatelskogo_bileta int primary key,_gruppy int not null
references gruppa(ID_gruppy),varchar(25) NOT NULL,varchar(20) not
null,varchar(25) not null);table abonement_AUES(_abonementa int primary key,int
not null,varchar(20) not null);table sotrudnik(_sotrudnika int primary
key,_abonementa int NOT NULL references
abonement_AUES(ID_abonementa),varchar(25) NOT NULL,varchar(20) not
null,varchar(25) not null,varchar(25) not null,int not null);table
formulyar(_formulyara int primary key references
chitatel(#_chitatelskogo_bileta),_sotrudnika int NOT NULL references
sotrudnik(ID_sotrudnika),varchar(25) not null,_vydachi date not null,_vozvrata
date not null);table knigi(int primary key,_abonementa int NOT NULL references
abonement_AUES(ID_abonementa),varchar(20) not null,_vypuska int not
null,varchar(25) not null,_ekzemplyarov int not null);table
uchebnyi_plan(_uchebnogo_plana int primary key,_specialnosti int NOT NULL
references specialnost(ID_specialnosti),varchar(25) not null);table
formirovanie_komplekta(_komplekta int primary key,int not null references
knigi(ISBN),_uchebnogo_plana int not null references uchebnyi_plan(ID_uchebnogo_plana),varchar(25)
not null);table predmet(_predmeta int primary key references
uchebnyi_plan(ID_uchebnogo_plana),varchar(25) not null);
Физическое проектирование
Для разработки базы данных была выбрана СУБД SQL Server 2008. SQL Server является всеобъемлющим,
интегрированным сквозным решением, которое наделяет пользователей организации
безопасной, надежной, и продуктивной платформой для обработки промышленной
информации и приложений, касающихся интеллектуальных ресурсов предприятия. SQL
Server 2008 предоставляет мощные, знакомые инструменты для профессионалов
информационных технологий так же, как и для работников информационной сферы,
уменьшая сложность создания, развёртывания, управления и использования данных
предприятия и аналитических приложений на платформах от мобильных устройств до
информационных систем предприятия. Благодаря исчерпывающему набору функций,
взаимодействию с существующими системами и автоматизации типовых задач, SQL
Server 2008 предоставляет полное решение в области хранения данных для
предприятий всех масштабов. В результате выполнения созданных скриптов, получим
реальную БД. Диаграмма физической модели данной базы данных
Рисунок 15. Диаграмма физической модели данной базы данных
Заполнение
созданной БД
Вновь созданная БД содержит все еще пустые табличные структуры. Для
заполнения базы данных был использован SQL скрипт написанный вручную:
into fakultet(ID_fakulteta,Nazvanie)
values
(1,'ÔÈÒ'),
(2,'ÝÝÔ'),
(3,'ÔÐÒÑ'),
(4,'ÒÝÔ');into
specialnost(ID_specialnosti,ID_fakulteta,Nazvanie)
values (1,1,'ÁÂÒ'),
(2,1,'ÁÈÑ'),
(3,2,'ÁÝÝ'),
(4,3,'ÁÐÝ'),
(5,4,'ÁÒÝ'),
(6,4,'ÁÀÓ');into
gruppa(ID_gruppy,ID_specialnosti,Nazvanie)
values (1,1,'ÁÂÒ-09-1'),
(2,1,'ÁÂÒ-09-2'),
(3,2,'ÁÈÑ-09-1'),
(4,2,'ÁÈÑ-09-2'),
(5,3,'ÁÝÝ-09-1'),
(6,3,'ÁÝÝ-09-2'),
(7,4,'ÁÐÝ-09-1'),
(8,4,'ÁÐÝ-09-2'),
(9,5,'ÁÒÝ-09-1'),
(10,5,'ÁÒÝ-09-2'),
(11,6,'ÁÀÓ-09-1'),
(12,6,'ÁÀÓ-09-2');into
chitatel(#_chitatelskogo_bileta,ID_gruppy,Familiya,Imya,Otchestvo)
values (1,1,'Òóðãàíîâ','Àçèì','Àðìàíîâè÷'),
(2,1,'Ðîãîçèíà','Íàòàëüÿ','Ñåãèçìóíäîâíà'),
(3,2,'Øàïîøíèêîâ','Ðîìàí','Àëåêñàíäðîâè÷'),
(4,2,'Ïåòðîâà','Ðàéõàí','Ñåðèêîâíà'),
(5,3,'Ñàãèíäûêîâ','Åëåóñèí','Íèãìåòîâè÷'),
(6,3,'Ñóëåéìåíîâà','Àñåì','Íóðëàíîâíà'),
(7,4,'Ìóíàñèïîâ','Äàíèñ','Æóðèäèíîâè÷'),
(8,4,'Êàëàøíèêîâ','Âëàäèìèð','Þðüåâè÷'),
(9,5,'Òÿí','Ðîìàí','Âàëåíòèíîâè÷'),
(10,5,'Áîðîâ','Ïîðê','Õýìîâè÷'),
(11,6,'Ñîëîìîíîâà','Ðèòà','Èêðîìåòäèíîâíà'),
(12,6,'Òàðáàåâ','Ñàíãàäæè','Àìàðõóîãëû'),
(13,7,'Ñòðåéçàíä','Áàðáàðà','Ôåäîðîâíà'),
(14,7,'Äîñ','Äæóíèîð','Ñàíòîñ'),
(15,8,'Ïàëüÿðåñ','Ðóñèìàð','Âàñèëüåâè÷'),
(16,8,'Õàðäè','Äåí','Áàðáîñîâè÷'),
(17,9,'Ñåíò','Äæîðäæ','Ïüåð'),
(18,9,'Ñèëüâà','Òèàãî','Àëâåø'),
(19,10,'Óçóìàêè','Íàðóòî','Âëàäèìèðîâè÷'),
(20,10,'Ãðåéñè','Ðîéñ','Ðåíàíîâè÷'),
(21,11,'Ñèëüâåðñòîóí','Àëèñèÿ','Ïåòðîâíà'),
(22,11,'Ìåéíàðä','Ãðåé','Ôðåíêîâè÷'),
(23,12,'Äæèãóðäà','Íèêèòà','Àëååâè÷'),
(24,12,'Îëîëîåâ','Îëîëîø','Îëîëîøåâè÷');into
abonement_AUES(ID_abonementa,Telefon,Adres)
values (1,'3457683','Áàéòóðñûíîâà
127');
insert into
sotrudnik(ID_sotrudnika,ID_abonementa,Familiya,Imya,Otchestvo,Doljnost,Telefon)
values (1,1,'Ñåìåíîâ','Àëåêñåé','Áàðìåíîâè÷','Çàâåäóþùèé','123456'),
(2,1,'Ñåìåíîâà','Êóðàëàé','Àðõèìåäîâíà','Áèáëèîòåêàðü','234542'),
(3,1,'Ãèòàðàñòîâíà','Êàòèïàø','Ñîâåòæàíîâíà','Óáîùèöà','654768');into
sotrudnik(ID_sotrudnika,ID_abonementa,Familiya,Imya,Otchestvo,Doljnost,Telefon)
values (4,1,'Áàðëîó','Òðîé','Áîðõîâè÷','Áèáëèîòåêàðü','123135'),
(5,1,'Âàëèõàíîâà','Åëåíà','Àðõàòîâíà','Áèáëèîòåêàðü','234242'),
(6,1,'Êóíàíáàåâ','Øîêàí','Áàóðæàíîâè÷','Áèáëèîòåêàðü','788768');into
formulyar(ID_formulyara,ID_sotrudnika,Rospis,Data_vydachi,Data_vozvrata) (1,2,'bjyvk','10/09/2011','11/05/2012'),
(2,4,'vvhgvg','10/09/2011','25/05/2012'),
(3,5,'adadc','01/09/2011','24/05/2012'),
(4,6,'vsgdc','03/09/2011','14/05/2012'),
(5,2,'aevavc','04/09/2011','14/06/2012'),
(6,4,'vearvr','07/09/2011','01/06/2012'),
(7,5,'adztbc','06/09/2011','21/05/2012'),
(8,6,'adsbrb','01/09/2011','27/05/2012'),
(9,2,'srtnsnc','03/09/2011','28/05/2012'),
(10,4,'gbettbc','05/09/2011','23/05/2012'),
(11,5,'arerec','11/09/2011','21/05/2012'),
(12,6,'agwtgwc','12/09/2011','15/05/2012'),
(13,2,'araaar','13/09/2011','15/06/2012'),
(14,4,'fthrtht','02/09/2011','17/05/2012'),
(15,5,'bstbst','04/09/2011','29/05/2012'),
(16,6,'dbgbfx','25/09/2011','14/06/2012'),
(17,2,'rgregr','19/09/2011','15/05/2012'),
(18,4,'btrsbc','18/09/2011','19/05/2012'),
(19,5,'ththhc','01/09/2011','21/05/2012');into knigi(ISBN,ID_abonementa,Nazvanie,Avtor,God_vypuska,Kolichestvo_ekzemplyarov)
values (12345,1,'Ëåêöèè
ïî
ôèçèêå','×åðòîâ
Ð.Ð.','1984','24'),
(12346,1,'Ïðèêëàäíàÿ
ìåõàíèêà','Äèíàñûëîâ
À.Ä.','1999','18'),
(12348,1,'Îñíîâû
ýêîíîì.òåîðèè','Æàðàñïàåâà
Ê.Ì','2007','24'),
(12349,1,'Îñíîâû
êðèïòîãðàôèè','Øàéõèí
Á.Ì.','2008','16'),
(12350,1,'Âûñøàÿ
ìàòåìàòèêà','Õàñåèíîâ
Ì.Á.','2007','23');into
uchebnyi_plan(ID_uchebnogo_plana,ID_specialnosti,Nazvanie) (11,1,'a'),
(12,2,'b'),
(13,3,'c'),
(14,4,'d'),
(15,5,'e'),
(16,6,'f');into predmet(ID_predmeta,Naimenovanie)
values (11,'Ôèçèêà'),
(12,'Ìåõàíèêà'),
(13,'ÏÁÄ'),
(14,'ÎÝÒ'),
(15,'ÎÈÁ'),
(16,'Âûñø.Ìàò');into
formirovanie_komplekta(ID_komplekta,ID_uchebnogo_plana,ISBN,Nazvanie) (1,11,12345,'#1'),
(2,12,12346,'#2'),
(3,13,12347,'#3'),
(4,14,12348,'#4'),
(5,15,12349,'#5'),
(6,16,12350,'#6'),
(7,11,12345,'#7'),
(8,12,12346,'#8'),
(9,13,12347,'#9'),
(10,14,12348,'#10'),
(11,15,12349,'#11'),
(12,16,12350,'#12');
Запросы
базы данных. Представления, процедуры и триггеры
Представления
Для запроса информации из БД были созданы специальные представления.
.Служит для вывода фамилии читателя и группы, в которой он учится
VIEW GrupChitatgruppa.Nazvanie, chitatel.Familiyagruppa,
chitatelgruppa.ID_gruppy=chitatel.#_chitatelskogo_bileta
2.Служит для вывода полной информации о читателе
view
FamChitchitatel.Familiya,chitatel.Imya,chitatel.Otchestvo,chitatel.#_chitatelskogo_biletachitatel
.Служит для вывода информации о сотрудниках и выданных ими формулярах
view
SotrFormulsotrudnik.Familiya,sotrudnik.Imya,sotrudnik.Doljnost,formulyar.Data_vydachi,formulyar.Data_vozvratasotrudnik,formulyarsotrudnik.ID_sotrudnika=formulyar.ID_formulyara
4.Служит для вывода информации о читателях и формулярах
view ChitFormchitatel.Familiya,
chitatel.Imya,chitatel.#_chitatelskogo_bileta,
formulyar.Data_vydachichitatel,formulyarchitatel.#_chitatelskogo_bileta=formulyar.ID_formulyara
.Служит для вывода информации о книгах
view KnigNazvEkzknigi.Nazvanie,knigi.Kolichestvo_ekzemplyarovknigi
.Служит для вывода информации о предметах и учебных планах
view PredUchpredmet.Naimenovanie,
uchebnyi_plan.Nazvaniepredmet,uchebnyi_planpredmet.ID_predmeta=uchebnyi_plan.ID_uchebnogo_plana
.Служит для вывода полной информации о сотрудниках
view sotrudnikisotrudnik.Familiya, sotrudnik.Imya, sotrudnik.Otchestvo,
sotrudnik.Doljnost,sotrudnik.Telefonsotrudnik
Процедуры
1.Создание записи о новой книгеprocedure new_book
( @ISBN int,
@ID_abonementa int,
@Nazvanie varchar(20),
@God_vypuska int,
@Avtor varchar(25),
@Kolichestvo_ekzemplyarov int)into
knigi(@ISBN,@ID_abonementa,@Nazvanie,@God_vypuska,@Avtor,@Kolichestvo_ekzempprocedure
spisok_knig
select distinct
knigi.ISBN,knigi.Nazvanie as
'Íàçâàíèå', knigi.Avtor
as 'Àâòîð',knigi.God_vypuska as
'Ãîä âûïóñêà',.Kolichestvo_ekzemplyarov
as 'Êîëè÷åñòâî
ýêçåìïëÿðîâ'
from knigi
2.Вывод списка сотрудников
procedure spisok_sotrudniki
select distinct
sotrudnik.Familiya,sotrudnik.Imya,sotrudnik.Otchestvo as
'ÔÈÎ', sotrudnik.Doljnost as
'Äîëæíîñòü',sotrudnik.Telefon
as 'Òåëåôîí'
from sotrudnik
.Вывод списка читателей
procedure spisok_chitatelidistinct
chitatel.Familiya,chitatel.Imya,chitatel.Otchestvo chitatel
.Вывод списка книг через автора
procedure avtor_knig
(@Avtor varchar(25))
as select distinct knigi.Nazvanie
as 'Íàçâàíèå',knigi.Avtor
as 'Àâòîð', .Kolichestvo_ekzemplyarov as
'Êîëè÷åñòâî
ýêçåìïëÿðîâ'
from knigi
exec avtor_knig
'×åðòîâ Ð.Ð.'
.Добавление сотрудника
procedure dobavlenie_sotrudnika
( @ID_sotrudnika int,
@ID_abonementa int,
@Familiya varchar(25),
@Imya varchar(20),
@Otchestvo varchar(25),
@Doljnost varchar(25),
@Telefon int)into
sotrudnik(@ID_sotrudnika,@ID_abonementa,@Familiya,@Imya,@Otchestvo,@Doljnost,@Telefon)
.Добавление читателя
procedure dobavlenie_chitatelya
( @#_chitatelskogo_bileta int,
@ID_gruppy int,
@Familiya varchar(25),
@Imya varchar(20),
@Otchestvo varchar(25))into
chitatel(@#_chitatelskogo_bileta,@ID_gruppy,@Familiya,@Imya,@Otchestvo)
.Добавление группы
procedure dobavlenie_gruppy
( @ID_gruppy int,
@ID_specialnosti int,into gruppa(@ID_gruppy,@ID_specialnosti,@Nazvanie)
Функции
Подсчет дней между датой выдачи и датой возврата комплекта.Function data
(@d int)int@data date;@data1 date;@a int;distinct @data =
Data_vydachiformulyarformulyar.ID_formulyara=@dDistinct @data1 =
Data_vozvrataformulyarformulyar.ID_formulyara=@d@a =(select DATEDIFF (DD,
@data,@data1))@adbo.data (4)
Триггеры
.Исключение дубликатов в таблице сотрудники
trigger unique_sotrsotrudnikinsert, update@ID_sotrudnika
int;@ID_abonementa int;@Familiya varchar(25);@Imya varchar(20);@Otchestvo
varchar(25);@Doljnost varchar(25);@Telefon int;@count
int;@ID_sotrudnika=ID_sotrudnika,@ID_abonementa=ID_abonementa,@Familiya=Familiya,@Imya=Imya,@Otchestvo=Otchestvo,
@Doljnost=Doljnost,@Telefon=Telefoninserted@count=COUNT(*)
sotrudnik@ID_sotrudnika=ID_sotrudnika @ID_sotrudnika=ID_sotrudnika
@ID_abonementa=ID_abonementa@Familiya=Familiya@Imya=Imya
@Otchestvo=Otchestvo@Doljnost=Doljnost@Telefon=Telefon@count>1TRAN
RAISERROR
('Íåëüçÿ, óæå
åñòü', 16,10)
END
2.Исключение дубликатов в таблице читатели
trigger unique_chitchitatelinsert, update@#_chitatelskogo_bileta
int;@ID_gruppy int;@Familiya varchar(25);@Imya varchar(20);@Otchestvo
varchar(25);@count
int;@#_chitatelskogo_bileta=@#_chitatelskogo_bileta,@ID_gruppy=ID_gruppy,@Familiya=Familiya,@Imya=Imya,@Otchestvo=Otchestvoinserted@count=COUNT(*)
chitatel@#_chitatelskogo_bileta=@#_chitatelskogo_bileta@ID_gruppy=ID_gruppy
@Familiya=Familiya@Imya=Imya @Otchestvo=Otchestvo@count>1TRAN
RAISERROR
('Íåëüçÿ, óæå
åñòü òàêîé
÷èòàòåëü', 16,10)
3.Исключение введения даты выдачи позже текущей
TRIGGER Data_raznicaformulyarupdate,insert@Data_vydachi
date@Data_vozvrata
date@Data_vydachi=Data_vydachiinserted@Data_vydachi>GETDATE()tran
raiserror('Äàòà
âûäà÷è íå
ìîæåò áûòü
ïîçæå
òåêóùåé
äàòû',16,10)
end
.Исключение дубликатов в таблице книги
trigger unique_up_inknigiinsert, update@ISBN int;@Nazvanie
varchar(20);@God_vypuska int;@Avtor varchar(25);@Kolichestvo_ekzemplyarov
int;@count
int;@ISBN=ISBN,@Nazvanie=Nazvanie,@God_vypuska=God_vypuska,@Avtor=Avtor,@Kolichestvo_ekzemplyarov=Kolichestvo_ekzemplyarov
inserted@count=COUNT(*) knigi @ISBN=ISBN @Nazvanie=Nazvanie
@God_vypuska=God_vypuska@Avtor=Avtor@Kolichestvo_ekzemplyarov=Kolichestvo_ekzemplyarov
@count>1TRAN
RAISERROR
('Òàêàÿ êíèãà
óæå
ñóùåñòâóåò',
16,10)
Меры по
обеспечению безопасности
Одной из наиболее важных частей в БД является разработка прав доступа к
ней, т.к. нужна защита от несанкционированного доступа и защита от доступа. Для
защиты от сбоев разрабатывается стратегия резервного копирования. Для защиты от
несанкционированного доступа каждому пользователю доступ к данным
предоставляется только в соответствии с его правами доступа. Создание учетной
записи admin
sp_addlogin 'admin', 'admin','Azim';_adduser 'admin';
Создание учетной записи user
_addlogin 'user', 'user','Azim';
Создание пользователя user
_adduser 'user';
Создание роли administrators
_addrole 'administrators';
Добавление пользователя admin в роль administrators
_addrolemember 'administrators', 'admin';
Установление прав для роли administrators
select, insert, update, delete to admin;
Создание роли oper_reg
_addrole 'oper_reg';
Добавление пользователя user в роль oper_reg
sp_addrolemember 'oper_reg','user';
Установление прав для роли oper_reg
select, update on dbo.ChitForm to oper_reg;select, update on dbo.FamChit
to oper_reg;select,update on dbo.FormirKNIG to oper_reg;select, update on
dbo.GrupChitat to oper_reg;select, update on dbo.KnigNazvEkz to
oper_reg;select, update on dbo.PredUch to oper_reg;select, update on
dbo.SotrFormul to oper_reg;select, update on dbo.sotrudniki to oper_reg;
Работа с
приложением
Данное приложение разработано с учетом интуитивно понятного интерфейса, а
так же с наиболее удобным функционалом.
Приложение дает право директору изменять данные в таблицах, добавлять и
удалять строки из всех таблиц. В случае неверного пароля или логина выходит
сообщение. Запускаем приложение
Перед нами появляется форма авторизации, необходимо ввести свой пароль и
пароль
Выбираем логин(например admin) и авторизуемся
Открывается форма с множеством вкладок
На каждой вкладке мы можем добавить запись
Теперь авторизуемся по логином user
Мы можем только просматривать данные
Заключение
В данной курсовой работе была спроектирована база данных «Абонемент
библиотеки АУЭС». При проектировании работы, были учтены все основные функции
данной базы данных. Данная база данных проектировалась на SQL Server 2008, так
это наиболее удовлетворяющая по функциональным возможностям среда
проектирования. В данной базе данных учтены права пользователей, и доступ к
информации ограничен. Так, например, изменять, добавлять и удалять информацию
из таблиц может только сотрудник. В то время как пользователь может только
просматривать информацию.
База данных содержит множество триггеров и хранимых процедур и функций,
которые описаны выше, это позволяет ускорить процесс обработки информации, а
также упростить использование программы на большом количестве компьютеров.
Система предполагает сопровождение программы на долгий период, так как создана
с учетом вносимых желаемых изменений заказчика.
Список
используемой литературы
. Сатимова
Е.Г. Проектирование баз данных. Методические указания к выполнению лабораторных
работ (для студентов всех специальностей). - Алматы: АИЭС, 2009
2. MICROSOFT SQL SERVER 2005. Реализация и обслуживание. Учебный курс Microsoft/ Пер. с английского - М. «Русская
редакция», Спб.: «Питер», 2007.
.Плю Р.,
Стефенс Р., Райан К. Освой самостоятельно SQL за 24 часа. - М.: Издательский
дом «Вильямс», 2000
. Питер Роб,
Карлос Коронел Системы баз данных: проектирование, реализация и управление, 5-е
издание, - BHV Санкт-Петербург, 2004 .