Реляционная модель данных
Реляционная модель данных — это логическая модель представления данных, основанная на математическом понятии отношения (relation). В рамках этой модели информация организуется в виде совокупности двумерных таблиц (отношений), связанных между собой с помощью общих атрибутов (ключей). Реляционная модель была предложена Эдгаром Ф. Коддом в 1970 году в статье «A Relational Model of Data for Large Shared Data Banks» и стала теоретической основой для большинства современных систем управления базами данных (СУБД), таких как Oracle, MySQL, PostgreSQL, Microsoft SQL Server и других.
Основные понятия реляционной модели
Реляционная модель оперирует строго определёнными терминами, которые отличаются от бытового понимания «таблиц» и «столбцов».
Отношение (Relation)
Отношение — это математическое понятие, которое в реляционной модели отображается в виде таблицы. Отношение имеет имя (например, «Сотрудники») и состоит из заголовка (набора атрибутов) и тела (множества кортежей). Важное свойство отношения — оно не может содержать одинаковых кортежей (строк), так как это нарушает математическое определение множества.
Кортеж (Tuple)
Кортеж соответствует строке таблицы. Каждый кортеж представляет собой упорядоченный набор значений атрибутов, описывающий один экземпляр сущности (например, одного сотрудника). В реляционной модели порядок кортежей не имеет значения — таблица является неупорядоченным множеством строк.
Атрибут (Attribute)
Атрибут — это столбец таблицы, который описывает одно свойство сущности (например, «Фамилия», «Дата рождения», «Зарплата»). Каждый атрибут имеет уникальное имя в пределах отношения и определённый домен (множество допустимых значений, например, целые числа или строки).
Домен (Domain)
Домен задаёт тип данных и множество возможных значений для атрибута. Например, атрибут «Возраст» может иметь домен «целые числа от 0 до 150». Домены обеспечивают целостность данных на уровне модели.
Первичный ключ (Primary Key)
Первичный ключ — это атрибут или набор атрибутов, который уникально идентифицирует каждый кортеж в отношении. Например, в таблице «Студенты» первичным ключом может быть «Номер зачётной книжки». Первичный ключ не может содержать NULL-значений (неопределённых данных) и должен быть уникальным для всех строк.
Внешний ключ (Foreign Key)
Внешний ключ — это атрибут или набор атрибутов в одном отношении, который ссылается на первичный ключ другого отношения. Внешние ключи обеспечивают связи между таблицами и поддержание ссылочной целостности. Например, в таблице «Заказы» атрибут «ID_клиента» является внешним ключом, ссылающимся на первичный ключ таблицы «Клиенты».
История и развитие
Концепция реляционной модели возникла как ответ на недостатки более ранних моделей данных — иерархической и сетевой, которые были сложны в использовании и зависели от физической структуры хранения.
- 1970 год — Эдгар Кодд опубликовал статью, заложившую основы реляционной модели. Он ввёл понятия отношений, нормализации и реляционной алгебры.
- 1974–1977 годы — в исследовательской лаборатории IBM (San Jose) разработан прототип СУБД System R, который продемонстрировал практическую реализуемость модели. В рамках этого проекта создан язык SQL (Structured Query Language).
- 1979 год — компания Relational Software (позже Oracle) выпустила первую коммерческую реляционную СУБД — Oracle 2.
- 1980-е годы — реляционные СУБД (dBASE, Ingres, Informix, Sybase) стали доминирующими на рынке, вытеснив сетевые и иерархические системы.
- 1990-е годы — настоящее время — реляционная модель остаётся стандартом для большинства корпоративных и веб-приложений, хотя появились альтернативы (NoSQL, NewSQL), которые дополняют её в сценариях с высокими требованиями к масштабируемости.
Реляционная алгебра
Реляционная алгебра — это теоретический язык запросов к реляционной базе данных, состоящий из набора операций над отношениями. Эти операции позволяют извлекать и комбинировать данные без указания способов их физического хранения. Основные операции реляционной алгебры:
- Выборка (Selection, σ) — фильтрация кортежей по заданному условию (например, «выбрать сотрудников с зарплатой > 50000»).
- Проекция (Projection, π) — извлечение указанных атрибутов из отношения (например, «получить только фамилии и должности»).
- Объединение (Union, ∪) — объединение кортежей двух совместимых отношений (одинаковый набор атрибутов).
- Разность (Difference, −) — кортежи, присутствующие в первом отношении, но отсутствующие во втором.
- Декартово произведение (Cartesian product, ×) — комбинация каждого кортежа из первого отношения с каждым кортежем из второго.
- Соединение (Join, ⋈) — комбинация кортежей из двух отношений на основе общего атрибута (например, естественное соединение по первичному и внешнему ключам).
SQL (Structured Query Language) является практической реализацией реляционной алгебры, адаптированной для использования в СУБД.
Нормализация
Нормализация — это процесс преобразования схемы базы данных к виду, минимизирующему избыточность данных и аномалии при вставке, обновлении и удалении. Теория нормализации была разработана Эдгаром Коддом и Рэймондом Бойсом. Выделяют несколько нормальных форм (НФ):
Первая нормальная форма (1НФ)
Отношение находится в 1НФ, если все его атрибуты содержат только атомарные (неделимые) значения, и в таблице нет повторяющихся групп. Например, вместо столбца «Телефоны» с несколькими номерами через запятую создаётся отдельная таблица «Телефоны» с одной строкой на каждый номер.
Вторая нормальная форма (2НФ)
Отношение находится в 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от всего первичного ключа (а не от его части). Это актуально для таблиц с составными первичными ключами.
Третья нормальная форма (3НФ)
Отношение находится в 3НФ, если оно находится в 2НФ и ни один неключевой атрибут не зависит транзитивно от первичного ключа (то есть не существует атрибута, который зависит от другого неключевого атрибута).
Нормальная форма Бойса — Кодда (НФБК)
Более строгая версия 3НФ: отношение находится в НФБК, если для каждой нетривиальной функциональной зависимости X → Y (где Y не является подмножеством X) X является потенциальным ключом.
На практике большинство реляционных баз данных нормализуются до 3НФ или НФБК, что обеспечивает баланс между целостностью данных и производительностью.
Ограничения целостности
Реляционная модель поддерживает три основных типа ограничений целостности:
- Целостность сущности (Entity integrity) — первичный ключ не может содержать NULL-значений. Каждый кортеж должен быть уникально идентифицируем.
- Ссылочная целостность (Referential integrity) — значения внешнего ключа должны соответствовать значениям первичного ключа в родительском отношении (или быть NULL, если это допускается). Это предотвращает появление «висячих» ссылок.
- Целостность домена (Domain integrity) — значения атрибутов должны принадлежать заданному домену (типу данных, диапазону, формату).
Достоинства и недостатки
Достоинства
- Простота и понятность — данные представляются в виде таблиц, что интуитивно понятно пользователям.
- Независимость от физической структуры — пользователи работают с логической моделью, не заботясь о способах хранения и индексации.
- Математическая строгость — теоретическая база (реляционная алгебра) обеспечивает формальные методы проверки корректности запросов.
- Целостность и непротиворечивость — механизмы нормализации и ограничений минимизируют избыточность и аномалии.
- Мощный язык запросов — SQL позволяет выполнять сложные операции с данными без программирования на низком уровне.
Недостатки
- Производительность при больших объёмах — сложные соединения (JOIN) между множеством таблиц могут быть медленными на очень больших наборах данных (миллиарды записей).
- Сложность горизонтального масштабирования — реляционные СУБД традиционно трудно масштабировать на десятки и сотни узлов (в отличие от NoSQL-систем).
- Фиксированная схема — изменение структуры таблиц (добавление или удаление атрибутов) может требовать миграций и простоя системы.
- Неэффективность для неструктурированных данных — хранение документов JSON, графов или медиафайлов в реляционных таблицах часто неоптимально.
Применение
Реляционная модель данных используется в подавляющем большинстве информационных систем, где требуется структурированное хранение и сложная аналитическая обработка. Основные области применения:
- Корпоративные системы (ERP, CRM, бухгалтерский учёт) — управление заказами, клиентами, финансами.
- Веб-приложения — интернет-магазины, социальные сети, блоги (например, WordPress использует MySQL).
- Банковские системы — учёт счетов, транзакций, кредитов.
- Государственные информационные системы — реестры, кадастры, базы данных граждан.
- Научные и статистические базы — хранение результатов экспериментов, демографических данных.
Несмотря на появление альтернативных моделей (документные, графовые, ключ-значение), реляционная модель остаётся наиболее распространённой и стандартизированной парадигмой управления данными, особенно в сценариях, где важны транзакционная целостность (ACID) и сложные запросы.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →