2017-04-22 122 views
0

我有Stock表。数据库,单独的表或列用于额外的字段?

sku 
quantity 
quantity_sold 
price 
seller 

StockExtra表中的产品,具有日期/时间属性(你能想到的赛事门票的)

stock # references stock 
quantity 
quantity_sold 
price 
date_at 
time_at 
datetime_rule # foreign key to another table, it is a rule that describes when events occur 

对于事件的门票,我用stock and seller从库存表,但使用量从StockExtra表。因为不同日期的票可以有不同的数量和价格。

我已经划分了表格,但并不确定这是否是最佳做法。

现在我需要创建另一个表来保持独立的市场的门店库存数据。
(我正在制造一个系统,卖家可以在多个商店销售产品时管理他的库存)

例如,可以在amazon.com和ebay.com上销售活动门票。 而每个商店的价格,数量可能会有所不同。

所以会有一对多的关系从StockStoreStock

Stock将持有的默认价格和数量汇总/ quantity_sold所有商店。 StoreStock将保存个别商店的数据。

由于相同的原因,我还需要从StockExtraStoreStock之间的一对多关系,即价格/数量可能会因事件票证的每个日期/时间而不同。

因此,以我目前的设置, 将有StockStockExtraStoreStock

即使与非票据产品的日期/时间相关的字段为空,最好是只有StockStoreStock

+0

@TimBiegeleisen我将股票字段添加到StockExtra。 (我的错误)“你可能过于复杂的事情。”请更具体一点,你是否暗示我应该合并Stock/StockExtra表格? – eugene

回答

0

你应该考虑通过以一致的方式藏在心里,降低了系统的复杂性。将复杂场景与简单场景保持在同一个表中。

通过保持在不同的地方相同的信息(例如Stock VS StockExtra,或Stock VS StoreStock)正在创建中,你的代码必须有额外的分支找到视情况而定的数据的情况。

当你为一个单一的交易数据后要去,分支是不是世界的末日,但它是更多的代码有编写,调试和维护。但是,当您追踪数据合计时,将它分散到多个潜在位置,使得您的数据检索太多更复杂。

我会建议保持一切在最详细的水平。因此,即使只有一个商店适用于特定情况,一切仍在StoreStock之内。然后,除非您有明显的性能问题,否则请勿从Stock中拆分StockExtra - 只需使用Stock中的可为空的列即可。

可以保留默认价格Stock,但为了维持代码的下一个人,请使用更具描述性的名称。我建议不要跟踪Stock表中的销售数量。只保留在StoreStock。不要保留预先计算好的数量。这将不可避免地出现问题。相反,跟踪数量增加(收据)和数量删除(销售),并动态计算手头的数量。这将避免库存对帐问题。

相关问题