Современные базы данных — сложные системы. Представьте, вы собираете деньги на подарок другу и записываете на бумаге, кто сколько дал. Таблица с именами и суммами — это простая база данных. В цифровом пространстве можно использовать Excel. Это удобнее: можно редактировать, сортировать и удалять данные. Но достаточно ли этого для растущей базы данных? Нет. С ростом объёма данных их приходится связывать между собой, и Excel становится неудобен.
Реляционные базы данных
Например, создавая аналог YouTube, как хранить информацию о пользователях, каналах, подписках, лайках? Хранение всего в одной таблице будет неудобно и медленно. Решение — разделить сущности на несколько таблиц: пользователи, каналы, видео. Затем связать данные: кто создал канал, какое видео на каком канале. Получаются связанные таблицы, по-английски — relation, отсюда название — реляционные базы данных. Это один из самых распространённых типов баз данных. Такой процесс называется нормализацией — избавление от избыточных данных. Для идентификации каждой записи вводится специальное поле — ID, Primary Key (первичный ключ). В таблице, ссылающейся на него, он называется Foreign Key (внешний ключ).
Типы связей между таблицами
Разберём типы связей:
- Один-ко-многим (One-to-Many) или многие-к-одному (Many-to-One): Например, у каждого видео один канал, но на одном канале много видео.
- Один к одному (One-to-One): Редкий тип связи, часто используется для безопасности. Например, если на аналоге YouTube разрешено создавать только один канал на пользователя.
- Многие ко многим (Many-to-Many): Используется промежуточная таблица связей, соединяющая два отношения «один ко многим». Например, таблица лайков, где хранятся ID пользователей и ID видео, которые они лайкнули.
SQL: язык структурированных запросов
Для управления базами данных используется язык структурированных запросов — SQL (Structured Query Language, произносится как эскьюэль или сиквел). Например, чтобы найти названия всех видео с одного канала, используется запрос:
SELECT name FROM videos WHERE channel_id = 201;
Это означает: выбери (SELECT) имена (name) из (FROM) таблицы видео (videos), где (WHERE) ID канала (channel_id) равен 201. Для объединения данных из нескольких таблиц используется оператор JOIN.
SQL позволяет добавлять, удалять и изменять данные и таблицы. Важно учитывать схему базы данных (Database schema), описывающую структуру таблиц, полей и ограничений. Добавление или удаление столбца затрагивает все данные в таблице.
Ограничения и транзакции
Ограничения необходимы для целостности данных. Первичный и внешний ключи гарантируют, что запись не будет ссылаться на несуществующий ID. Другие ограничения предотвращают дубликаты или пустые данные.
Транзакции позволяют объединить несколько SQL-запросов в один. Например, вставка данных в одну таблицу и указание ID вставленной записи во второй. Без транзакций, при обрыве соединения, может возникнуть несоответствие данных. Транзакции гарантируют целостность данных даже при ошибках.
Транзакции помогают реляционным базам данных соответствовать требованиям ACID:
- Atomicity (Атомарность): Операция выполняется целиком или никак.
- Consistency (Согласованность): Данные соответствуют правилам и ограничениям.
- Isolation (Изолированность): Одновременные транзакции не пересекаются.
- Durability (Надежность): Выполненные транзакции сохраняются даже при сбоях.
Примеры реляционных баз данных
Примеры реляционных баз данных: Microsoft SQL Server, Oracle Database, MySQL, MariaDB, PostgreSQL. Существуют также нереляционные базы данных NoSQL.