DBの設計について

野球の成績管理機能を作ろうとしています。
どのような設計をすることが最適なのかお聞きしたいです!

現状としては
2つのTypeを用意しています。
・打撃成績(試合ごとの情報、(例)ある試合での打数、四死球数、本塁打数など)
・通算打撃成績(上記の打撃成績を積み重ねた通算の成績)

そのうえで、ワークフローにて通算打撃成績を計算しているのですが、
①前回までのの通算成績に新しい成績を加える形で通算成績を更新する。
②これまでの全ての打撃成績をまとめて通算成績を計算する。
(わかりにくすぎると思うので、写真で補足します:bowing_man:‍♂)

②の方が間違いが起きにくい、もしくは間違いが生じた際に訂正しやすいという利点があると思うのですが、一方でデータが増えるごとに処理が重たくなるという欠点もあるのかなと考えています。

①、②のどちらの方が良いか、またDB設計の観点などから他の良い方法があればご教示いただきたいです!

よろしくお願いいたします。

質問者
②これまでの全ての打撃成績をまとめて通算成績を計算する。

①前回までのの通算成績に新しい成績を加える形で通算成績を更新する。

回答者
②です。
①の場合は、その時々でレポート上げる必要がある場合は別ですが、そもそも、通算打撃成績を出力することが必要な場合には、途中式をわざわざデータに保管する必要はないと思います。
但し、
下記の説明にある通り、長すぎるワークフローはスピードの観点からは望ましくないと思います。
Move lengthy actions to API workflows
Sometimes you may need to have really long workflows, with lots of actions, like the one below:
Optimize for speed
https://docs.airdev.co/bubble-development-guide/steps/develop/optimize-speed
②で動作が重くなる場合には、計算式部分をAirtableなどで計算させるのが良いと思います。
結果だけをBubbleで出力させるイメージです。
Airtable 側でも計算式結構あります。
【参考】Leveraging formulas in Airtable

過去 Bubbleで偏差値の計算するときも遅くなったときも、もとやじさんがそれで対応してた記憶があります。

質問者
つばささん、ありがとうございます!!!
なるほど、この場合は②の方が良いのですね。
通算打撃成績を出力することが必要な場合には、途中式をわざわざデータに保管する必要はない
bubbleで算出しようとするといくつかの成績に関して複数回の処理が必要(一つの式で算出しようとするとめっちゃ面倒臭い)だったので、ワークフローで記録して、簡単にテキストで表示できるようにしていました!
ただ、その作業があまり良くないなという感覚があったので、実はこの作業をairtableでしようとしたことがあるんですよね・・・
結局計算式的に実現できず、断念して・・・
airtableに関しては勉強不足がすぎるので、ちょっともう一度みてみます!!!:man-bowing:

参考画像

参考URL

https://docs.airdev.co/bubble-development-guide/steps/develop/optimize-speed

https://docs.airdev.co/bubble-development-guide/steps/develop/optimize-speed