3つのテーブル(以下を参照)がありTable A
、製品について説明し、Table B
さまざまな日付の在庫情報を保持し、さまざまTable C
な日付の各製品の価格を保持しています。
Table A
------------------
product_id product_name
1 book
2 pencil
3 stapler
... ...
Table B
------------------
product_id date_id quantity
1 2012-12-01 100
1 2012-12-02 110
1 2012-12-03 90
2 2012-12-01 98
2 2012-12-02 50
... ... ...
Table C
-------------------
product_id date_id price
1 2012-12-01 10.29
1 2012-12-02 12.12
2 2012-12-02 32.98
3 2012-12-01 10.12
私のJavaアプリケーションの多くの部分で、各製品のドル価値が何であるかを知りたいので、次のクエリを実行することになります
select
a.product_name,
b.date_id,
b.quantity * c.price as total
from A a
join B b on a.product_id = b.product_id
join C c on a.product_id = c.product_id and b.date_id = c.date_id
where b.date_id = ${date_input}
私は今日、上記のクエリをビュー(日付条件を除く)にしてから、ビューに特定の日付をクエリして、クエリが次のようになるようにすることができると考えました。
select * from view where date_id = ${date_input}
そのようなロジックの適切な抽象化レベルがどこにあるのかわかりません。Javaコード(設定ファイルから読み取る)にする必要がありますか、それともデータベースのビューにエンコードする必要がありますか?
私がそれをビューとして言いたくない唯一の理由は、時間の経過とともに、カバーする日付が増えるため、参加が高価になることです。私は通常、過去1か月分のデータにのみ関心があります。 。おそらく、ストアドプロシージャの方が優れていますか?このロジックを抽象化するのに適した場所でしょうか?