2017-04-06 5 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計算フィールドを作成したいと思います。これは、主に、エラーのために紙で消去される傾向があるからです。他の2つのフィールドの変更に基づいて反映されるようにします。今、私が直面しています問題は、私は、任意の日付を選択して、その日の開始時や、前から5つの項目があった」と言うことができるようにしたい

id 
date 
NewToday 
LeftToday 

:そのように、私はこのように私のテーブルをしました日が5回追加され、0が残り、10日が終了しました。 "

これまでのところ、私はそれについては考えていません。理論的には、私はこのようなことを試してみたい:要求された日が2017年2月1日であれば、データ収集を開始した日である0から開始する。そうでない場合は、0のレコードをループし、要求された日付が見つかるまで数式を実行します。

しかし、それは毎回最後までフォームの最初の日付を開始する必要があるので、明らかに非効率です。

私のアプローチはOKですか、それともテーブルに列を含める必要がありますか?最初の場合は、python/mysqlでそれを行う方法は何でしょうか?

答えて

0

私は少し前に戻ってビジネスのニーズを定義しなければならないと思います(前に株式で働いていた人と話すことは価値があります)。

システムは、常に在庫の現在のレベルと動きを追跡します。過去の在庫レベルをどれくらいの頻度で保存するかはビジネス上の決定であり、これはデータの保存方法に影響します。

すべての取引とともに現在の在庫レベルを保存することができます。この場合、取引レベルに在庫レベルを格納します。あなたは1日の取引を合計する必要はありません。それは、1日の最後の取引には、毎日の取引終了在庫レベルがあるためです。

歴史的な在庫レベルを定期的に(毎日/毎週/毎月などで)保存することができます。この場合、株式ID、株価(名前は時間の経過とともに変更される可能性がありますので、保存することをお勧めします)、日付、レベルを含む別の履歴在庫レベルテーブルがあります。保存されたポイント間の任意の時点の過去の在庫レベルを知りたい場合は、探している期間より前に最新の保存済み在庫レベルを取得し、すべての取引を保存期間に要約する必要があります。

+0

@ Shadow ....ありがとう。実際には、アイテムの種類だけがあるので、アイテムテーブルを作成する理由はありません。私たちが望むのは、基本的に1ヶ月の初めにそこにあったアイテムの数(前の月の最後の日から最後に残ったアイテムの数)と、その月の終わり(最後の日)に残ったアイテムの数です。 –

+0

さて、私はあなたにこれについて動作するバージョンを説明しました。 – Shadow