Задумывались ли вы об использовании триггеров для обновления таблицы акций?
В идеальном мире сумма всех изменений равна текущему количеству товаров на складе. В реальном мире сумма изменений является скорее статистическим предиктором количества товаров на складе. Если вы хотите сделать реальный мир идеальным, вам придется учитывать все возможные изменения в этом числе. Таким образом, помимо покупки и продажи, вам нужны типы транзакций для первоначального запаса, для кражи, стихийного бедствия, пожертвования для Красного Креста и т. Д. Вам понадобятся фиктивные транзакции для корректировки счета, если предиктор и фактическое количество предметов расходятся для некоторых непредвиденных причина. Все, что будет загромождать ваши таблицы транзакций.
Аргумент производительности вашего босса тоже действителен. Каждый раз, когда вам нужно количество товаров на складе, вы должны суммировать все транзакции. Если у вас их много, это может стать узким местом в производительности, даже если вы правильно проиндексировали таблицу транзакций, чтобы вы могли сделать сумму из индекса.
И не совсем согласен, что биржевая таблица нарушает нормализацию. Количество товаров, которые у вас есть в наличии на данный момент, и количество товаров, которые были куплены или проданы, концептуально не совпадают, это разные цифры, которые связаны бизнес-правилом, согласно которому ваш бизнес покупает и продает их (скорее чем производство и передача их Красному Кресту), и, как описано выше, они идеально соотносятся только в идеальном мире.