Ответ
В реляционных БД существует три основных типа связей между таблицами:
-
Один к одному (One-to-One, 1:1): Одна запись в таблице А связана не более чем с одной записью в таблице Б, и наоборот. Часто используется для разделения редко используемых или чувствительных данных.
- Пример (DevOps-контекст): Таблица
servers(основные данные) иserver_secrets(пароли, ключи).
- Пример (DevOps-контекст): Таблица
-
Один ко многим (One-to-Many, 1:N): Одна запись в таблице А может быть связана с несколькими записями в таблице Б, но запись в Б ссылается только на одну запись в А. Самый распространенный тип.
- Пример: Таблица
environments(prod, stage) и таблицаdeployments. В одно окружение может быть сделано множество деплоев.
- Пример: Таблица
-
Многие ко многим (Many-to-Many, M:N): Записи в таблице А могут быть связаны с несколькими записями в таблице Б, и наоборот. Реализуется через промежуточную таблицу связей (junction table).
- Пример (DevOps): Таблица
serversи таблицаapplications. Один сервер может хостить несколько приложений, а одно приложение может быть развернуто на нескольких серверах (кластер).
- Пример (DevOps): Таблица
-- Пример связи M:N для серверов и приложений
CREATE TABLE servers (
id SERIAL PRIMARY KEY,
hostname VARCHAR(255) NOT NULL
);
CREATE TABLE applications (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
-- Промежуточная таблица
CREATE TABLE server_application (
server_id INT REFERENCES servers(id) ON DELETE CASCADE,
application_id INT REFERENCES applications(id) ON DELETE CASCADE,
PRIMARY KEY (server_id, application_id)
);