2017-04-06 34 views
0

我正在做一個非常簡單的數據庫在mysql中來跟蹤項目的移動。目前的紙張形式如下所示:項目移動日常收集數據庫設計系統問題

Date  totalFromPreviousDay NewToday LeftToday RemainAtEndOfDay 
1.1.2017 5      5   2   8 (5+5-2) 
2.1.2017 8      3   0   11 (8+ 3 -0) 
3.1.2017 11     0   5   6 (11+0-5) 

等等。在我的表中,我想使totalFromPreviousDay和RemainAtEndOfDay計算字段僅顯示在我的前端。這主要是因爲我們往往因爲錯誤而在紙上擦掉。我希望他們能夠根據對其他兩個領域的變化進行反映。因此,我做了我的表是這樣的:

id 
date 
NewToday 
LeftToday 

現在我面臨的問題是,我想選擇任何日期,並能夠說「有5個項目在這一天或從以前開始一天,然後增加5個,剩下0個,一天結束,有10個項目「

到目前爲止,我不能真正想到一個辦法。理論上,我想嘗試這樣的事情:如果請求的日期是2017年2月1日,則從開始收集數據的那一天開始。如果沒有,則循環通過0處的記錄並進行數學計算,直到找到要求的日期。

但是,這顯然是效率低下,我必須從第一次約會開始,直到最後一次。

我的方法沒問題,或者我應該在表格中加入列?如果第一個,在python/mysql中執行的方式是什麼?

回答

0

我認爲你必須先退後一步,並首先定義業務需求(這是值得的,因爲這些決定了你的表結構,所以與之前的股票工作人員交談)。

一個系統總是跟蹤股票和移動的當前水平。這是一個業務決策,您多久可以保存歷史庫存水平,這會影響您存儲數據的方式。

您可以保存當前庫存水平以及所有交易。在這種情況下,您需要將庫存水平存儲在交易表中。您甚至不必每天總結一筆交易,因爲每天的最後一筆交易無論如何都會有每日結賬庫存水平。

您可以選擇定期保存歷史庫存水平(以每日/每週/每月等爲基礎)。在這種情況下,您將擁有一個單獨的歷史庫存水平表,其中包含庫存編號,庫存名稱(名稱可能隨時間變化,因此可能是一個不錯的主意),日期和級別。如果您想知道任何時間點之間的歷史庫存水平,那麼您需要在查找的時間段之前採用最新的已保存庫存水平,並將所有事務總結到保存的時間段。

+0

@Shadow ....謝謝。其實,只有一種物品,所以沒有理由創建物品表。我們想要的基本上是在一個月的開始時有多少物品(因此,上一個月的最後一天剩下的最後一個物品計數)以及該月末(最後一天)剩餘的物品數量。 –

+0

好吧,我描述了一個適用於此的版本。 – Shadow