我们正在建立一个电子商务系统,我们需要一些帮助来决定确定每种产品可用库存数量的最佳方法。
假设我们有表“products”,“products_in”和“products_out”。 “products_in”记录了我们增加产品数量的所有交易(例如,当我们从批发供应商处购买产品时)。虽然“products_out”记录了我们减少产品数量的所有交易(例如,当我们的客户购买产品时)。
在我们的应用中,检索我们产品的可用数量比在“products_in”和“products_out”表中编写/更新记录更常见。鉴于此,使用依赖于“products_in”和“products_out”的MySQL视图并计算可用库存是否比每次查询时动态计算它更有效?每当“products_in”或“products_out”中有新记录时,是否会重新计算视图上的值?或者视图会在每次查询时重新计算值(在我们的情况下这可能相当昂贵)?
答案 0 :(得分:0)
将使用依赖于" products_in"的MySQL视图。和" products_out"并且每次我们查询时,计算可用库存比计算它更有效吗?每次在" products_in"中创建新记录时,是否会重新计算视图上的值或" products_out"?或者视图会在每次查询时重新计算值(在我们的情况下这可能相当昂贵)?
让我们考虑每种情况下的db步骤:
案例1 如果您在每次产品进入或离开时计算available_stock
并将其存储在说product
表
Insert
表中的product_in
查询或产品发出,Insert
表中的product_out
查询available_stock
列中更新查询。 (假设这里有10个产品或10个产品,将会有10个单独的查询被解雇) - 贵吗? 案例2 如果您每次都在视图中计算available_stock
而不将其存储在数据库中
product_in
和product_out
表格中获取记录(仅适用于您需要的少数产品available_stock
),进行一些数学计算,并显示估算的库存 - 昂贵?我个人会选择案例2,因为它涉及较少的数据库事务,然后案例1涉及大量交易以保持股票同步。
脚注在旁观者中,我绝对可以说,如果你是硬核和面向对象的程序员,那么那么你的db映射肯定违反了基本原理。 Products_in
,Products_out
都是记录广告资源/股票交易的相同实体(对象)(如Father
,Mother
实体为Persons
),因此您应该将它们封装到一个通用表ProductInOutData
中。
在ProductInOutData
中,您可以添加具有in
值或out
值的枚举。在一个表中同时包含in
和out
记录不仅可以提高可读性和可访问性,还有助于轻松计算进出的产品,使案例2更轻量级。