Это вопрос не о "программировании" (не относится ни к какому языку или базе данных), но еще и о дизайне и архитектуре. Это также вопрос типа "Какой лучший способ сделать X". Надеюсь, это не вызывает много "религиозных" споров.
В прошлом я разработал системы, которые так или иначе сохраняют некоторую форму инвентаризации предметов (не уместно, какие предметы). Некоторые используют языки/БД, которые не поддерживают транзакции. В тех случаях я решил не сохранять количество предметов под рукой в поле в записи позиции. Вместо этого подсчитывается количество на общую сумму инвентаря - общее количество проданных запасов. Из-за программного обеспечения практически не было расхождений в инвентаре. Таблицы правильно проиндексированы и производительность хороша. Существует процесс архивирования, если количество записей начинает влиять на производительность.
Теперь, несколько лет назад, я начал работать в этой компании, и я унаследовал систему, которая отслеживает инвентарь. Но количество сохраняется в поле. Когда запись регистрируется, полученное количество добавляется в поле количества для элемента. Когда товар продается, количество вычитается. Это привело к расхождениям. По-моему, это неправильный подход, но предыдущие программисты здесь клянутся.
Я хотел бы знать, существует ли консенсус относительно того, каким правильным способом является проектирование такой системы. Кроме того, какие ресурсы доступны, распечатаны или онлайн, чтобы получить рекомендации по этому вопросу.
Спасибо