Каков наилучший способ закупать товары с разными закупочными ценами? Дата окончания срока?

Я занимаюсь разработкой системы инвентаризации с использованием PHP, Mysql. Эта система имеет модуль покупки для добавления / обновления / увеличения количества и срока годности продуктов & модуль продажи для уменьшения / уменьшения количества товаров.

Теперь, что создает путаницу для меня и что мой настоящий вопрос заключается в том, что

  • Предположим, у нас есть ПРОДУКТ A1 на нашем складе с количеством 20 и ценой
    ПРОДУКТ А1 был 15 долларов, когда мы его покупали.
  • Теперь мы хотим запастись этим товаром больше, например, мы хотим купить еще 100 товаров ПРОДУКТА А1, но теперь новая цена ПРОДУКТА А1 составляет 18 долларов.

Что является лучшим способом / логикой, чтобы отделить эти элементы, чтобы знать, сколько продуктов приобретено по цене 15 долларов США и новой цене 18 долларов США на странице продажи.

  1. Должен ли я хранить 2 или более столбца количества в базе данных?

  2. Должен ли я хранить один и тот же продукт более одного раза в моей базе данных?

В настоящее время я генерирую в среднем $ 15 и $ 18, затем добавляю это значение
как покупная цена продукта.

1

Решение

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

Ответы на ваши вопросы: 1. НЕТ !!! 2. Возможно.

Первая идея просто глупая. Думаю об этом. Что, если вы получите три разные цены на продукт, тогда вам понадобятся три столбца и так далее … не очень хорошая идея.

Второй вариант кажется хорошим решением. У вас есть один ряд из 20 предметов по 15 долларов, а другой ряд из 100 предметов по 18 долларов. Вы могли бы сделать большинство вещей с этим. Средняя цена? Скважина: (20 * 15 + 100 * 18) / (20 + 100). Легко. Но это быстро становится более сложным. Что если вы продали клиенту 110 товаров? Вам нужно будет поменять две строки, но как? 20 предметов из первого ряда и 90 со второго? Или все 100 со второго и 10 с первого. Вы не можете игнорировать эту проблему, вы должны установить строгие правила, как это сделать. И вы обнаружите, что сложность будет только увеличиваться, чем больше опций вы добавляете в свою систему. Это будет работать, но это будет непреклонным.

Однако есть и третий вариант, который вы не упомянули: каждому предмету на складе присваивайте свою строку в таблице. Это кажется пустой тратой пространства базы данных, но, подождите, это упрощает вещи. Средняя цена? Просто, просто вычислите среднюю цену столбца, содержащего цену. Даже если у каждого предмета есть другая цена, он будет одинаково сложным. Правила получения товаров со склада также могут быть простыми: просто используйте систему FIFO или FILO.

Таким образом, это последнее решение, безусловно, путь.

1

Другие решения

Не могли бы вы просто установить связь «один ко многим» с другим столом? У вас будет одна таблица ваших продуктов (product_id, product_name и т. Д.). Затем другая таблица, скажем product_inventory (product_inventory_id, product_id (внешний ключ к product.product_id), purchase_price (цена, за которую вы их приобрели), количество (количество этого товара по цене покупки)).

1

По вопросам рекламы [email protected]