Лекция 3. Реляционная модель данных
В предыдущей лекции мы рассмотрели ER-моделирование — концептуальный инструмент для описания предметной области в виде сущностей и связей. ER-модель отвечает на вопрос: «ЧТО мы хотим хранить?».
Теперь нам нужно перейти на следующий, логический уровень и ответить на вопрос: «КАК мы будем это хранить в реляционной базе данных?». Для этого используется реляционная модель, предложенная Эдгаром Коддом. Она описывает данные в виде простых и понятных таблиц и лежит в основе практически всех современных реляционных СУБД (PostgreSQL, MySQL и др.).
Эта лекция посвящена ключевым понятиям реляционной модели, которые служат мостом между абстрактной ER-диаграммой и реальной структурой базы данных.
1. Основные компоненты реляционной модели
В реляционной модели все данные представляются в виде двумерных таблиц, которые формально называются отношениями.
- Отношение (Relation): Это таблица с данными. Она состоит из столбцов и строк.
- Атрибут (Attribute): Это именованный столбец в таблице (отношении).
- Кортеж (Tuple): Это одна строка в таблице (отношении).
- Домен (Domain): Это множество допустимых значений для атрибута. По сути, это тип данных столбца (например, целое число, строка, дата).
Свойства отношений (таблиц)
- В таблице нет двух абсолютно одинаковых строк (кортежей).
- Порядок строк не имеет значения.
- Порядок столбцов (атрибутов) не имеет значения.
- Все значения в одном столбце должны быть одного типа (принадлежать одному домену).
- Каждое значение в ячейке должно быть атомарным (неделимым).
2. Ключи: основа связей и уникальности
Ключи — это атрибуты (или их наборы), которые играют особую роль в идентификации данных и установлении связей.
- Суперключ (Superkey): Любой набор атрибутов, который уникально идентифицирует каждую строку в таблице.
- Потенциальный ключ (Candidate Key): Это минимальный суперключ. Если из него убрать любой атрибут, он перестанет быть уникальным. В одной таблице может быть несколько потенциальных ключей.
- Первичный ключ (Primary Key): Это один из потенциальных ключей, выбранный в качестве основного идентификатора строк в таблице. Он должен быть уникальным и не может содержать пустых значений (NULL).
- Внешний ключ (Foreign Key): Атрибут в одной таблице, который ссылается на первичный ключ в другой (или этой же) таблице. Это механизм для связи таблиц.
3. Ограничения целостности
Реляционная модель определяет правила, которые гарантируют согласованность и корректность данных.
- Целостность сущностей (Entity Integrity): Требует, чтобы первичный ключ любой таблицы не содержал значений NULL. Это гарантирует, что каждая строка будет иметь уникальный идентификатор.
- Ссылочная целостность (Referential Integrity): Требует, чтобы каждое значение внешнего ключа соответствовало значению первичного ключа в связанной таблице, либо было равно NULL. Это предотвращает появление "осиротевших" строк — например, заказа, не связанного ни с одним клиентом.
Пример в SQL
Рассмотрим таблицы для студентов и групп. `group_id` в таблице `Students` является внешним ключом.
Благодаря этим ограничениям, вы не сможете добавить студента с `group_id`, которого нет в таблице `Groups`.
Практическое задание 3
Продолжите работу с ER-моделью библиотеки из Практики 2: преобразуйте ее в реляционную схему, создайте таблицы и подготовьте начальные данные.
Перейти к Практике 3: Реляционная схема библиотеки и начальные данные.