Открыть сервис

Реляционные базы данных

Реляционная база данных — это база данных, основанная на реляционной модели данных, предложенной Эдгаром Коддом в 1970 году. В такой модели данные представляются в виде совокупности взаимосвязанных таблиц (отношений), каждая из которых состоит из строк (кортежей) и столбцов (атрибутов). Основным преимуществом реляционных баз данных является возможность гибкого и эффективного управления данными с помощью структурированного языка запросов SQL (Structured Query Language), а также обеспечение целостности, непротиворечивости и независимости данных.

История

Предпосылки и создание

До появления реляционной модели данные в вычислительных системах хранились в иерархических и сетевых базах данных, которые были жёстко структурированы и требовали сложных навигационных запросов. В 1970 году Эдгар Кодд, работавший в исследовательской лаборатории IBM, опубликовал статью «A Relational Model of Data for Large Shared Data Banks», в которой предложил математическую модель, основанную на теории множеств и предикатов. Кодд стремился устранить недостатки существующих моделей, в первую очередь — зависимость логической структуры данных от физической организации хранения.

Развитие и стандартизация

В 1970-х годах в IBM началась разработка прототипа реляционной СУБД System R, которая стала основой для языка SQL. В 1979 году компания Relational Software (позднее Oracle) выпустила первую коммерческую реляционную СУБД — Oracle 2. В 1980-х годах реляционные базы данных стали доминирующим типом СУБД, вытеснив иерархические и сетевые системы. В 1986 году SQL был стандартизирован ANSI, а в 1987 году — ISO. В 1990-х годах появились первые реляционные СУБД с открытым исходным кодом, такие как MySQL и PostgreSQL.

Основные понятия

Таблица (отношение)

Таблица является основным структурным элементом реляционной базы данных. Она состоит из строк (записей) и столбцов (полей). Каждая строка представляет собой уникальный экземпляр сущности (например, «клиент», «заказ»), а каждый столбец — атрибут этой сущности (например, «имя», «дата рождения»). Таблица должна удовлетворять следующим требованиям:

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

Ключи

Для обеспечения уникальности и связей между таблицами используются ключи:

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

Нормализация

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

  • Первая нормальная форма (1НФ) — все атрибуты атомарны, таблица не содержит повторяющихся групп.
  • Вторая нормальная форма (2НФ) — таблица находится в 1НФ, и каждый неключевой атрибут функционально полно зависит от первичного ключа.
  • Третья нормальная форма (3НФ) — таблица находится в 2НФ, и неключевые атрибуты не зависят друг от друга (отсутствует транзитивная зависимость).
  • Нормальная форма Бойса — Кодда (НФБК) — более строгая версия 3НФ, применимая к таблицам с составными первичными ключами.

Язык SQL

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

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

Архитектура и принципы

Трёхуровневая архитектура

Реляционные СУБД обычно следуют трёхуровневой архитектуре ANSI/SPARC, предложенной в 1975 году:

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

Транзакции и ACID

Транзакция — это логическая единица работы, которая выполняется полностью или не выполняется вовсе. Для обеспечения надёжности реляционные СУБД поддерживают свойства ACID:

  • Атомарность (Atomicity) — транзакция выполняется целиком или откатывается.
  • Согласованность (Consistency) — после завершения транзакции база данных переходит из одного согласованного состояния в другое.
  • Изолированность (Isolation) — параллельно выполняющиеся транзакции не влияют друг на друга.
  • Долговечность (Durability) — результаты завершённой транзакции сохраняются даже при сбоях.

Классификация реляционных СУБД

По модели распространения

По архитектуре

  • Клиент-серверные — СУБД работает как отдельный серверный процесс, к которому подключаются клиентские приложения (Oracle, PostgreSQL, MySQL).
  • Встраиваемые — библиотека, встраиваемая непосредственно в приложение (SQLite, Firebird Embedded).

Применение

Реляционные базы данных широко используются в различных областях:

  • Финансовые системы — учёт транзакций, работа с банковскими счетами, кредитными картами.
  • Корпоративные информационные системы — ERP, CRM, HRM.
  • Электронная коммерция — каталоги товаров, корзины покупок, заказы.
  • Государственные информационные системы — реестры, базы данных граждан, налоговые службы.
  • Научные исследования — хранение и анализ экспериментальных данных.

Преимущества и недостатки

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

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

Недостатки

  • Производительность при больших объёмах — реляционные СУБД могут уступать NoSQL-решениям в задачах с очень высокими нагрузками на запись и неструктурированными данными.
  • Сложность масштабирования — горизонтальное масштабирование (шардинг) требует дополнительных усилий.
  • Строгая схема — изменение структуры таблиц может быть трудоёмким.

Критика и альтернативы

В конце 2000-х годов с ростом объёмов данных и требований к высокой доступности возникло движение NoSQL, предлагающее альтернативные модели хранения (документоориентированные, графовые, ключ-значение, колоночные). Критики реляционных баз данных отмечают их избыточность для простых задач, сложность горизонтального масштабирования и жёсткость схемы. Тем не менее, реляционные базы данных остаются основным инструментом для большинства задач, требующих надёжности, согласованности и сложных запросов.

Источники

  • Кодд, Э. Ф. «A Relational Model of Data for Large Shared Data Banks». Communications of the ACM, 1970.
  • Дейт, К. Дж. «Введение в системы баз данных». 8-е издание, 2004.
  • Гарсиа-Молина, Г., Ульман, Дж., Уидом, Дж. «Системы баз данных: полный курс». 2003.
  • ISO/IEC 9075:2016 — стандарт языка SQL.
  • Ramakrishnan, R., Gehrke, J. «Database Management Systems». 3rd edition, 2003.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →