Лекция 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: Реляционная схема библиотеки и начальные данные.