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).
- Раздел 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. Резюме