# Реляционные

{% hint style="info" %}
**Реляционная база данных** (англ. *relation* — отсюда и название модели) — это составленная по реляционной модели база данных, в которой данные, занесенные в таблицы, имеют изначально заданные отношения. Сами таблицы в такой базе данных также соотносятся друг с другом строго определенным образом. Реляционные базы данных используют целый комплекс инструментов, которые обеспечивают целостность данных, т. е. их точность, полноту и единообразие.
{% endhint %}

## **Транзакция. ACID.**

**Транзакция** — это комплекс последовательных операций с применением операторов SQL, имеющих определенную цель. Все транзакции должны отвечать четырем требованиям ACID:

* **Атомарность** (англ. *atomicity*) — транзакция является неделимым блоком и выполняется или полностью, или никак.
* **Согласованность** (англ. *consistency*) — завершенная транзакция сохраняет согласованность базы данных.
* **Изолированность** (англ. *isolation*) — параллельные транзакции не могут влиять друг на друга.
* **Устойчивость** (англ. *durability*) — никакой сбой в системе не может влиять на результат завершенной транзакции.

Подробнее в главе:

{% content-ref url="/pages/YczbaXjP9GEPVNFh3Pje" %}
[Транзакции](/hard-skills/bazy-dannykh/relyacionnye/tranzakcii.md)
{% endcontent-ref %}

## SQL

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

Подробнее в главе:

{% content-ref url="/pages/EplcpL7XCoLgWFNF59em" %}
[SQL](/hard-skills/bazy-dannykh/relyacionnye/sql.md)
{% endcontent-ref %}

## Констрейты <a href="#parameters" id="parameters"></a>

* NOT NULL
* UNIQUE
* CHECK
* DEFAULT
* PRIMARY KEY (ПК, Первичный ключ)
* FOREIGN KEY (ВК, Внешний ключ)

Подробнее в главе:

{% content-ref url="/pages/rtXyedbaGeIO7HnA5ork" %}
[Констрейты](/hard-skills/bazy-dannykh/relyacionnye/konstreity.md)
{% endcontent-ref %}

## Основные характеристики реляционных баз данных <a href="#parameters" id="parameters"></a>

| Признак                                    | Пояснение                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Множество сущностей**                    | Объекты со строго определенным набором атрибутов, с помощью которых они связываются между собой, формируют понятную и простую для восприятия структуру.                                                                                                                                                                                 |
| **Табличный формат**                       | Такой формат гарантирует высокий уровень структурированности с жесткими логическими взаимосвязями, минимальный уровень избыточности данных, их согласованность и целостность.                                                                                                                                                           |
| **Язык SQL**                               | SQL является стандартизированным средством общения пользователя с базой данных. Он очень формальный, что делает его удобным и простым в изучении. SQL гарантирует точный результат даже при сложном многоуровневом запросе.                                                                                                             |
| **Масштабирование по вертикали**           | Реляционные базы данных хорошо масштабируются по вертикали. Но это значит, что по мере накопления информации в какой-то момент ее обработка потребует больших аппаратных ресурсов и финансовых затрат.                                                                                                                                  |
| **Масштабирование по горизонтали**         | Горизонтальное масштабирование, подразумевающее распределение таблиц данных по множеству серверов, является слабой стороной реляционных баз данных. С разрастанием системы появляются задержки в обновлении данных. В какие-то моменты нарушается принцип целостности данных, что может негативно отразиться на пользовательском опыте. |
| **Наличие требований к параметрам данных** | Реляционные базы данных умеют работать только со структурированными данными. Но современный цифровой мир полон неструктурированных данных (например, фото и видео), к которым нельзя применять принципы реляционной модели.                                                                                                             |

## Примеры

### MySQL

Это открытая СУБД, купленная Oracle. С ней работают (41,09%) всех разработчиков (по [результатам](https://survey.stackoverflow.co/2023/#section-most-popular-technologies-databases) опроса, который в 2023 году провёл сайт StackOverflow\.com).

Главные её преимущества — бесплатность и высокая скорость работы с данными. MySQL создавалась для обработки огромных массивов информации в промышленных масштабах, но благодаря доступности и быстродействию оккупировала Всемирную паутину, заслужив звание «СУБД всея интернета». И сегодня MySQL всё ещё самая удобная СУБД для работы с интернет-страницами и веб-приложениями.

### SQLite

Основным ее достоинством считается встраиваемость, которая обусловлена тем, что SQlight в отличие от остальных СУБД является не приложением на подобие «клиент-сервер», а подключаемой библиотекой.

### PostgreSQL

Её можно назвать самой продвинутой. Это не просто реляционная, а объектно-реляционная свободная СУБД.

PostgreSQL поддерживает не только типы данных, которые есть в других реляционных СУБД. Помимо числовых, текстовых, булевых и других стандартных типов, в ней можно хранить и обрабатывать геометрические и денежные данные, сетевые адреса, JSON, XML, массивы, а также создавать собственные типы данных.

Источники:

* <https://cloud.yandex.ru/docs/glossary/relational-databases>
* <https://skillbox.ru/media/code/sql_i_nosql_in_i_yan_v_mire_baz_dannykh>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.system-analyst-base.ru/hard-skills/bazy-dannykh/relyacionnye.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
