База Hintsage

Проектирование схемы и ограничения

Ключи, нормализация, ограничения целостности и моделирование реляционных данных.

Практика

Вопросы: Проектирование схемы и ограничения

В каталоге товаров список тегов хранится в одном текстовом поле. Какое нарушение нормализации показывает такая схема?

CREATE TABLE product (
    product_id INTEGER PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    tags VARCHAR(500) NOT NULL -- например: 'sql,backend,db'
);

В системе бронирований номер помещения должен быть уникальным только среди активных бронирований, а завершённые записи могут повторять его. Какое решение на уровне схемы надёжно выразит это правило?

В PostgreSQL два столбца должны принимать только процентные значения от 0 до 100. Как спроектировать схему, чтобы это правило задавалось один раз?

CREATE TABLE product (
    discount_percent NUMERIC
        CHECK (discount_percent BETWEEN 0 AND 100)
);

CREATE TABLE campaign (
    discount_percent NUMERIC
        CHECK (discount_percent BETWEEN 0 AND 100)
);

Для иерархии категорий внешний ключ допускает, чтобы категория стала родителем самой себя. Какое ограничение добавить, чтобы запретить именно такую связь?

CREATE TABLE category (
    category_id INTEGER PRIMARY KEY,
    parent_id INTEGER,
    name VARCHAR(100) NOT NULL,
    FOREIGN KEY (parent_id)
        REFERENCES category(category_id)
);

Показано 21–40 из 50

Восстановление доступа