бренды, они заносятся с разных маркет плейсов (wb, ozon)
Хочу отказаться от идентификаторов (id, autoincrement)
Хорошая ли практика делать primary key составной из двух полей:
external_id - внешний идентификатор продукта/бренда на площадке
platform_id - идентификатор площадки
И так, есть две таблицы:
- Бренды:
- name
- external_id
- platform_id
- Продукты:
- external_id
- platform_id
- brand_id (external_id из таблицы brands)
- name
То есть это выглядит примерно так:
CREATE TABLE brands (
name VARCHAR(255),
platform_id INT,
external_id INT,
PRIMARY KEY (external_id, platform_id),
);
CREATE TABLE products (
external_id INT AUTO_INCREMENT,
name VARCHAR(255),
platform_id INT,
brand_id INT,
PRIMARY KEY (external_id, platform_id),
FOREIGN KEY (brand_id, platform_id) REFERENCES brands (external_id, platform_id)
)
Идентификаторы (внешние идентификаторы) внутри одной площадки всегда уникальные.
Хочу услышать мнение более опытных людей, может что-то посоветуете получше?
А почему бы просто не вкрячить все в один столбец? Первая цифра будет указывать на маркетплейс условно, все остальные цифры - уникальный айдюк. Правда все равно хочется отдельный столбец для быстрого поиска вещей по конкретному маркету без использования like
Именно поиск будет по названию через эластик, если в один столбец, то там PrimaryKey будет char, думаю на типе INT будет быстрее работать
Ничего плохого тут нет.
Не не не, нарушение 1нф
Обсуждают сегодня