Статья опубликована в рамках: XXXVII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 24 декабря 2015 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
- Условия публикаций
- Все статьи конференции
дипломов
БАЗА ДАННЫХ ЭЛЕКТРОННОГО РАСПИСАНИЯ КОЛЛЕДЖА
Кадичев Павел Сергеевич
студент 4 курса, факультет СПО ОГТИ,
РФ, г. Орск
База данных очень важная часть любого проекта, где её целесообразно использовать. Очень часто, приступая к проектированию программы, программист или команда разработчиков приступают, в первую очередь, именно к проектированию базы данных.
Структура базы проектируется с расчетом на использование для колледжей, но её структура проста, поэтому её легко перестроить под другую задачу, например под школы или институты, университеты.
Эта база данных может использоваться вместе с любым языком программирования, имеющим поддержку MySQL или библиотеки для работы с базами данных. Но, пожалуй, она больше рассчитана на работу с web-ориентированными языками такими, как PHP. Perl, Python. В примерах статьи будет использоваться PHP.
Итак, структурная схема всей базы данных представлена на рисунке 1. На схеме все связи между таблицами обозначены стрелками. За связи между таблицами отвечают внешние ключи таблиц.
Рисунок 1. Структурная схема базы данных
База является реляционной и состоит из 7 таблиц и включает следующие данные:
1. cписок специальностей (таблица professions);
2. cписок групп (таблица groups);
3. дисциплины (таблица lessons);
4. список преподавателей (таблица teachers);
5. расписание занятий по группам (таблицы timetable и timetable_lesson).
Перейдем к примеру. Заполнены таблицы:
Рисунок 2. таблица professions
Рисунок 3. таблица groups
Рисунок 4. таблица lessons
Рисунок 5. таблица timetable
Рисунок 6. таблица timetable_lessons
Теперь построим SQL-запрос, по которому выведется расписание группы 402, профессии ПКС:
SELECT * FROM lessons, groups, professions, timetable, timetable_lesson WHERE (timetable.timetable_id = timetable_lesson.timetable_id) AND (timetable.group_id = groups.group_id) AND (lesson.lesson_id = timetable_lesson.lesson_id) AND (profession.profession_id = groups.profession_id) AND groups.groups_id = 1;
Итак, запрос делается сразу к 5 таблицам: groups, professions, lessons, timetable, timetable_lesson. Запрос делается по идентификатору группы – groups_id. Из таблицы professions, по полю profession_id, выбирается профессия данной группы. Из timetable выбираются записи по полю group_id – это дни недели расписания, из timetable_lesson выбираются записи по полю timetable_id. Одна запись таблицы timetable_lesson – это один урок расписания. Также таблица включает lesson_id (внешний ключ к таблице lessons) и lesson_number (номер урока/пары).
Реализуем работу запроса с помощью PHP:
<?php
$link = mysqli_connect("localhost", "root", "22033022", "timetable2") or die('Error!');
$mysql_query_run = mysqli_query($link, "SELECT * FROM lessons, groups, professions, timetable, timetable_lessons WHERE (timetable.timetable_id = timetable_lessons.timetable_id) AND (timetable.group_id = groups.group_id) AND (lessons.lesson_id = timetable_lessons.lesson_id) AND (professions.profession_id = groups.profession_id) AND groups.group_id = 1");
$mysql_query_array = mysqli_fetch_array($mysql_query_run, MYSQLI_ASSOC); ?>
<h3>Профессия:<?=$mysql_query_array['profession_full'];?>.Группа:<?=$mysql_query_array['group_name'];?>.Курс:<?=$mysql_query_array['course'];?>.</h3>
<table>
<thead>
<tr><th>№</th><th>ПН</th><th>ВТ</th><th>СР</th><th>ЧТ</th><th>ПТ</th><th>СБ</th></tr>
</thead>
<tbody>
<?php while($mysql_query_array = mysqli_fetch_array($mysql_query_run, MYSQLI_ASSOC)) $table[$mysql_query_array['lesson_number']][$mysql_query_array['timetable_day']] = $mysql_query_array['lesson_short']; ?>
<?php for($j = 1; $j <= 3; $j++): ?>
<tr>
<td><?=$j;?></td>
<?php for($i = 1; $i <= 6; $i++): ?>
<td>
<?php if(!isset($table[$j][$i])): ?>
------
<?php else: echo $table[$j][$i]; endif; ?>
</td>
<?php endfor; ?>
</tr>
<?php endfor; ?>
</tbody>
</table>
Результат работы PHP-кода на рисунке 7.
Рисунок 7. результат работы PHP-кода
В примере выполнялся всего один сложный запрос в базу данных для получения всех нужных данных. Остальную работу такую, как обработка запроса и вывод информации на страницу, делает PHP.
В итоге можно сказать, что такая структура базы данных проста в использовании на практике, в нашем случае для использования с языком PHP. Получить расписание любой группы можно лишь одним сложным SQL-запросом. Для увеличения функционала можно дополнить базу вспомогательными таблицами.
дипломов
Оставить комментарий