Перейти к содержанию

Реляционная модель данных

Понятие реляционной модели данных

Реляционная модель данных — это модель организации данных, основанная на представлении информации в виде таблиц (отношений), где каждая таблица содержит строки (кортежи) и столбцы (атрибуты).

Главная идея — отделить логическое представление данных от их физического хранения, что позволяет:

  • проще изменять структуру данных без изменения программ;
  • использовать универсальные операции над таблицами независимо от их внутреннего устройства;
  • стандартизировать работу с данными с помощью языка SQL.

Основные свойства реляционной модели

  • Данные хранятся в виде таблиц (отношений), каждая строка — отдельная запись.
  • Порядок строк и столбцов не имеет значения.
  • Каждая таблица имеет уникальное имя, а каждая строка — уникальный идентификатор (первичный ключ).
  • Таблицы могут быть связаны между собой по ключам.
  • Все операции выполняются с использованием реляционной алгебры (SELECT, JOIN, UNION и др.).

Назначение реляционной модели

  • Унифицировать хранение и обработку данных.
  • Обеспечить гибкость и расширяемость баз данных.
  • Упростить поддержку целостности и непротиворечивости данных.

Реляционная модель лежит в основе большинства современных СУБД и является базовой для изучения баз данных.


История появления

Реляционная модель данных была предложена Эдгаром Франком Коддом (Edgar F. Codd) — учёным и сотрудником компании IBM — в 1970 году в статье «A Relational Model of Data for Large Shared Data Banks».

До этого в базах данных использовались иерархические и сетевые модели, которые:

  • имели жёсткую структуру;
  • были сложны в сопровождении и модификации;
  • требовали знания внутренней организации данных.

Кодд предложил революционную идею: отделить логическое представление данных от их физической реализации. Это позволило:

  • хранить данные в виде таблиц, связанных ключами;
  • управлять данными с помощью формальных математических операций (реляционная алгебра);
  • изменять структуру БД без изменения прикладных программ.

Реляционная модель быстро получила широкое распространение, так как она:

  • упростила разработку и поддержку баз данных;
  • позволила стандартизировать операции над данными;
  • обеспечила надёжные механизмы целостности и транзакций.

В 1980–1990-х годах появились первые коммерческие реляционные СУБД: Oracle, DB2, Informix, Sybase, позднее — MySQL, PostgreSQL, MS SQL Server.

Сегодня реляционная модель является де-факто стандартом и основой большинства промышленных и образовательных систем управления базами данных.


Основные элементы реляционной модели

Реляционная модель данных оперирует строго определёнными элементами, которые описывают структуру и связи данных.

Отношение (Relation / таблица)

  • Основная структура хранения данных в реляционной модели.
  • Представляет собой двумерную таблицу со строками и столбцами.
  • Каждая таблица имеет уникальное имя в пределах базы данных.
  • В таблице не может быть одинаковых строк (кортежей).

Кортеж (Tuple / строка)

  • Каждая строка таблицы — это одна запись, описывающая отдельный объект.
  • Все кортежи в таблице имеют одинаковую структуру.
  • Пример: запись о студенте с его ФИО, возрастом, номером группы.

Атрибут (Attribute / столбец)

  • Каждая колонка таблицы описывает определённое свойство (поле) объектов.
  • Имеет имя и домен — множество допустимых значений (например, целое число, дата, строка).
  • Пример: ФИО, Возраст, Номер_группы.

Схема отношения

  • Определяет структуру таблицы: названия и типы столбцов.
  • Пример: Студент(ИД, ФИО, Возраст, Группа).

Ключи

  • Необходимы для уникальной идентификации строк и создания связей между таблицами.
  • Первичный ключ (Primary Key) — однозначно определяет каждую строку.
  • Внешний ключ (Foreign Key) — создаёт ссылку на первичный ключ другой таблицы.
  • Альтернативные ключи — кандидаты на роль первичного.
  • Составной ключ — формируется из нескольких столбцов.

Использование ключей обеспечивает ссылочную целостность и логические связи между данными.

Домен (Domain)

  • Задает множество допустимых значений для конкретного атрибута.
  • Например: для атрибута «Возраст» — целые числа от 16 до 100.

Все эти элементы образуют строго формальную структуру данных, которая позволяет выполнять над ними операции реляционной алгебры и логики.


Типы связей между таблицами

В реляционной модели данные могут быть распределены по разным таблицам, которые связываются между собой через ключи. Тип связи определяет, сколько записей одной таблицы может соответствовать записям другой таблицы.

Связь «один к одному» (1:1)

  • Каждой записи в таблице A соответствует не более одной записи в таблице B, и наоборот.
  • Пример: Таблица Гражданин и таблица Паспорт — у каждого гражданина только один паспорт.
  • Реализуется с помощью внешнего ключа, который одновременно является уникальным в дочерней таблице.

Применяется, когда нужно логически разделить часто используемые и редко используемые данные.

Связь «один ко многим» (1:М)

  • Одной записи в таблице A соответствует несколько записей в таблице B, но каждая запись B ссылается только на одну запись A.
  • Пример: Таблица Преподаватель и таблица Дисциплина — один преподаватель ведёт много дисциплин.
  • Реализуется с помощью внешнего ключа в дочерней таблице.

Это самый распространённый тип связей в реляционных базах данных.

Связь «многие ко многим» (М:М)

  • Несколько записей из таблицы A могут быть связаны с несколькими записями из таблицы B.
  • Пример: Таблица Студент и таблица Дисциплина — студент может изучать несколько дисциплин, и дисциплину изучают несколько студентов.
  • Прямой связи М:М в реляционных БД не существует — она реализуется через промежуточную (связующую) таблицу, которая содержит внешние ключи на обе таблицы.

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


Ограничения целостности данных

Целостность данных — это совокупность правил, обеспечивающих достоверность, непротиворечивость и согласованность данных в базе. В реляционной модели существуют несколько ключевых типов ограничений целостности.

Сущностная целостность (Entity Integrity)

  • Каждая таблица должна иметь первичный ключ (PRIMARY KEY).
  • Значения первичного ключа должны быть уникальными и не NULL.
  • Обеспечивает уникальную идентификацию каждой строки таблицы.

Нарушение этого правила приводит к появлению дублирующихся или неопределённых записей.

Ссылочная целостность (Referential Integrity)

  • Используется для контроля связей между таблицами через внешние ключи (FOREIGN KEY).
  • Каждое значение внешнего ключа должно существовать как значение первичного ключа в связанной таблице.
  • Защищает от появления «висячих» ссылок.

При удалении или изменении записи в родительской таблице СУБД применяет стратегии: CASCADE, SET NULL, RESTRICT.

Целостность по домену (Domain Integrity)

  • Каждый столбец должен содержать данные только допустимого типа и диапазона.
  • Обеспечивается за счёт указания типов данных, ограничений CHECK, NOT NULL, DEFAULT.

Например, поле «Возраст» должно содержать только целые числа в допустимом диапазоне (например, 16–100).

Пользовательские ограничения (Business Rules)

  • Дополнительные правила, определяемые логикой предметной области.
  • Могут включать:
    • запрет на пересечение расписаний,
    • ограничение количества заказов на пользователя,
    • проверку уникальности email и т.д.
  • Реализуются через триггеры, процедуры, проверки на уровне приложения.

Эти ограничения зависят от бизнес-логики и дополняют стандартные механизмы целостности.


Язык SQL и реляционная модель

SQL (Structured Query Language) — это стандартный язык для работы с реляционными базами данных. Он появился как прямое следствие развития реляционной модели данных и реализует принципы реляционной алгебры и реляционного исчисления.

SQL обеспечивает единый интерфейс для создания, модификации и запросов данных во всех современных реляционных СУБД.

Основные подъязыки SQL

SQL делится на несколько функциональных частей:

  • DDL (Data Definition Language) — язык описания данных:
    • CREATE, ALTER, DROP — создание, изменение и удаление таблиц, схем и других объектов.
  • DML (Data Manipulation Language) — язык манипулирования данными:
    • SELECT, INSERT, UPDATE, DELETE — выборка и изменение данных в таблицах.
  • DCL (Data Control Language) — язык управления доступом:
    • GRANT, REVOKE — назначение и отзыв прав пользователей.
  • TCL (Transaction Control Language) — язык управления транзакциями:
    • COMMIT, ROLLBACK, SAVEPOINT — фиксация и откат изменений.

Связь SQL и реляционной модели

  • SQL позволяет работать с данными на логическом уровне — пользователь не думает о физическом размещении данных.
  • Команды SQL оперируют таблицами, строками и столбцами, соответствующими элементам реляционной модели.
  • SQL поддерживает операции реляционной алгебры (объединение, пересечение, соединение, проекция и др.).
  • SQL реализует ограничения целостности, встроенные в реляционную модель (PRIMARY KEY, FOREIGN KEY, CHECK и т.д.).

SQL является основным инструментом реализации реляционной модели и позволяет применять её принципы на практике.


Преимущества и недостатки реляционной модели

Реляционная модель является наиболее распространённой, так как обладает рядом существенных достоинств, но при этом имеет и определённые ограничения.

Преимущества

  • Универсальность и гибкость — подходит для большинства типов данных и приложений.
  • Формальная основа — базируется на математической теории множеств и логике предикатов.
  • Простота понимания — таблицы интуитивно понятны и легко моделируются.
  • Независимость логической и физической структур — изменения в хранилище не влияют на прикладные программы.
  • Стандартизация — поддерживается большинством СУБД и используется язык SQL.
  • Целостность и надёжность данных — встроенные механизмы ключей, ограничений и транзакций.
  • Возможность выполнения сложных запросов — поддержка соединений, подзапросов, агрегаций.

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

Недостатки

  • Снижение производительности при очень больших объёмах данных и высокой нагрузке.
  • Сложность масштабирования — реляционные БД плохо масштабируются горизонтально (по серверам).
  • Жёсткая структура — требуется заранее продуманная схема данных.
  • Неэффективны для слабо структурированных или мультимедийных данных.
  • Избыточность связей — большое количество внешних ключей и соединений усложняет запросы и снижает скорость.

Эти недостатки стали причиной появления альтернативных моделей хранения данных, таких как NoSQL.