Реляционная модель
Реляционная модель — это логическая модель данных, описывающая структуру данных в виде совокупности взаимосвязанных двумерных таблиц (отношений), над которыми выполняются операции на основе реляционной алгебры и реляционного исчисления. Она была предложена английским математиком Эдгаром Франком Коддом в 1969—1970 годах и стала теоретической основой для большинства современных систем управления базами данных (СУБД), известных как реляционные СУБД (РСУБД). Основными понятиями модели являются отношение, кортеж, атрибут, домен и ключ.
История возникновения
До появления реляционной модели доминировали иерархические и сетевые модели данных, которые были сложны в использовании и требовали от программиста знания физической структуры хранения данных. Эдгар Кодд, работавший в исследовательской лаборатории IBM, в 1970 году опубликовал статью «A Relational Model of Data for Large Shared Data Banks». В ней он предложил отказаться от навигационных методов доступа и оперировать данными на логическом уровне, используя математическую теорию отношений.
Первые коммерческие реализации реляционных СУБД появились в конце 1970-х — начале 1980-х годов. К ним относятся Oracle (1979), DB2 (1983) и Ingres. В 1985 году Кодд опубликовал «12 правил», которым должна соответствовать система, чтобы считаться полноценной реляционной СУБД. Хотя ни одна из существующих систем не соответствует всем правилам полностью, они стали важным критерием для оценки.
Основные понятия
Реляционная модель оперирует строгими математическими терминами, которые в практических СУБД часто заменяются более простыми синонимами.
Отношение (Relation)
Отношение — это центральное понятие модели. Оно представляет собой двумерную таблицу, состоящую из строк и столбцов. Отношение обладает следующими свойствами:
- Каждая строка (кортеж) уникальна.
- Все столбцы (атрибуты) имеют уникальные имена.
- Порядок строк и столбцов не имеет значения.
- Каждое значение атрибута является атомарным (неделимым).
Кортеж (Tuple)
Кортеж — это строка таблицы, представляющая собой набор значений атрибутов, описывающий один экземпляр сущности. Например, в таблице «Студенты» один кортеж содержит данные об одном конкретном студенте.
Атрибут (Attribute)
Атрибут — это столбец таблицы, описывающий определённое свойство сущности. Каждый атрибут имеет имя и принадлежит к определённому домену (типу данных). Например, атрибут «Фамилия» может иметь строковый тип.
Домен (Domain)
Домен — это множество допустимых значений, которые может принимать атрибут. Например, атрибут «Возраст» может иметь домен — целые числа от 0 до 150. Домен задаёт ограничения целостности на уровне столбца.
Ключи
Ключи служат для уникальной идентификации кортежей и установления связей между отношениями.
- Первичный ключ (Primary Key) — один или несколько атрибутов, значения которых уникально идентифицируют каждый кортеж в отношении. Не может содержать NULL-значений.
- Внешний ключ (Foreign Key) — атрибут или набор атрибутов в одном отношении, ссылающийся на первичный ключ другого отношения. Используется для обеспечения ссылочной целостности.
Реляционная алгебра
Реляционная алгебра — это набор операций, которые принимают одно или два отношения в качестве операндов и возвращают новое отношение. Кодд определил восемь основных операций, разделённых на две группы:
Теоретико-множественные операции
- Объединение (Union) — возвращает все кортежи, входящие хотя бы в одно из двух отношений.
- Пересечение (Intersection) — возвращает кортежи, присутствующие в обоих отношениях.
- Разность (Difference) — возвращает кортежи, входящие в первое отношение, но отсутствующие во втором.
- Декартово произведение (Cartesian Product) — комбинирует каждый кортеж первого отношения с каждым кортежем второго.
Специальные реляционные операции
- Выборка (Selection) — выбирает кортежи, удовлетворяющие заданному условию (аналог WHERE в SQL).
- Проекция (Projection) — выбирает указанные атрибуты (столбцы) и удаляет дубликаты кортежей.
- Соединение (Join) — объединяет кортежи из двух отношений на основе условия равенства значений определённых атрибутов.
- Деление (Division) — операция, обратная декартову произведению; используется для запросов типа «найти всех, кто выполнил все задания».
Нормализация
Нормализация — это процесс организации данных в реляционной модели для устранения избыточности и аномалий обновления. Он основан на понятии функциональных зависимостей и включает несколько нормальных форм (НФ):
- Первая нормальная форма (1НФ) — все атрибуты содержат только атомарные значения; нет повторяющихся групп.
- Вторая нормальная форма (2НФ) — отношение находится в 1НФ, и каждый неключевой атрибут полностью функционально зависит от первичного ключа.
- Третья нормальная форма (3НФ) — отношение находится в 2НФ, и нет транзитивных зависимостей (неключевые атрибуты зависят только от первичного ключа).
- Нормальная форма Бойса — Кодда (НФБК) — более строгая версия 3НФ, где каждая детерминанта является потенциальным ключом.
- Четвёртая (4НФ) и пятая (5НФ) нормальные формы — используются реже, касаются многозначных и проекционно-соединительных зависимостей.
На практике большинство баз данных нормализуется до 3НФ или НФБК.
Ограничения целостности
Для обеспечения корректности данных реляционная модель поддерживает три типа ограничений:
- Целостность сущности — первичный ключ не может содержать NULL-значений.
- Ссылочная целостность — внешний ключ должен либо содержать NULL, либо значение, существующее в первичном ключе родительского отношения.
- Целостность на уровне доменов — значения атрибутов должны принадлежать заданному домену.
Достоинства и недостатки
Достоинства
- Простота и понятность — табличная форма интуитивно понятна пользователям.
- Независимость от физической реализации — пользователь оперирует логической структурой, не заботясь о способах хранения.
- Гибкость — возможность выполнять сложные запросы с помощью реляционной алгебры и языка SQL.
- Целостность данных — встроенные механизмы поддержки целостности.
- Теоретическая обоснованность — строгая математическая база.
Недостатки
- Сложность обработки иерархических структур — для представления деревьев и графов требуются дополнительные механизмы (например, рекурсивные запросы).
- Производительность при больших объёмах — операции соединения (JOIN) могут быть ресурсоёмкими.
- Ограниченная поддержка сложных типов данных — традиционные РСУБД плохо подходят для хранения документов, изображений или геоданных.
Применение
Реляционная модель является доминирующей в корпоративных информационных системах, банковской сфере, системах управления персоналом, бухгалтерском учёте и электронной коммерции. Большинство веб-приложений используют реляционные базы данных (MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server) для хранения пользовательских данных, каталогов товаров и транзакций.
В последние десятилетия появились альтернативы — NoSQL-системы (документо-ориентированные, графовые, ключ-значение), которые решают некоторые ограничения реляционной модели, однако она остаётся стандартом для большинства задач, где важна целостность данных и сложная аналитическая обработка.
Источники
- Codd E. F. «A Relational Model of Data for Large Shared Data Banks» (1970)
- Codd E. F. «The Relational Model for Database Management: Version 2» (1990)
- Date C. J. «An Introduction to Database Systems» (8th edition, 2003)
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. «Системы баз данных. Полный курс» (2003)
- Connolly T., Begg C. «Database Systems: A Practical Approach to Design, Implementation, and Management» (6th edition, 2015)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →