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 в которой реализован нужный для меня функционал, чтобы посмотреть на структуру БД ?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 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
    Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы