Андрей Попов. Доцент.

Еврейский SQL-сервер отвечает запросом на запрос...

Технологии создания приложений БД

Практический курс по работе с базами данных из веб-приложений.

Вопросы к экзамену

  1. Интерактивный и программный режимы работы с базами данных.
  2. Особенности взаимодействия веб-приложений и систем управления базами данных.
  3. Инструменты и технологии для работы с данными в архитектуре "клиент-сервер" на примере веб-приложений.
  4. Этапы создания приложения для работы с базами данных с учетом трехуровневой модели данных
  5. Задача проектирования и создания структуры базы данных для реляционных и нереляционных СУБД.
  6. Обеспечение логической целостности данных средствами СУБД (на примере СУБД MySQL).
  7. Технологии построения пользовательского интерфейса в веб-приложениях для работы с базами данных. CSS- и JavaScript-фреймворки
  8. Стандартные элементы пользовательского интерфейса для CRUD-приложений.
  9. Шаблонизаторы и компонентный подход к построению интерфейса приложений БД.
  10. Серверный и клиентский рендеринг страниц в веб-приложениях, работающих с базами данных.
  11. Работа с реляционными базами данных с помощью языка SQL на примере библиотеки PDO в PHP.
  12. Применение подготовленных запросов PDO для борьбы с SQL-инъекциями в веб-приложениях.
  13. Работа с реляционными базами данных с помощью ORM-библиотек и PHP-фреймворков.
  14. Применение PHP-фреймворков для создания приложений баз данных. Возможности и особенности фреймворков Laravel, Yii и Phalcon.
  15. Использование нереляционных баз данных в веб-приложениях на примере MongoDB.

Литература к курсу

  1. Форта Б. "SQL за 10 минут" - М.: Вильямс, 2014. – 288 с.
  2. Кузнецов М.В., Симдянов И.В. "MySQL 5" — СПб.: БХВ-Петербург, 2006. — 1024 с.
  3. Маклафлин Б. "PHP и MySQL. Исчерпывающее руководство" — СПб.: Питер, 2013. — 512 с.
  4. Колисниченко Д. "PHP и MySQL. Разработка web-приложений" — СПб.: БХВ-Петербург, 2013. — 560 с.
  5. Смольянов А.Г., Карьгин И.П., Смольянова Е.Г. "Работа с удаленными базами данных средствами Web : учебное пособие" — Саранск: Мордов. гос. пед. ин-т, 2017. — 122 с.

Лабораторные работы

Необходимо написать веб-приложение на языке PHP для работы с реляционной СУБД MySQL и нереляционной СУБД MongoDB.

  • Для выполнения работ можно использовать локальный WAMP-сервер Open Server в каталоге C:\DBMS_Popov\OpenServer_mini\OSPanel.
  • Для надежности после завершения каждого занятия лучше делать резервную копию вашей базы данных. Для этого в утилите phpMyAdmin можно экспортировать базу данных в sql-файл и сохранить этот файл в вашем домашнем каталоге.

1. Проектирование и создание базы данных MySQL - 5 баллов

2. Занесение данных в созданную базу данных (интерактивный и пакетный режимы) - 5 баллов

В базе данных MySQL должна храниться информация об успеваемости студентов 402, 403, 404. Нужно создать структуру таблиц (с учетом правил нормализации) для хранения:
  • Персональной информация о студентах. Фамилия, имя, отчество, пол, дата рождения, номер студенческого билета, дата выдачи студенческого билета, признак старосты группы, группа, код учебного направления.
  • Информации о дисциплинах, которые преподавались на 2-3 курсах. Код дисциплины по учебному плану, наименование дисциплины, код учебного направления, количество часов, вид аттестации (зачет, экзамен).
  • Информация об набранных баллах и оценках на экзамене. Дата, дисциплина, студент, баллы (от 0 до 100), оценка (зачет, 2, 3, 4, 5).

Информацию нужно импортировать в базу данных с помощью заранее подготовленных SQL-скриптов. Исходные данные о студентах взять из файла, данные о дисциплинах - из учебного плана. Недостающую информацию внести произвольно.

Создаваемая база данных должна называться своя_фамилия_402_user, работать с базой нужно под своим пользователем. Его нужно завести в базе данных под суперпользователем root и предоставить ему привилегии на выполнение всех операций в СУБД.

После создания базы данных и заполнения ее данными нужно подготовить скрипты для переноса всей базы (вместе с данными) на другой сервер.

3. Создание интерфейса пользователя для CRUD-приложения на языке PHP - 15 баллов

4. Разработка серверной части CRUD-приложения для СУБД MySQL (технология PDO) - 15 баллов

Приложение работает с созданной базой данных, на стартовой странице приложения должен выводиться список всех студентов (сортировка по номеру группы и фамилии). Для каждой записи нужно добавить:
  • Кнопки/ссылки "Редактировать" и "Удалить", при нажатии на которые будет открываться форма для изменения персональных данных студента или форма с запросом на удаление данной записи.
  • Кнопку "Результаты экзаменов", при нажатии на которую будет открываться список с результатами всех экзаменов (в хронологическом порядке), которые сдавал этот студент.

Внизу списка студентов разместить кнопку "Добавить", вызывающая форму для ввода новой записи.

Удаление данных о студенте должно вызывать каскадное удаление данных о всех его экзаменах.

В форме ввода/редактирования данных о студентах номер группы должен выбираться из раскрывающегося списка, пол студента устанавливаться с помощью переключателя, а признак старосты группы - с помощью флажка.

Предусмотреть в приложении возможность построения отчетов и выгрузки их в текстовый файл на рабочей станции:
  • Сводная информация об экзамене по определенному предмету в одной группе: количество оценок "2", "3", "4", "5". Название предмета выбирать из раскрывающегося списка, номер группы устанавливать с помощью радиокнопки.
  • Анкетные данные студентов, сдавших все экзамены на "4" и "5".
  • Гендерный анализ: количество мужчин и женщин в каждой из групп.
Требования к приложению:
  • Обеспечить корректную отображение информации в браузерах Google Chrome и Mozilla Firefox.
  • Работать с базой данных нужно с помощью технологии PDO с использованием подготовленных запросов (для защиты от SQL-инъекций).
Реализация приложения с помощью технологии AJAX - дополнительные 5 баллов.

5. Создание CRUD-приложения на языке PHP с использованием библиотек ORM - 10 баллов

Изменить бекенд написанного приложения - обращение к базе данных должно идти без непосредственного исполнения SQL-запросов, а с помощью какой-либо библиотеки ORM (Object Relational Mapping), например RedBeanPHP, Eloquent или Idiorm. Также можно использовать PHP-фреймворки (Laravel, Yii, Phalcon). Функционал приложения, созданного в работе 4, должен полностью сохраниться!

6. Миграция данных в нереляционную СУБД Mongo DB - 10 баллов

7. Разработка серверной части CRUD-приложения для СУБД MongoDB - 10 баллов

Выполнить миграцию данных из MySQL в нереляционную СУБД MongoDB (отдельными скриптами или средствами фреймворка). Изменить бекенд приложение - пользовательский интерфейс и функционал должны остаться прежним, а данные должны браться из коллекций MongoDB.

Статистика группы 402