Вы хотите добавить к orders атрибут category из таблицы products(product_id, category) и не изменить количество строк заказов. Что важнее всего проверить про products, чтобы избежать дублирования?

AОтсутствие повторов order_id в заказах: кардинальность ключа JOIN в справочнике перед соединением можно не проверять
BУникальность product_id в справочнике: один к одному по ключу JOIN, и атрибутное соединение не создаёт дубликатов
CЗаполненность поля category на 100% во всех строках: при полном справочнике атрибутный JOIN не добавляет лишних строк
DИспользование DISTINCT после JOIN: повторы в справочнике не влияют на итоговое число строк заказов
Правильный ответ. Если справочник один к одному по ключу JOIN, атрибутный JOIN не вызывает дублирования строк.

Разбор

Проблемы начинаются, когда в справочнике на один product_id несколько строк — например, разные версии атрибутов. Тогда один заказ начинает соответствовать нескольким строкам и появляется дублирование. Проверка уникальности ключа — простой способ предсказать изменение числа строк ещё до расчёта метрик. Уникальность order_id в orders тут не поможет, заполненность category не имеет отношения к числу строк, а DISTINCT после JOIN маскирует дубли и легко искажает агрегаты.

Проверь себя · 1/3разбор после ответа
Вы соединяете таблицы пользователей и заказов по user_id, где у одного пользователя может быть много заказов (связь «один ко многим»). Как посчитать число пользователей, которые сделали хотя бы один заказ, и не получить дубли?
Открыть Карьерник в Telegram

Ещё вопросы по теме «JOIN и кардинальность»