Федеральное государственное бюджетное образовательное учреждение высшего образования «Чувашский государственный университет имени И. Н. Ульянова»
Факультет информатики и вычислительной техники
Кафедра вычислительной техники
Отчет по курсовой работе
по дисциплине Базы данных
на тему «Разработка платформы для автоматизации заполнения протоколов СНО»
Работу выполнил: студент группы ИВТ-41-15 Агниашвили Д.В.
Работу принял: Ржавин В.В.
г. Чебоксары, 2017
СОДЕРЖАНИЕ
Бизнес правила. 3
Пользователи данной базы данных: 3
Состав базы данных. 3
Типы связей. 5
Концептуальное проектирование. 5
Метод ER-диаграмм. 6
Логическое проектирование. 7
Создание запросов. 8
Описание запросов. 8
Виды запросов. 11
Разработка форм.. 12
Описание форм.. 12
Разработка отчетов. 14
Многомерное представление данных. 15
Реализация. 17
Интеграция базы данных MySQL с WORD.. 20
Интеграция с VKAPI. 31
Описание документов для импорта и экспорта данных. 31
Вывод. 32
Список использованной литературы. 33
|
|
Тексты платформы.. 34
Бизнес правила.
1. Запрещается давать больше призовых мест, чем 40% от общего числа участников.
2. Запрещаетсяизменять данные людям, которые не получили права редактирования.
3. На «Ч.Г.У.» в одной секции максимум только 3 рекомендации к публикации в сборнике трудов конференции.
Пользователи данной базы данных:
1. Секретарь
2. Сотрудник СНО факультета
3. Сотрудник СНО университета
4. Администратор
Состав базы данных.
1) Пользователь:
a. #ID
b. #НОМ_ФАКУЛЬТЕТА;
c. #НОМ_РОЛИ;
d. ID ВКонтакте;
e. Имя;
f. Фамилия;
g. Ссылка на фото;
2) Секция:
a. #ID
b. #НОМ_СЕКЦИИ;
c. #НОМ_ФАКУЛЬТЕТА;
d. Название;
e. Дата проведения;
f. Аудитория;
g. Статистика;
3) Факультет:
a. #ID
b. Короткое название;
c. Полное название
d. Название в родительном падеже
e. ФИО Декана
f. ФИО научного руководителя СНО
4) Комиссия:
a. #ID
b. #НОМ_СЕКЦИИ;
c. #НОМ_СТАТУСА;
d. ФИО;
e. #ДОЛЖНОСТИ;
5) Статус:
a. #ID;
b. Название;
6) Доклад:
a. #ID;
b. #НОМ_СЕКЦИИ;
c. Название;
d. Место;
e. Отметка «По программе»;
7) Рекомендации
a. #ID;
b. Название
c. Отметка, что доступно
8) Руководитель:
a. #ID;
b. #НОМ_ ДОКЛАДА;
c. ФИО;
d. Должность;
9) Докладчик:
a. #ID;
b. #НОМ_ДОКЛАДА;
c. #НОМ_ОПЦИИ;
d. ФИО;
e. Телефон;
10) Опции докладчика:
a. #ID;
b. #ДОКЛАДЧИКА;
c. #ТИП_ДОКЛАДЧИКА;
d. meta_key;
e. meta_value;
Типы связей.
Пользователь добавляет секцию (M:1)
Пользователь числится на факультете (M:1)
Секция имеет комиссию (1:M)
Комиссия делится на виды (M:1)
На секции показывают доклады (1:M)
У докладов есть руководители (1:M)
У докладов есть докладчики (1:M)
Концептуальное проектирование
|
|
№ | Название | Описание |
1. | Пользователь | Содержит информацию о пользователе системы |
2. | Секция | Содержит информацию о секции |
3. | Руководитель | Содержит информацию о руководителе доклада |
4. | Комиссия | Содержит информацию о комиссии секции |
5. | Докладчик | Содержит информацию о докладчике |
6. | Доклад | Содержит информацию о докладе |
Метод ER-диаграмм.
Логическое проектирование
Создание запросов.
Описание запросов
№ | Имя запроса | Текст запроса |
Все группы с префиксом Иванов | Выводит список всех спикеров, у которых ФИО начинается с Иванов SELECT * FROM `speakers` WHERE `fio` LIKE `%Иванов %` AND `type ` IN (`chuvsu`,`_chuvsu`); | |
ORDER BY 'date' LIMIT 5 | Выводит все поля 5-ти самых последних секций SELECT * FROM `sections` ORDER BY 'date' LIMIT 5; | |
Фильтр пользователей | Сортирует студентов по ФИО и выдает докладчиков SELECT * FROM `users` WHERE `id_report` = ORDER BY `fio`; | |
Созданиеархивной таблицы | Создает временную таблицу сообщений студентов. CREATE TABLE IF NOT EXISTS `msgs_rar` ( `id` int(255) NOT NULL AUTO_INCREMENT, `datetime` datetime NOT NULL, `user_id` int(16) NOT NULL, `message` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `level` int(11) NOT NULL DEFAULT '0', UNIQUE KEY `id` (`id`)); | |
Удаление таблицы. | Удаляет все записи из таблицы DROPTABLE `bot_sms` | |
Обновление записи | Администратор публикует идею UPDATE `ideas` SET `posted` = 1 WHERE `ID` =? | |
Группирование данных | Выдаёт из таблицы работ студентов выполненные работы SELECT COUNT(*),`lab_works`.`name_id`, SUM(`lab_works`.`is_complied`),`objects`.`name_object` FROM `lab_works` INNER JOIN `objects` ON `lab_works`.`name_id` = `objects`.`ID` WHERE `lab_works`.`user_id`=? AND `lab_works`.`type_works`=? AND `lab_works`.`time_start` <=? AND `lab_works`.`unix_time` >=? GROUP BY `lab_works`.`name_id` | |
Вывод дублей | Выводит повторяющие ФИО докладчиков SELECT `fio` FROM `speakers` GROUP BY ` fio ` HAVING COUNT `fio`) > 1 | |
Добавление записи | INSERT INTO `users` (`id_vk`,`fio`,`GUID`) VALUES (?,?,?) | |
Вывод плановых работ | Выводит список работ которые нужно сдавать студенту SELECT `reports`.`ID` AS `ID_REPORT`, `speakers`.`ID` AS `ID_SPEAKER`, `reports`.`id_section`, `reports`.`name_report`, `reports`.`place`, IFNULL(`speakers`.`id_report`,0) AS `id_report`, IFNULL(`speakers`.`fio`,0) AS `fio`, IFNULL(`speakers`.`type`,0) AS `type` FROM `reports` LEFT JOIN `speakers` ON `reports`.`ID` =`speakers`.`id_report` WHERE `reports`.`id_section` =? AND `reports`.`place` > 0 ORDER BY Выводит список работ которые нужно сдавать студенту SELECT `all_labs`.`ID` AS `all_labs_ID`, `objects`.`name_object`, `object_types`.`type`, `all_labs`.`serial_num`, `all_labs`.`id_type`, `all_labs`.`id_object`, `all_labs`.`name`, IFNULL(`all_labs_unicum`.`ID`, '0') AS `all_labs_unicum_ID`, IFNULL(`all_labs_unicum`.`is_started`, '0') AS `is_started`, IFNULL(`all_labs_unicum`.`id_complied`, '0') AS `is_complied` FROM `all_labs` LEFT JOIN ( SELECT * FROM `all_labs_unicum` WHERE `all_labs_unicum`.`id_user` =? ) AS `all_labs_unicum` ON `all_labs`.`ID` = `all_labs_unicum`.`id_all_labs` INNER JOIN `objects` ON `all_labs`.`id_object` = `objects`.`ID` INNER JOIN `object_types` ON `object_types`.`ID` = `all_labs`.`id_type` WHERE `all_labs`.`id_group` =? AND `all_labs`.`term` =? ORDER BY `id_type`, `id_object`,`serial_num` SELECT SUM(`mark`)/COUNT(`mark`) FROM `works` WHERE `id_user` =? AND `id_type`!= 1 | |
Данные за период | Вывести все доклады у всех секций за определенный период SELECT * FROM `sections` INNER JOIN `reports` ON ` reports `.`id_ section` = ` sections `.`ID` WHERE ` reports`.`date` >=? | |
SELECT `reports`.`ID` AS `ID_REPORT`, `speakers`.`ID` AS `ID_SPEAKER`, `speakers`.`id_position`, `reports`.`id_section`, `reports`.`name_report`, `reports`.`place`, IFNULL(`speakers`.`id_report`,0) AS `id_report`, IFNULL(`speakers`.`fio`,0) AS `fio`, IFNULL(`speakers`.`type`,0) AS `type` FROM `reports` LEFT JOIN `speakers` ON `reports`.`ID` =`speakers`.`id_report` WHERE `reports`.`id_section` =? ORDER BY `reports`.`place` " |
Виды запросов
№ | Вид запроса | Шифр (ы) |
Запросы с выражениями, использующие 1. операторы строковых значений 2. все операторы сравнения с образцом 3. операторы обработки дат 4. операторы условных выражений 5. статистические функции по подмножеству 6. комплексные текстовые константы и константы даты | ||
Использование логических операторов, включающих в себя комбинацию «И», «ИЛИ» | ||
Запрос с вычисляемым полем | ||
Запрос с предикатом TOP | ||
Запрос, созданный из фильтра | ||
Запрос с внутренним соединением по нескольким полям | ||
Запрос с использованием внешнего соединения | ||
Запрос с рекурсивным соединением | ||
Запросы с параметрами | ||
Запросы на группирование данных Вычислений итоговых значений по всем записям | ||
Запросы на группирование данных Вычислений итоговых значений по группам записей | 7, 13 | |
Отбор повторяющихся записей и записей без подчиненных | ||
Запросы на удаление записи | ||
Запросы на обновление записи | ||
Запросы на добавление записей | ||
Запросы на создание таблицы | ||
Подчиненный запрос | ||
Перекрестный запрос |
Разработка форм
|
|
Описание форм
№ | Название формы | Тип формы | Назначение | Примечание |
Данные по факультету | Простая | Секретарь с помощью данной формы определяет свой факультет. Числовые данные необходимы для подведения итогового отчета. | Председатель факультета или администратор сайта заполняет эти данные | |
Идеи сервиса | Синхронизиризированная | Каждый человек может с помощью лайков голосовать за понравившиеся идеи, а также с помощью формы добавлять новые. | С помощью VKAPI администратору передаётся уведомление о новой идее для дальнейшей модерации. | |
Настройки профиля | Форма, состоящая из вкладок. | Редактирование данных пользователя. | ||
Работа с секциями | Форма, состоящая из вкладок, синхронизированная, диалоговое окно | Редактирование данных секций | ||
Секции | Синхронизированная, ленточная | Добавление и редактирование настроек секций. |
Разработка отчетов
№ | Название отчёта | Тип отчета | Назначение |
Отчёт по школьникам | Табличный (в столбец), с группировкой | Выводит количество школьников от группированных по школам | |
Дипломы | Составной отчёт | Выводит с помощью шаблона дипломы по секци | |
Докладчики относительно факультетов | Перекрестный | Показывает таблицу и график по факультетам |