- •Федеральное государственное бюджетное образовательное учреждение высшего образования «Чувашский государственный университет имени и. Н. Ульянова»
- •Бизнес правила.
- •Пользователи данной базы данных:
- •Состав базы данных.
- •Типы связей.
- •Концептуальное проектирование
- •Виды запросов
- •Разработка форм Описание форм
- •Разработка отчетов
- •Многомерное представление данных
- •Реализация
- •Интеграция базы данных MySql с word
- •Интеграция с vk api
- •Описание документов для импорта и экспорта данных.
- •Список использованной литературы.
- •Тексты платформы
Федеральное государственное бюджетное образовательное учреждение высшего образования «Чувашский государственный университет имени и. Н. Ульянова»
Факультет информатики и вычислительной техники
Кафедра вычислительной техники
Отчет по курсовой работе
по дисциплине Базы данных
на тему «Разработка платформы для автоматизации заполнения протоколов СНО»
Работу выполнил: студент группы ИВТ-41-15 Агниашвили Д.В.
Работу принял: Ржавин В.В.
г. Чебоксары, 2017
СОДЕРЖАНИЕ
Бизнес правила. 3
Пользователи данной базы данных: 3
Состав базы данных. 3
Типы связей. 5
Концептуальное проектирование 5
Метод ER-диаграмм. 6
Логическое проектирование 7
Создание запросов. 8
Описание запросов 8
Виды запросов 11
Разработка форм 11
Описание форм 11
Разработка отчетов 14
Многомерное представление данных 15
Реализация 17
Интеграция базы данных MySQL с WORD 21
Интеграция с VK API 32
Описание документов для импорта и экспорта данных. 32
Вывод. 33
Список использованной литературы. 34
Тексты платформы 35
Бизнес правила.
Запрещается давать больше призовых мест, чем 40% от общего числа участников.
Запрещается изменять данные людям, которые не получили права редактирования.
На «Ч.Г.У.» в одной секции максимум только 3 рекомендации к публикации в сборнике трудов конференции.
Пользователи данной базы данных:
Секретарь
Сотрудник СНО факультета
Сотрудник СНО университета
Администратор
Состав базы данных.
Пользователь:
#ID
#НОМ_ФАКУЛЬТЕТА;
#НОМ_РОЛИ;
ID ВКонтакте;
Имя;
Фамилия;
Ссылка на фото;
Секция:
#ID
#НОМ_СЕКЦИИ;
#НОМ_ФАКУЛЬТЕТА;
Название;
Дата проведения;
Аудитория;
Статистика;
Факультет:
#ID
Короткое название;
Полное название
Название в родительном падеже
ФИО Декана
ФИО научного руководителя СНО
Комиссия:
#ID
#НОМ_СЕКЦИИ;
#НОМ_СТАТУСА;
ФИО;
#ДОЛЖНОСТИ;
Статус:
#ID;
Название;
Доклад:
#ID;
#НОМ_СЕКЦИИ;
Название;
Место;
Отметка «По программе»;
Рекомендации
#ID;
Название
Отметка, что доступно
Руководитель:
#ID;
#НОМ_ ДОКЛАДА;
ФИО;
Должность;
Докладчик:
#ID;
#НОМ_ДОКЛАДА;
#НОМ_ОПЦИИ;
ФИО;
Телефон;
Опции докладчика:
#ID;
#ДОКЛАДЧИКА;
#ТИП_ДОКЛАДЧИКА;
meta_key;
meta_value;
Типы связей.
Пользователь добавляет секцию (M:1)
Пользователь числится на факультете (M:1)
Секция имеет комиссию (1:M)
Комиссия делится на виды (M:1)
На секции показывают доклады (1:M)
У докладов есть руководители (1:M)
У докладов есть докладчики (1:M)
Концептуальное проектирование
№ |
Название |
Описание |
|
|
Пользователь |
Содержит информацию о пользователе системы |
|
|
Секция |
Содержит информацию о секции |
|
|
Руководитель |
Содержит информацию о руководителе доклада |
|
|
Комиссия |
Содержит информацию о комиссии секции |
|
|
Докладчик |
Содержит информацию о докладчике |
|
|
Доклад |
Содержит информацию о докладе |
Метод ER-диаграмм.
Логическое проектирование
Создание запросов.
Описание запросов
№ |
Имя запроса |
Текст запроса |
1 |
Все группы с префиксом Иванов |
Выводит список всех спикеров, у которых ФИО начинается с Иванов SELECT * FROM `speakers` WHERE `fio` LIKE `% Иванов %` AND `type ` IN (`chuvsu` ,`_chuvsu`); |
2 |
ORDER BY 'date' LIMIT 5 |
Выводит все поля 5-ти самых последних секций SELECT * FROM `sections` ORDER BY 'date' LIMIT 5; |
3 |
Фильтр пользователей |
Сортирует студентов по ФИО и выдает докладчиков SELECT * FROM `users` WHERE `id_report` = ORDER BY `fio`; |
4 |
Создание архивной таблицы |
Создает временную таблицу сообщений студентов. 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`)); |
5 |
Удаление таблицы. |
Удаляет все записи из таблицы DROP TABLE `bot_sms` |
6 |
Обновление записи |
Администратор публикует идею UPDATE `ideas` SET `posted` = 1 WHERE `ID` = ? |
7 |
Группирование данных |
Выдаёт из таблицы работ студентов выполненные работы 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` |
9 |
Вывод дублей |
Выводит повторяющие ФИО докладчиков SELECT `fio` FROM `speakers` GROUP BY ` fio ` HAVING COUNT `fio`) > 1 |
10 |
Добавление записи |
INSERT INTO `users` (`id_vk`,`fio`,`GUID`) VALUES (?,?,?) |
11 |
Вывод плановых работ |
Выводит список работ которые нужно сдавать студенту 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 |
12 |
Данные за период |
Вывести все доклады у всех секций за определенный период 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` " |
