Я занимаюсь разработкой системы инвентаризации с использованием PHP, Mysql. Эта система имеет модуль покупки для добавления / обновления / увеличения количества и срока годности продуктов & модуль продажи для уменьшения / уменьшения количества товаров.
Теперь, что создает путаницу для меня и что мой настоящий вопрос заключается в том, что
Что является лучшим способом / логикой, чтобы отделить эти элементы, чтобы знать, сколько продуктов приобретено по цене 15 долларов США и новой цене 18 долларов США на странице продажи.
Должен ли я хранить 2 или более столбца количества в базе данных?
Должен ли я хранить один и тот же продукт более одного раза в моей базе данных?
В настоящее время я генерирую в среднем $ 15 и $ 18, затем добавляю это значение
как покупная цена продукта.
О, дорогие, ваши вопросы указывают на то, что вы действительно в начале проектирования баз данных. Стоит ли решать проблему такой сложности на столь ранней стадии? Ну да, почему бы и нет …
Ответы на ваши вопросы: 1. НЕТ !!! 2. Возможно.
Первая идея просто глупая. Думаю об этом. Что, если вы получите три разные цены на продукт, тогда вам понадобятся три столбца и так далее … не очень хорошая идея.
Второй вариант кажется хорошим решением. У вас есть один ряд из 20 предметов по 15 долларов, а другой ряд из 100 предметов по 18 долларов. Вы могли бы сделать большинство вещей с этим. Средняя цена? Скважина: (20 * 15 + 100 * 18) / (20 + 100). Легко. Но это быстро становится более сложным. Что если вы продали клиенту 110 товаров? Вам нужно будет поменять две строки, но как? 20 предметов из первого ряда и 90 со второго? Или все 100 со второго и 10 с первого. Вы не можете игнорировать эту проблему, вы должны установить строгие правила, как это сделать. И вы обнаружите, что сложность будет только увеличиваться, чем больше опций вы добавляете в свою систему. Это будет работать, но это будет непреклонным.
Однако есть и третий вариант, который вы не упомянули: каждому предмету на складе присваивайте свою строку в таблице. Это кажется пустой тратой пространства базы данных, но, подождите, это упрощает вещи. Средняя цена? Просто, просто вычислите среднюю цену столбца, содержащего цену. Даже если у каждого предмета есть другая цена, он будет одинаково сложным. Правила получения товаров со склада также могут быть простыми: просто используйте систему FIFO или FILO.
Таким образом, это последнее решение, безусловно, путь.
Не могли бы вы просто установить связь «один ко многим» с другим столом? У вас будет одна таблица ваших продуктов (product_id, product_name и т. Д.). Затем другая таблица, скажем product_inventory (product_inventory_id, product_id (внешний ключ к product.product_id), purchase_price (цена, за которую вы их приобрели), количество (количество этого товара по цене покупки)).