Урок 1.3 · Время чтения: ~10 мин
Реляционная база данных хранит данные в связанных таблицах. В этом уроке вы узнаете об основных строительных блоках — таблицах, столбцах, строках, первичных, внешних и уникальных ключах, а также об ограничениях — и поймёте, как модель ACID гарантирует надёжность транзакций даже при сбоях и параллельном доступе.
В предыдущем уроке мы познакомились с основными типами баз данных. Теперь мы глубже погрузимся в основные компоненты реляционных баз данных, которые имеют основополагающее значение для понимания того, как данные организованы и доступны с помощью SQL.

Реляционные базы данных организуют данные в структуры, называемые таблицами. Представьте таблицу как электронную таблицу:
Пример:
Давайте визуализируем простую таблицу "Клиенты":
| CustomerID | FirstName | LastName | |
|---|---|---|---|
| 1 | John | Doe | john.doe@example.com |
| 2 | Jane | Smith | jane.smith@example.com |
| 3 | David | Lee | david.lee@example.com |
Ключи — это важнейшая концепция в реляционных базах данных. Они используются для установления связей между таблицами и обеспечения целостности данных. Вот основные типы ключей:
Ограничение (constraint) — это правило, применённое к столбцу или таблице, которое СУБД соблюдает автоматически. Ключи (первичный, внешний, уникальный) — один из видов ограничений. Помимо них, в повседневном SQL используется ещё ряд важных ограничений:
| Ограничение | Назначение |
|---|---|
NOT NULL | Столбец всегда должен содержать значение; NULL недопустим. |
UNIQUE | Все значения в столбце должны быть уникальными. |
PRIMARY KEY | Объединяет NOT NULL + UNIQUE; однозначно идентифицирует строку. |
FOREIGN KEY | Значение должно совпадать с существующим значением в другой таблице. |
CHECK | Значение должно удовлетворять условию, например age >= 0. |
Например, в таблице customers можно представить такие ограничения:
customer_id выступает как PRIMARY KEY, то есть однозначно идентифицирует каждого клиента.email может иметь ограничение UNIQUE, чтобы два клиента не могли использовать один и тот же адрес.age может подчиняться правилу CHECK, например age >= 0, чтобы отрицательные значения не допускались.СУБД автоматически соблюдает эти правила и отклоняет некорректные изменения, что помогает поддерживать корректность данных без дополнительной логики в приложении.
При работе с реляционными базами данных ещё одной ключевой концепцией является модель ACID. ACID определяет свойства, которые делают транзакции безопасными и надежными.
Транзакция — это группа операций, рассматриваемая как единая единица работы. Например, перевод денег между двумя банковскими счетами обычно включает как минимум две операции:
Оба шага должны выполниться вместе, иначе не должен примениться ни один.
ACID означает:
Эти свойства критически важны для реальных систем, таких как банковские сервисы, электронная коммерция и управление складом, где частичные или некорректные изменения могут привести к серьезным проблемам.
Ключевые выводы урока:
NOT NULL, CHECK) автоматически соблюдаются СУБД на уровне базы данных.В следующем уроке мы рассмотрим основные типы данных реляционных баз данных и научимся выбирать подходящий тип для каждого столбца.
Первичный ключ однозначно идентифицирует каждую строку и не может содержать NULL. В таблице может быть только один первичный ключ. Уникальный ключ также обеспечивает уникальность, но допускает значения NULL, и таких ключей в таблице может быть несколько. Первичный ключ используется как основной идентификатор строки; уникальный — для обеспечения уникальности других столбцов, например email.
Да. Внешний ключ может ссылаться на любой столбец (или набор столбцов) с ограничением уникальности, не только на первичный ключ. Тем не менее ссылка на первичный ключ — наиболее распространённая и рекомендуемая практика.
Атомарность гарантирует, что вся транзакция откатывается, и база данных остаётся в том состоянии, в котором была до начала транзакции. Никакие частичные изменения не сохраняются.
Первичный ключ — это столбец или комбинация столбцов, которая однозначно идентифицирует каждую строку таблицы. Он должен быть уникальным, не может содержать NULL и может быть только один на таблицу. Он служит опорной точкой для ссылок внешних ключей из других таблиц.
Ссылочная целостность означает, что значение внешнего ключа в одной таблице всегда должно совпадать с существующим значением первичного ключа в referenced-таблице или быть NULL. СУБД обеспечивает это автоматически: попытка вставить «осиротевший» внешний ключ или удалить связанную строку будет отклонена, если не задано правило каскадного обновления/удаления.
ACID расшифровывается как Атомарность, Согласованность, Изолированность и Долговечность. Это гарантии, которые делают транзакции надёжными. Без ACID параллельные записи могли бы повреждать данные, частичные сбои оставляли бы базу в некорректном состоянии, а зафиксированные изменения могли бы теряться после сбоя. Именно ACID делает реляционные базы данных надёжными для финансовых, медицинских и других критически важных систем.