- •Раздел 16. Многоуровневые и многослойные приложения. Шаблон проектирования Модель-Представление-Контроллер
- •16.1. Многоуровневые приложения
- •16.2. Многослойные приложения
- •16.3. Шаблон проектирования Модель-Представление-Контроллер
- •16.4. Реализация шаблона Модель-Представление-Контроллер в веб-приложениях
- •Раздел 17. Базы данных в веб-приложениях
- •17.1. Основные понятия баз данных
- •17.2. Системы управления базами данных
- •17.3. Язык запросов sql
- •Транзакции
- •17.4. Доступ к базам данных из Java
- •Пример: база данных студентов
- •Поддержка транзакций
- •17.5. Объектно-реляционная проекция
- •Лекция 18. Безопасность Интернет-приложений
- •18.1. Аутентификация и авторизация
- •18.2. Понятие безопасности Интернет-приложений
- •18.3. Классы атак сетевого уровня Сниффинг пакетов
- •Подмена ip-адреса
- •Отказ в обслуживании
- •Сетевая разведка
- •18.4. Криптографические технологии
- •18.5. Уязвимости уровня приложений
- •Уязвимости системы аутентификации
- •Уязвимости системы авторизации
- •Атаки на стороне клиента
- •Выполнение кода на сервере
- •Разглашение информации
- •Злоупотребление функциональными возможностями
- •Наиболее распространенные уязвимости
- •18.6. Резюме
Раздел 17. Базы данных в веб-приложениях
17.1. Основные понятия баз данных
База данных — структурированная совокупность данных, включающая кроме собственно данных и информацию о структуре этих данных.
Реляционная база данных — база данных, основанная на реляционной модели, т. е. данные предметной области представляются в виде n-арных отношений, которые удовлетворяют определенным ограничениям целостности. Для манипулирования данными этой модели используются реляционное исчисление и реляционная алгебра.
В упрощенном виде, реляционную базу данных можно рассматривать как набор связанных таблиц, при этом, чаще всего, таблица хранит информацию о сущностях определенного типа (класса), где каждая строка таблицы соответсвует отдельно взятой уникальной сущности, а каждая колонка — определенной характеристике (параметру) сущности.
Например, рассмотрим схему базы данных (рисунок 1), для которой предметной областью будет информация о студентах, факультетах на которых они обучаются и посещаемых курсах.
Рисунок 1
Здесь, таблица STUDENT соответствует сущности «Студент» и имеет следующие поля:
-
id — идентификатор (суррогатный ключ), значение уникально определяющее конкретного студента, первичный ключ в таблице;
-
last_name — фамилия студента;
-
first_name — имя студента;
-
faculty_id — идентификатор факультета, на котором учится студент, внешний ключ таблицы FACULTY, является примером связи «многие-к-одному», показывает, что студент может числиться только на одном факультете, в то время как на одном и том же факультете учится много студентов.
Аналогична структура таблиц FACULTY (соответствует сущности «факультет») и COURSE (сущности «лекционный курс»):
-
id — идентификатор, первичный ключ таблицы;
-
name — название факультета (курса).
Таблица STUDENT_COURSE не соответсвует какой-либо сущности предметной области, она соответсвует связи студент-курс, связи типа «многие ко многим». Студент может посещать несколько курсов и наоборот, один и тот же курс слушают многие студенты. Для этой таблицы первичным ключом является пара (student_id, course_id). Каждая из этих колонок, в свою очередь, является внешним ключом, например, student_id — внешний ключ таблицы STUDENT в таблице STUDENT_COURSE (т. е. student_id хранит значение первичного ключа для таблицы STUDENT).
17.2. Системы управления базами данных
Большинство веб-приложений используют базу данных, причем напрямую с файловой системой веб-приложения работают крайне редко, а использует специализированное программное обеспечение, предоставляющее множество полезных и удобных сервисов для работы с данными — систему управления базами данных (СУБД).
Система управления базами данных — это программный продукт, включающий средства администрирования баз данных, обеспечивающий хранение, индексацию, целостность данных и предоставляющий другие сервисы и возможности, такие как, одновременная работа с одной базой нескольких пользователей, система безопасности, основанная на разграничении прав пользователей, поддержка транзакций, создание резервных копий, ведение журналов и др.
Плюсы использования СУБД:
-
независимость данных от приложения;
-
улучшенное быстродействие, безопасность, целостность данных;
-
снижение трудозатрат на разработку и поддержку хранилища данных.