-1

私が取り組んでいるプロジェクトでは、データを年ごとに追跡しています。ユーザーはシステムにログインし、データにアクセスする年を指定します。たとえば、ユーザーが 2004 年を指定すると、.jsp ページには 2004 年のデータが表示されます。

私の問題は、2013 年以降、1 つの .jsp ページのデータが異なり、現在のデータベース テーブル スキーマを変更する必要がありますが、2012 年以前の下位互換性を維持する必要があることです。

現在(2012年以前)、関連するデータベーステーブルには、単一の.jspで表示される「継続中の学生」と「新しい開始」の2つの列が表示されます。2013 年以降は、4 つの列を表示する必要があります。元の 2 つの列は、それぞれ学部生と大学院生の 2 つのサブカテゴリに分割されています。したがって、これらの新しい列を既存のテーブルに単純に追加することはできません。これは、第 3 正規形に違反するからです。

この状況を管理する最善の方法は何だと思いますか? 過去のデータを表示するための下位互換性を維持しながら、新しいデータを表示するにはどうすればよいですか?

4

1 に答える 1

1

いくつかのオプション:

  1. フィールドを導入し、古いデータの null を許可します。あなたはこの考えを拒否したと思います。
  2. 今後の新しいデータを格納するための新しいテーブル構造を作成します。(1)が必要ない場合は、少なくともオプションです。両方のテーブルからクエリを実行し、統一されたデータ セットを表示するビューを簡単に作成できます。UI でこれを処理し、クエリされた年に応じて 2 つの個別のストアド プロシージャを呼び出すこともできます。
  3. 新しい属性で新しいテーブルを作成し、必要に応じて元のテーブルに結合します。これにより、古いテーブルは同じままになり、新しいテーブルは古いデータの拡張にすぎません。年を取り込んで適切なデータを返す可能性のあるストアド プロシージャを作成します。

本当に考慮すべきことの 1 つは、古いデータが現在非アクティブになっていることです。もう書き込んでいない場合は、精神的に「アーカイブ」できるのは単なる履歴データです。その場合は、スキーマとデータをフリーズして、それ自体を存続させても問題ないと思います。

また、顧客がスキーマを再び変更する可能性があるかどうかも検討してください。だとしたら(1)がベストかも。

于 2013-01-18T21:02:29.250 に答える