Конструирование схемы БД для рекламного сервиса

Задайте первичные ключи, внешние ключи campaign_id и ad_id, обязательные поля и проверку диапазона дат. Индексы внешних ключей создайте отдельно.

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

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

Задайте первичные ключи, внешние ключи campaign_id и ad_id, обязательные поля и проверку диапазона дат. Индексы внешних ключей создайте отдельно.

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

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

Условие

Разработать набор таблиц в PostgreSQL, указать их столбцы, типы данных и установить связи между ними с помощью FOREIGN KEY. Спроектировать три таблицы, которые будут хранить данные о рекламных кампаниях, объявлениях и креативах (изображениях): campaigns — таблица рекламных кампаний id name start_date end_date status

ads — таблица объявлений, относящихся к кампаниям
    id
    campaign_id (внешний ключ, ссылается на campaigns)
    title
    description
    status

creatives — таблица креативов с изображениями для объявлений
    id
    ad_id (внешний ключ, ссылается на ads)
    image_url
    format

Ответ

Задайте первичные ключи, внешние ключи campaign_id и ad_id, обязательные поля и проверку диапазона дат. Индексы внешних ключей создайте отдельно.

CREATE TABLE campaigns (
    id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    name text NOT NULL,
    start_date date NOT NULL,
    end_date date NOT NULL,
    status text NOT NULL,
    CHECK (end_date >= start_date)
);
CREATE TABLE ads (
    id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    campaign_id bigint NOT NULL REFERENCES campaigns(id),
    title text NOT NULL,
    description text NOT NULL DEFAULT '',
    status text NOT NULL
);
CREATE TABLE creatives (
    id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    ad_id bigint NOT NULL REFERENCES ads(id),
    image_url text NOT NULL,
    format text NOT NULL
);
CREATE INDEX ads_campaign_idx ON ads(campaign_id);
CREATE INDEX creatives_ad_idx ON creatives(ad_id);

Допустимые статусы и форматы закрепите CHECK или справочниками после согласования списка. По умолчанию связанные записи мешают удалению родителя; ON DELETE CASCADE добавляют только при желаемом каскадном удалении.

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

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

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

Подробнее