Chvalov
@Chvalov

Как работать с множеством прайс-листов в БД MySQL?

Как правильно организовать работу с прайс-листами для интернет магазина ?
Есть 4-6 поставщиков, некоторые товары повторяются, разнятся лишь цены и места складов

Набросал маленькую схему:
Производители:
CREATE TABLE product__brands (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  brand VARCHAR(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Товары:
CREATE TABLE product (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  image VARCHAR(128) NULL DEFAULT NULL,
  price DECIMAL(13,6) NOT NULL,
  brand INT(10) UNSIGNED NOT NULL,
  mpn_number VARCHAR(64) NOT NULL COMMENT 'Артикул товара',
  PRIMARY KEY (`id`),
  INDEX product_brand_idx (mpn_number,brand),
  CONSTRAINT FK_brand_id FOREIGN KEY (`brand`) REFERENCES product__brands(`id`)
) ENGINE=InnoDB;

Также есть таблица product_details в которой характеристики/атрибуты и т.п.

Но больше всего интересует как организовать работу с прайс-листами поставщиков
Прайсы обновляются каждый день, как мне обновлять наличие товара на сайте, сейчас в голове очень тупая мысль ждать прайсы от всех, после чего товары которые есть в наличии сбрасывать в 0 и парсить данные с прайсов.

Есть ли CMS в которой реализован нужный для меня функционал, чтобы посмотреть на структуру БД ?
  • Вопрос задан
  • 523 просмотра
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
производитель товаров или владелец торговой марки
Brand: 
  name
...


Каталог, как тег товара
То что помечено знаками вопроса странно называется или не имеет смысла
Если каталог = теги, то они не должны иметь вложенности
Теги плоская структура
Иерархия сама по себе геморная вещь
Реализация иерархии своими силами - требует неплохих навыков
Catalog: 
  name
  name_lang2
  description
  description_lang2
  meta_description
  meta_description_lang2
  meta_keywords
  meta_keywords_lang2

  parent -- ???
  status --???
  top --???
  left_key 
  right_key


Товар
Product: 
  mpn  -- Manufacturer part number

  mpn_fix  -- ???

  catalog = ManyToMany(Catalog)
  brand = ForeignKey(Brand)
  
  image
  -- для ускорения, после импорта прайса от поставщика,
  -- можно перекалькулировать поля
  price
  price_median
....


Поставщик
Если поставщик имеет несколько складов, то данная таблица будет складом,
а таблица поставщиков отдельно
от таблицы Склад будет идти связь по FK к поставщику
Supplier:
  name
  name_lang2
  address
  phone
  website
...


Product_price:
  supplier = ForeignKey(Supplier)
  product = ForeignKey(Product)

  price
  -- вариант с сохранением истории цен
  date_time
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы