Реляционная модель данных
Понятие реляционной модели данных
Реляционная модель данных — это модель организации данных, основанная на представлении информации в виде таблиц (отношений), где каждая таблица содержит строки (кортежи) и столбцы (атрибуты).
Главная идея — отделить логическое представление данных от их физического хранения, что позволяет:
- проще изменять структуру данных без изменения программ;
- использовать универсальные операции над таблицами независимо от их внутреннего устройства;
- стандартизировать работу с данными с помощью языка 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.