5

データベースには、ユーザーを特定の月にコースにサブスクライブするサブスクリプション モデルがあります。課題の種類が少ない。ユーザーは次のことができます。

  1. コース×月額プランをクレジットカードで購入
  2. アクティベーションキーを入力してコース x 月のサブスクリプションを購入する
  3. システム管理者は、ユーザーを x か月のサブスクリプションに割り当てます。

ユーザーがサブスクリプションを更新する場合、古いレコードは削除しません。サブスクリプション テーブルに新しいレコードを作成し、古いレコードを履歴として保持します。同じサブスクリプションが管理者によって更新された場合も、新しいレコードを作成します。また。ユーザーの現在のサブスクリプションは、最後のレコードによって識別されます。ユーザーが受講する有効期限は、最新の記録に表示されている日付です。たとえば、添付のスクリーンショットを確認すると。

ここに画像の説明を入力

ユーザー 1 には 3 つのサブスクリプションがあり、そのうちの 1 つはコースが 6 月 15 日に期限切れになる必要があると言っていますが、これがこのユーザーとコースの組み合わせの最新の記録であるため、実際の有効期限は 6 月 14 日です。

これらすべての記録を (既存のユーザー コースの有効期限を更新するだけでなく) 保持する理由は、この履歴が必要だからです。何か問題が発生した場合、いつでも間違いがあった場所を回復できます。

あなたは私の考えを持っていると思います.私の質問は、これが良い解決策であり、より良い実装のアイデアがどのように見えるかです.

御時間ありがとうございます。

4

2 に答える 2

1

ここに私が見るオプションがあります。

  1. 購読日が変更されるたびに新しいレコードを追加します。利点は、サブスクリプションを処理する 1 つのテーブルと、#2 とは対照的に DB への書き込みが少ないことですが、テーブルに不要なレコードが多くなります。

  2. 説明責任のために変更の履歴を保持する監査テーブルを追加し、変更があるたびに新しいレコードを追加するのではなく、サブスクリプション テーブルを編集します。ここでは、DB への 2 つの書き込みがありますが、よりクリーンなサブスクリプション DB と、監査用の別のテーブルがあります (検査が必要な場合)。

どちらが優れているか、または他の提案を知っている人はいますか?

于 2013-05-13T02:16:46.713 に答える