Определение схемы таблиц для клиентов и их заказов

Создайте customers первой, затем purchases с customer_id INTEGER NOT NULL REFERENCES customers(id). Первичные ключи SERIAL обеспечат автогенерацию идентификаторов в PostgreSQL.

Короткий ответ

Что ответить на собеседовании

Создайте customers первой, затем purchases с customer_id INTEGER NOT NULL REFERENCES customers(id). Первичные ключи SERIAL обеспечат автогенерацию идентификаторов в PostgreSQL.

Подробный разбор

Ответ с пояснениями

Условие

Сформулировать SQL‑операторы, создающие две таблицы.

Таблица customers:

  • id — уникальный идентификатор (PRIMARY KEY, автогенерация, SERIAL).
  • name — имя клиента (TEXT, NOT NULL).

Таблица purchases:

  • id — уникальный идентификатор заказа (PRIMARY KEY, автогенерация, SERIAL).
  • customer_id — внешний ключ, указывающий на таблицу customers (INTEGER, NOT NULL).
  • purchase_date — дата оформления заказа (TIMESTAMP, NOT NULL).

Внешний ключ customer_id должен ссылаться на поле id таблицы customers.

Ответ

Создайте customers первой, затем purchases с customer_id INTEGER NOT NULL REFERENCES customers(id). Первичные ключи SERIAL обеспечат автогенерацию идентификаторов в PostgreSQL.

DDL по заданному контракту:

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL
);

CREATE TABLE purchases (
    id SERIAL PRIMARY KEY,
    customer_id INTEGER NOT NULL REFERENCES customers(id),
    purchase_date TIMESTAMP NOT NULL
);

CREATE INDEX purchases_customer_id_idx
    ON purchases (customer_id);

Индекс на внешнем ключе полезен для поиска заказов клиента; сам FOREIGN KEY автоматически такой индекс в PostgreSQL не создаёт. Удаление клиента с заказами будет отклонено: каскадное удаление условием не задано. TIMESTAMP здесь хранит дату и время без часового пояса.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее