PostgreSQL — это реляционная СУБД?

Ответ

Да, PostgreSQL — это объектно-реляционная СУБД (ORDBMS). Она основана на реляционной модели и строго следует принципам ACID, обеспечивая целостность данных.

Ключевые реляционные особенности:

  • Поддержка SQL (стандарт ANSI/ISO).
  • Связи между таблицами через внешние ключи (FOREIGN KEY).
  • Транзакции с уровнями изоляции.
  • Индексы (B-tree, Hash, GiST, SP-GiST, GIN, BRIN).
  • Представления (VIEW), хранимые процедуры и триггеры.

Пример создания связанных таблиц:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    amount DECIMAL(10, 2) NOT NULL
);

Помимо классической реляционной модели, PostgreSQL расширяет её, поддерживая JSONB, полнотекстовый поиск, геометрические типы и пользовательские типы данных.

Ответ 18+ 🔞

Да ты посмотри, какая штука-то интересная, ёпта! PostgreSQL — это ж не просто какая-то там реляционная база, а объектно-реляционная, понимаешь? ORDBMS, блядь. Всё как у взрослых: основа — реляционная модель, и ACID она соблюдает так, что мама не горюй, целостность данных — просто пиздец какая.

Ну, а если по-простому, что она умеет, эта зверюга:

  • SQL, блядь, самый что ни на есть стандартный, ANSI/ISO. Не какая-то своя поебота.
  • Связи между таблицами — через внешние ключи (FOREIGN KEY). Одна таблица на другую ссылается, как будто говорит: «Ты, сука, без меня нихуя не делай».
  • Транзакции, блядь, с разными уровнями изоляции. Можно всё красиво завернуть и откатить, если что-то пошло не так, ебать мои старые костыли.
  • Индексы — овердохуища разных видов: B-tree, Hash, GiST и прочие страшные аббревиатуры. Чтобы всё летало, а не ползало.
  • Представления, процедуры, триггеры — в общем, полный комплект для серьёзных дел.

Вот, смотри, как это выглядит в коде, простейший пример:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    amount DECIMAL(10, 2) NOT NULL
);

Видишь? Создали таблицу users. Потом orders. И в заказах user_id ссылается на users(id). ON DELETE CASCADE — это вообще магия, блядь: удалишь пользователя — и все его заказы нахуй автоматом посыпятся. Красота!

А самое-то, блядь, вкусное — это то, что она не застряла в каменном веке. Помимо этих всех табличек и связей, она ещё и JSONB жрёт, и полнотекстовый поиск делает, и геометрические фигуры считает, и свои типы данных можно придумать, если фантазия работает. В общем, не база, а мечта, ебать тебя в сраку.