私は Django で開発されるプロジェクトを設計していますが、設計哲学に関する質問がありました。私のアプリでは、今週のような情報を追跡する必要があります。これは、NFL の現在の週 (1-17) に関連しており、システム内の他のモデル (スケジュールと当日など) に基づいて計算できます。この情報は週に 1 回更新され、アプリで頻繁に使用されるため、この情報を独自のモデル (db テーブル) に保存し、更新を毎週実行することは理にかなっていますか?
同様に保存するのに役立つ可能性のある他の情報 (今週の最初と最後のゲームの日付/時刻) があるため、データを計算することはできますが、「今週の情報」のようなモデルがこれに適しています。急いで?
1 に答える
データはその場で計算できますが、「現在の週の情報」のようなモデルはこれに適していますか?
それは可能性があります。イースターの日付を計算することはできますが、それを行うアプリケーションはほとんどありません。計算は決して単純ではなく、エラーはバグ修正として扱う必要があります。ただし、イースターの日付をテーブルに格納すると、カレンダー データを更新できる人なら誰でもエラーを修正できます。
マーティン ルーサー キング デー (1 月の第 3 月曜日)、大統領の日 (2 月の第 3 月曜日)、レイバー デー (9 月の第 1 月曜日) などの米国の祝日を計算するのは簡単です。また、工場の生産週を計算するのも非常に簡単です。これは、いくつかの点で問題に似ています。
しかし、ビジネスでスケジューリング、見積もり、プロセス管理などに使用するテーブルを作成するときは、ビジネスにとって重要な日付 (たとえば、休日) をテーブルに格納するのではなく、テーブルに格納するのが好きです。手続き型 (計算) コード。主な利点は、プログラマーを必要とする代わりに、比較的熟練していない従業員がそれらを収集、レビュー、および承認または修正できることです。
だから、私があなたの立場なら、おそらく週をテーブルに保存するでしょう。副次的な利点 (または、あなたの場合は主な利点かもしれません) は、週を含むほとんどのクエリが開始日と終了日にインデックスを利用できることです。