Информационная система "Абонемент библиотеки"
Концептуальное проектирование базы данных. Разработка и построение подробной ER-диаграммы на основании бизнес-правил. Составление реляционных отношений. Схемы отношений, составленные на языке определения данных. Проектирование и обоснование выбора СУБД.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.04.2013 |
Размер файла | 3,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Курсовая работа
Дисциплина Проектирование баз данных
На тему: Информационная система «Абонемент библиотеки»
Задание
Основная деятельность - выдача комплектов книг учащимся. Абонемент библиотеки формирует комплекты книг в соответствии с учебным планом, выдает книги учащимся и ведет учет о выданных книгах.
База данных предназначена для получения следующей информации:
· Списки учащихся определенных групп.
· Списки сотрудников, и прикрепленных к ним формуляров.
· Списки читателей, получивших и не получивших книги.
· Данные о имеющихся книгах в абонементе.
Анализ предметной области
Целью представленного нами объекта будет автоматизация деятельности абонемента библиотеки АУЭС.
Сведения об этапе начальной разработки в основном получаются из опроса основных и конечных пользователей. Эти люди являются основными клиентами БД и их необходимо идентифицировать с особой тщательностью. Основными пользователями приложения Абонемент библиотеки АУЭС, являются:
§ Сотрудники библиотеки, в чьи обязанности входит вести учет о выданных комплектах книг и их получателей и следить за всеми изменениями в учебном плане;
§ Пользователи библиотеки, которые могут просмотреть всю нужную им информацию о книгах и сотрудниках.
Задачи Изостудии
Изостудия расположена в здании Алматинского Университета Энергетики и Связи, ее могут посещать только студенты данного ВУЗа. Здесь они получают необходимую им в семестре литературу.
Организационная структура
Всю основную работу выполняют библиотекари. Они обслуживают студентов(читателей), заводя на них формуляры, выдавая им комплекты книг и ведя учет о каждом читателе.
Описание операций
Абонемент осуществляет несколько видов операций:
ь ведение информации о читателях и сотрудниках
ь ведение контроля выдачи комплектов книг
ь формировка комплектов книг соответственно учебному плану
ь ведение информации о читателях и сотрудниках
ь регистрация новых читателей и сотрудников, заведение на них формуляров.
ь ведение контроля выдачи комплектов книг
ь учет выданных комплектов книг студентам.
ь формировка комплектов книг соответственно учебному плану
ь составление содержания комплектов книг
Проблемы и ограничения
ь неавтоматизированная система не отвечает современным требованиями
ь отсутствие компьютеризованной системы регистрации читателей затрудняет управление информацией.
ь Сотрудники тратят слишком много времени на обработку данных вручную
Система ручной обработки данных весьма не удобна, уходит много времени.
Выявив проблемы, мы пришли к выводу, что имеющаяся ручная система учета, не отвечает текущим требованиям. Время, затрачиваемое на работу с документами постоянно растет. Кроме того, упорядочивание информации требует слишком много времени. Проблемы решаются в рамках двух наборов ограничений: ограничения деятельности, определяемые политикой предприятия, и экономические ограничения, определяемые финансами предприятия.
Хорошо спроектированная база данных должна решить большинство проблем изостудии.
Ограничение по времени
Заказчик предлагает, чтобы новая система была введена в строй в течении трех месяцев.
Аппаратное и программное обеспечение
Система должна функционировать на имеющейся в библиотеке компьютерах.
Предназначение системы
Для изостудии определены два направления решаемых задач общие и специфичные.
К общим задачам относятся
1. Повышение эффективности и , тем самым, увеличение пропускной способности и расширение сферы деятельности абонемента библиотеки.
2. Обеспечение необходимо информацией для планирования, управления и безопасности.
Сфера действия и границы
Система будет ограничена таким образом, чтобы она могла обслужить следующие сферы деятельности
ь ведение информации о сотрудниках и читателях
ь ведение личных формуляров
ь ведение учета имеющихся книг
Так как абонемент библиотеки небольшой и решает относительно небольшой круг задач, то сферу деятельности на модули подразделять не будем.
1.2 Этап проектирования базы данных
Концептуальный проект
Источники информации и пользователи
Для абонемента библиотеки мы выявили следующие источники информации:
- сотрудники
-читатели
-используемые в настоящее время компьютерные формы документов, папки с файлами и отчетные формы.
-сотрудник (который и является администратором) управляет системой, вводит данные в БД, выполняет запросы, обновляет БД и определяет требования к отчетности.
Необходимая информация:
требования пользователя
Система должна быть проста в использовании. Интерфейс основного меню должен быть очень удобным.
Система должна обеспечивать безопасность. Это осуществляется с помощью паролей и прав доступа.
Система должна быть полностью интегрирована, т. е. должны быть исключены избыточность данных и избыточные обновления. Система должна гарантировать целостность БД.
Таким образом выделим сущности, определенные на основе начального этапа разработки:
1)Читатели
2)Сотрудники
3)Книги
4)Предметы
5)Группы
6)Специальность
7)Факультет
UML диаграммы
Для моделирования статических объектов в объектно-ориентированной концепции UML существует 12 диаграмм, но так как большинство объектов БД “Изостудия” являются статическими, то используем самые основные:
1.Диаграмма компонентов.
2.Диаграмма прецедентов
3.Диаграмма классов.
4.Диаграмма развертывания.
Диаграмма компонентов
Диаграмма компонентов показывает набор компонентов и отношений между ними.
Компонент - это физически заменяемая часть системы, которая имеет набор интерфейсов и обеспечивает их реализацию.
В моем случае исполняемый модуль 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 |
Внешний ключl |
|
Фамилия |
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 Azim1
ON PRIMARY
(NAME=q_data, FILENAME='D:\123\q_data.mdf', size=4, maxsize=25,filegrowth=1 mb)
LOG ON
(NAME=q_log, FILENAME='D:\123\q_log.ldf', size=4, maxsize=20,filegrowth=1 mb);
use Azim1
Схемы отношений составленные на языке определения данных (DDL, Data Definition Language)
Создание таблиц
create table fakultet(
ID_fakulteta int Primary key,
Nazvanie varchar(25) NOT NULL);
create table specialnost (
ID_specialnosti int Primary key,
ID_fakulteta int NOT NULL references fakultet(ID_fakulteta),
Nazvanie varchar(25) NOT NULL);
create table gruppa(
ID_gruppy int Primary key,
ID_specialnosti int NOT NULL references specialnost(ID_specialnosti),
Nazvanie varchar(25) NOT NULL);
create table chitatel(
#_chitatelskogo_bileta int primary key,
ID_gruppy int not null references gruppa(ID_gruppy),
Familiya varchar(25) NOT NULL,
Imya varchar(20) not null,
Otchestvo varchar(25) not null);
Create table abonement_AUES(
ID_abonementa int primary key,
Telefon int not null,
Adres varchar(20) not null);
Create table sotrudnik(
ID_sotrudnika int primary key,
ID_abonementa int NOT NULL references abonement_AUES(ID_abonementa),
Familiya varchar(25) NOT NULL,
Imya varchar(20) not null,
Otchestvo varchar(25) not null,
Doljnost varchar(25) not null,
Telefon int not null);
create table formulyar(
ID_formulyara int primary key references chitatel(#_chitatelskogo_bileta),
ID_sotrudnika int NOT NULL references sotrudnik(ID_sotrudnika),
Rospis varchar(25) not null,
Data_vydachi date not null,
Data_vozvrata date not null);
create table knigi(
ISBN int primary key,
ID_abonementa int NOT NULL references abonement_AUES(ID_abonementa),
Nazvanie varchar(20) not null,
God_vypuska int not null,
Avtor varchar(25) not null,
Kolichestvo_ekzemplyarov int not null);
create table uchebnyi_plan(
ID_uchebnogo_plana int primary key,
ID_specialnosti int NOT NULL references specialnost(ID_specialnosti),
Nazvanie varchar(25) not null);
create table formirovanie_komplekta(
ID_komplekta int primary key,
ISBN int not null references knigi(ISBN),
ID_uchebnogo_plana int not null references uchebnyi_plan(ID_uchebnogo_plana),
Nazvanie varchar(25) not null);
create table predmet(
ID_predmeta int primary key references uchebnyi_plan(ID_uchebnogo_plana),
Naimenovanie varchar(25) not null);
Физическое проектирование
Для разработки базы данных была выбрана СУБД SQL Server 2008. SQL Server является всеобъемлющим, интегрированным сквозным решением, которое наделяет пользователей организации безопасной, надежной, и продуктивной платформой для обработки промышленной информации и приложений, касающихся интеллектуальных ресурсов предприятия. SQL Server 2008 предоставляет мощные, знакомые инструменты для профессионалов информационных технологий так же, как и для работников информационной сферы, уменьшая сложность создания, развёртывания, управления и использования данных предприятия и аналитических приложений на платформах от мобильных устройств до информационных систем предприятия. Благодаря исчерпывающему набору функций, взаимодействию с существующими системами и автоматизации типовых задач, SQL Server 2008 предоставляет полное решение в области хранения данных для предприятий всех масштабов. В результате выполнения созданных скриптов, получим реальную БД. Диаграмма физической модели данной базы данных
Рисунок 15. Диаграмма физической модели данной базы данных
Заполнение созданной БД
Вновь созданная БД содержит все еще пустые табличные структуры. Для заполнения базы данных был использован SQL скрипт написанный вручную:
insert into fakultet(ID_fakulteta,Nazvanie)
values (1,'ФИТ'),
(2,'ЭЭФ'),
(3,'ФРТС'),
(4,'ТЭФ');
insert into specialnost(ID_specialnosti,ID_fakulteta,Nazvanie)
values (1,1,'БВТ'),
(2,1,'БИС'),
(3,2,'БЭЭ'),
(4,3,'БРЭ'),
(5,4,'БТЭ'),
(6,4,'БАУ');
insert 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');
insert 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,'Ололоев','Ололош','Ололошевич');
insert 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');
insert into sotrudnik(ID_sotrudnika,ID_abonementa,Familiya,Imya,Otchestvo,Doljnost,Telefon)
values (4,1,'Барлоу','Трой','Борхович','Библиотекарь','123135'),
(5,1,'Валиханова','Елена','Архатовна','Библиотекарь','234242'),
(6,1,'Кунанбаев','Шокан','Бауржанович','Библиотекарь','788768');
Insert into formulyar(ID_formulyara,ID_sotrudnika,Rospis,Data_vydachi,Data_vozvrata)
values (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');
insert into knigi(ISBN,ID_abonementa,Nazvanie,Avtor,God_vypuska,Kolichestvo_ekzemplyarov)
values (12345,1,'Лекции по физике','Чертов Р.Р.','1984','24'),
(12346,1,'Прикладная механика','Динасылов А.Д.','1999','18'),
(12347,1,'SQL для чайников','Кен Хендерсон','2005','20'),
(12348,1,'Основы эконом.теории','Жараспаева К.М','2007','24'),
(12349,1,'Основы криптографии','Шайхин Б.М.','2008','16'),
(12350,1,'Высшая математика','Хасеинов М.Б.','2007','23');
insert into uchebnyi_plan(ID_uchebnogo_plana,ID_specialnosti,Nazvanie)
values (11,1,'a'),
(12,2,'b'),
(13,3,'c'),
(14,4,'d'),
(15,5,'e'),
(16,6,'f');
insert into predmet(ID_predmeta,Naimenovanie)
values (11,'Физика'),
(12,'Механика'),
(13,'ПБД'),
(14,'ОЭТ'),
(15,'ОИБ'),
(16,'Высш.Мат');
insert into formirovanie_komplekta(ID_komplekta,ID_uchebnogo_plana,ISBN,Nazvanie)
values (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');
Запросы базы данных. Представления, процедуры и триггеры
Представления
Для запроса информации из БД были созданы специальные представления.
1.Служит для вывода фамилии читателя и группы, в которой он учится
CREATE VIEW GrupChitat
AS
SELECT gruppa.Nazvanie, chitatel.Familiya
FROM gruppa, chitatel
WHERE gruppa.ID_gruppy=chitatel.#_chitatelskogo_bileta
2.Служит для вывода полной информации о читателе
create view FamChit
as
select chitatel.Familiya,chitatel.Imya,chitatel.Otchestvo,chitatel.#_chitatelskogo_bileta
from chitatel
3.Служит для вывода информации о сотрудниках и выданных ими формулярах
create view SotrFormul
as
select sotrudnik.Familiya,sotrudnik.Imya,sotrudnik.Doljnost,formulyar.Data_vydachi,formulyar.Data_vozvrata
from sotrudnik,formulyar
where sotrudnik.ID_sotrudnika=formulyar.ID_formulyara
4.Служит для вывода информации о читателях и формулярах
create view ChitForm
as
select chitatel.Familiya, chitatel.Imya,chitatel.#_chitatelskogo_bileta, formulyar.Data_vydachi
from chitatel,formulyar
where chitatel.#_chitatelskogo_bileta=formulyar.ID_formulyara
5.Служит для вывода информации о книгах
create view KnigNazvEkz
as
select knigi.Nazvanie,knigi.Kolichestvo_ekzemplyarov
from knigi
6.Служит для вывода информации о предметах и учебных планах
create view PredUch
as
select predmet.Naimenovanie, uchebnyi_plan.Nazvanie
from predmet,uchebnyi_plan
where predmet.ID_predmeta=uchebnyi_plan.ID_uchebnogo_plana
7.Служит для вывода полной информации о сотрудниках
create view sotrudniki
as
select sotrudnik.Familiya, sotrudnik.Imya, sotrudnik.Otchestvo, sotrudnik.Doljnost,sotrudnik.Telefon
from sotrudnik
Процедуры
1.Создание записи о новой книге
create procedure new_book
( @ISBN int,
@ID_abonementa int,
@Nazvanie varchar(20),
@God_vypuska int,
@Avtor varchar(25),
@Kolichestvo_ekzemplyarov int)
as
insert into knigi
values(@ISBN,@ID_abonementa,@Nazvanie,@God_vypuska,@Avtor,@Kolichestvo_ekzemp
create procedure spisok_knig
as
select distinct knigi.ISBN,knigi.Nazvanie as 'Название', knigi.Avtor as 'Автор',knigi.God_vypuska as 'Год выпуска',
knigi.Kolichestvo_ekzemplyarov as 'Количество экземпляров'
from knigi
2.Вывод списка сотрудников
create procedure spisok_sotrudniki
as
select distinct sotrudnik.Familiya,sotrudnik.Imya,sotrudnik.Otchestvo as 'ФИО', sotrudnik.Doljnost as 'Должность',sotrudnik.Telefon as 'Телефон'
from sotrudnik
3.Вывод списка читателей
create procedure spisok_chitateli
as
select distinct chitatel.Familiya,chitatel.Imya,chitatel.Otchestvo
from chitatel
4.Вывод списка книг через автора
create procedure avtor_knig
(@Avtor varchar(25))
as select distinct knigi.Nazvanie as 'Название',knigi.Avtor as 'Автор',
knigi.Kolichestvo_ekzemplyarov as 'Количество экземпляров'
from knigi
exec avtor_knig 'Чертов Р.Р.'
5.Добавление сотрудника
create procedure dobavlenie_sotrudnika
( @ID_sotrudnika int,
@ID_abonementa int,
@Familiya varchar(25),
@Imya varchar(20),
@Otchestvo varchar(25),
@Doljnost varchar(25),
@Telefon int)
as
insert into sotrudnik
values(@ID_sotrudnika,@ID_abonementa,@Familiya,@Imya,@Otchestvo,@Doljnost,@Telefon)
6.Добавление читателя
create procedure dobavlenie_chitatelya
( @#_chitatelskogo_bileta int,
@ID_gruppy int,
@Familiya varchar(25),
@Imya varchar(20),
@Otchestvo varchar(25))
as
insert into chitatel
values(@#_chitatelskogo_bileta,@ID_gruppy,@Familiya,@Imya,@Otchestvo)
7.Добавление группы
create procedure dobavlenie_gruppy
( @ID_gruppy int,
@ID_specialnosti int,
as
insert into gruppa
values(@ID_gruppy,@ID_specialnosti,@Nazvanie)
Функции
Подсчет дней между датой выдачи и датой возврата комплекта.
CREATE Function data (@d int)
RETURNS int
AS
BEGIN
declare @data date;
declare @data1 date;
declare @a int;
select distinct @data = Data_vydachi
From formulyar
WHERE formulyar.ID_formulyara=@d
select Distinct @data1 = Data_vozvrata
From formulyar
WHERE formulyar.ID_formulyara=@d
Set @a =(select DATEDIFF (DD, @data,@data1))
return @a
end
select dbo.data (4)
Триггеры
1.Исключение дубликатов в таблице сотрудники
create trigger unique_sotr
on sotrudnik
for insert, update
as
declare @ID_sotrudnika int;
declare @ID_abonementa int;
declare @Familiya varchar(25);
declare @Imya varchar(20);
declare @Otchestvo varchar(25);
declare @Doljnost varchar(25);
declare @Telefon int;
declare @count int;
select @ID_sotrudnika=ID_sotrudnika,@ID_abonementa=ID_abonementa,@Familiya=Familiya,@Imya=Imya,@Otchestvo=Otchestvo,
@Doljnost=Doljnost,@Telefon=Telefon
from inserted
select @count=COUNT(*)
from sotrudnik
where @ID_sotrudnika=ID_sotrudnika
and @ID_sotrudnika=ID_sotrudnika
and @ID_abonementa=ID_abonementa
and @Familiya=Familiya
and @Imya=Imya
and @Otchestvo=Otchestvo
and @Doljnost=Doljnost
and @Telefon=Telefon
if @count>1
begin
ROLLBACK TRAN
RAISERROR ('Нельзя, уже есть', 16,10)
END
2.Исключение дубликатов в таблице читатели
create trigger unique_chit
on chitatel
for insert, update
as
declare @#_chitatelskogo_bileta int;
declare @ID_gruppy int;
declare @Familiya varchar(25);
declare @Imya varchar(20);
declare @Otchestvo varchar(25);
declare @count int;
select @#_chitatelskogo_bileta=@#_chitatelskogo_bileta,@ID_gruppy=ID_gruppy,@Familiya=Familiya,@Imya=Imya,@Otchestvo=Otchestvo
from inserted
select @count=COUNT(*)
from chitatel
where @#_chitatelskogo_bileta=@#_chitatelskogo_bileta
and @ID_gruppy=ID_gruppy
and @Familiya=Familiya
and @Imya=Imya
and @Otchestvo=Otchestvo
if @count>1
begin
ROLLBACK TRAN
RAISERROR ('Нельзя, уже есть такой читатель', 16,10)
END
3.Исключение введения даты выдачи позже текущей
CREATE TRIGGER Data_raznica
ON formulyar
for update,insert
as
declare @Data_vydachi date
declare @Data_vozvrata date
select @Data_vydachi=Data_vydachi
from inserted
if @Data_vydachi>GETDATE()
begin
rollback tran
raiserror('Дата выдачи не может быть позже текущей даты',16,10)
end
4.Исключение дубликатов в таблице книги
create trigger unique_up_in
on knigi
for insert, update
as
declare @ISBN int;
declare @Nazvanie varchar(20);
declare @God_vypuska int;
declare @Avtor varchar(25);
declare @Kolichestvo_ekzemplyarov int;
declare @count int;
select @ISBN=ISBN,@Nazvanie=Nazvanie,@God_vypuska=God_vypuska,@Avtor=Avtor,@Kolichestvo_ekzemplyarov=Kolichestvo_ekzemplyarov
from inserted
select @count=COUNT(*)
from knigi
where @ISBN=ISBN
and @Nazvanie=Nazvanie
and @God_vypuska=God_vypuska
and @Avtor=Avtor
and @Kolichestvo_ekzemplyarov=Kolichestvo_ekzemplyarov
if @count>1
begin
ROLLBACK TRAN
RAISERROR ('Такая книга уже существует', 16,10)
END
Меры по обеспечению безопасности
Одной из наиболее важных частей в БД является разработка прав доступа к ней, т.к. нужна защита от несанкционированного доступа и защита от доступа. Для защиты от сбоев разрабатывается стратегия резервного копирования. Для защиты от несанкционированного доступа каждому пользователю доступ к данным предоставляется только в соответствии с его правами доступа. Создание учетной записи admin
sp_addlogin 'admin', 'admin','Azim';
sp_adduser 'admin';
Создание учетной записи user
sp_addlogin 'user', 'user','Azim';
Создание пользователя user
sp_adduser 'user';
Создание роли administrators
sp_addrole 'administrators';
Добавление пользователя admin в роль administrators
sp_addrolemember 'administrators', 'admin';
Установление прав для роли administrators
grant select, insert, update, delete to admin;
Создание роли oper_reg
sp_addrole 'oper_reg';
Добавление пользователя user в роль oper_reg
sp_addrolemember 'oper_reg','user';
Установление прав для роли oper_reg
grant select, update on dbo.ChitForm to oper_reg;
go
grant select, update on dbo.FamChit to oper_reg;
go
grant select,update on dbo.FormirKNIG to oper_reg;
go
grant select, update on dbo.GrupChitat to oper_reg;
go
grant select, update on dbo.KnigNazvEkz to oper_reg;
go
grant select, update on dbo.PredUch to oper_reg;
go
grant select, update on dbo.SotrFormul to oper_reg;
go
grant select, update on dbo.sotrudniki to oper_reg;
Работа с приложением
Данное приложение разработано с учетом интуитивно понятного интерфейса, а так же с наиболее удобным функционалом.
Приложение дает право директору изменять данные в таблицах, добавлять и удалять строки из всех таблиц. В случае неверного пароля или логина выходит сообщение. Запускаем приложение
Перед нами появляется форма авторизации, необходимо ввести свой пароль и пароль
Выбираем логин(например admin) и авторизуемся
Открывается форма с множеством вкладок
На каждой вкладке мы можем добавить запись
Теперь авторизуемся по логином user
Мы можем только просматривать данные
Заключение
В данной курсовой работе была спроектирована база данных «Абонемент библиотеки АУЭС». При проектировании работы, были учтены все основные функции данной базы данных. Данная база данных проектировалась на SQL Server 2008, так это наиболее удовлетворяющая по функциональным возможностям среда проектирования. В данной базе данных учтены права пользователей, и доступ к информации ограничен. Так, например, изменять, добавлять и удалять информацию из таблиц может только сотрудник. В то время как пользователь может только просматривать информацию.
База данных содержит множество триггеров и хранимых процедур и функций, которые описаны выше, это позволяет ускорить процесс обработки информации, а также упростить использование программы на большом количестве компьютеров. Система предполагает сопровождение программы на долгий период, так как создана с учетом вносимых желаемых изменений заказчика.
Список используемой литературы
1. Сатимова Е.Г. Проектирование баз данных. Методические указания к выполнению лабораторных работ (для студентов всех специальностей). - Алматы: АИЭС, 2009
2. MICROSOFT SQL SERVER 2005. Реализация и обслуживание. Учебный курс Microsoft/ Пер. с английского - М. «Русская редакция», Спб.: «Питер», 2007.
3.Плю Р., Стефенс Р., Райан К. Освой самостоятельно SQL за 24 часа. - М.: Издательский дом «Вильямс», 2000
4. Питер Роб, Карлос Коронел Системы баз данных: проектирование, реализация и управление, 5-е издание, - BHV Санкт-Петербург, 2004 .
Размещено на Allbest.ru
Подобные документы
Концептуальное и инфологическое проектирование базы данных в системе управления базами данных Microsoft Access. Физическое проектирование базы данных "Магазин спорттоваров". Тестирование и отладка базы данных, составление руководства пользователя.
курсовая работа [6,7 M], добавлен 22.11.2022Проектирование информационной системы. Построение диаграммы потоков данных. Описание порядка построения DFD-диаграммы. Создание базы данных с помощью SQL сервера. Описание основных бизнес-правил и их физической реализации. Заполнение таблиц данными.
курсовая работа [1,5 M], добавлен 13.12.2011Проектирование информационной системы бронирования билетов кассы аэропорта. Анализ информационных задач и круга пользователей системы. Составление реляционных отношений. Дополнительные ограничения целостности. Физическое проектирование базы данных.
курсовая работа [949,1 K], добавлен 28.03.2011Принципы построения СУБД, их достоинства. Архитектура распределенной информационной системы. Разработка интернет-магазина рынка книг: построение физической модели данных на языке SQL, проектирование схемы базы данных с использованием веб-интерфейса.
курсовая работа [2,3 M], добавлен 01.11.2011Разработка базы данных для хранения сведений и расчета заработной платы работников ОАО "Печатный двор". Построение ER-диаграммы на основании информации о персонале. Построение нормальных форм отношений. Разработка запросов и пользовательского интерфейса.
курсовая работа [1,4 M], добавлен 23.12.2010Разработка базы данных для учета использования книг сотрудниками библиотеки, которые обслуживают студентов в университете. Описание бизнес-логики. Соотношение между сущностями. Формулировка бизнес правил. Работа с базой данных через MS Excel 2007.
курсовая работа [928,2 K], добавлен 15.01.2013Инфологическая модель предметной области. Схемы простых объектов и их свойства. Построение реляционных отношений на основе инфологической модели базы данных. Сетевая и иерархическая даталогическая модели БД. Структура таблиц, реализованных в СУБД Oracle.
курсовая работа [1,0 M], добавлен 10.06.2014Проектирование и создание информационной базы данных для управления предприятием "Завод металлоизделий". Данные для базы, предметная область, атрибуты объектов базы данных. Объектные отношения, их ключи, связи объектов и отношений базы данных предприятия.
реферат [26,9 K], добавлен 04.12.2009Обследование предметной области. Концептуальное проектирование сущностей и атрибутов. Инфологическое проектирование базы данных, ее реляционная модель. Разработка представлений для отображения результатов выборки. Экономическое обоснование результатов.
курсовая работа [717,7 K], добавлен 23.06.2011Учет книжного фонда библиотеки. Разработка концептуальной модели данных. Составление спецификации атрибутов и связей, генерация в системе PowerDesigner физической модели по концептуальной модели. Создание скрипта создания базы данных для СУБД FireBird.
контрольная работа [784,2 K], добавлен 10.04.2014