Разработка БД для истории ценообразования для нескольких поставщиков - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я пытаюсь спроектировать структуру БД (mysql) для моего проекта, который представляет собой онлайн-магазин для оптовой компании - я уже создал все, что касается продуктов, их вариантов и т. Д., Но у меня есть проблема с отслеживанием цены и исторические данные для нескольких поставщиков:

Ниже приведены основные предположения для проекта:

  • У нас будет несколько поставщиков для продуктов
  • Благодаря вышесказанному каждый товар будет иметь несколько разных цен
  • Мы хотим иметь возможность иметь исторические данные о ценах для каждого продукта у каждого поставщика

Вариант 1

Сначала я подумал о добавлении 2 таблиц в мою БД:

таблица поставщиков : supplier_id, name

таблица цен : id, product_id, price_supplier1, price_supplier2, price_supplier3, отметка времени

Однако в таком примере, когда мы хотим добавить другого поставщика, нам нужно добавить строку в базу данных (я не эксперт по БД, но, думаю, это не лучший подход)

Вариант 2

Другая идея состояла в том, чтобы просто иметь таблицу цен со следующими данными:

таблица поставщиков : supplier_id, name

таблица цен : id, идентификатор продукта, идентификатор поставщика, метка времени

Однако в этом случае, если у нас есть 5 поставщиков, мы получаем 5 записей, созданных для 1 продукта каждый день, поэтому давайте представим, что у нас есть только 1000 продуктов и мы хотим сохранить исторические данные за последние 6 месяцев - такая таблица будет расти очень быстро

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

1 Ответ

0 голосов
/ 05 сентября 2018

Вам следует перейти к варианту 2. Рекомендуется избегать частой реструктуризации таблиц, что вам придется делать в варианте 1 каждый раз, когда вы добавляете или удаляете поставщика (хотя MySQL довольно быстро справляется с этим в последних версиях). Лучше использовать один столбец для определения различных значений поставщика. Это также способствует повторному использованию запросов, когда вам не нужно беспокоиться об изменении значений столбцов или их полном отбрасывании. Кроме того, пространство не должно быть проблемой. Чтобы дать вам представление, если в вашей таблице цен будет 1 000 000 строк (6 месяцев), ее размер составит около 40-50 млн. (При условии, что используется только индекс первичного ключа). MySQL также предлагает сжатие и разбиение, чтобы уменьшить объем хранилища, если это действительно важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...