2012-04-25 9 views
0

私の質問は、データの年間変化のデータベースを開発することに関連しています。このデータベースは本質的に大学のコース管理システム用ですので、そのシナリオで簡単な例を使用します。データベース設計のアドバイス - 年間データ

この例では、CareerFieldとCourseの2つのテーブルが存在します。これらの表は多種多様に定義できます。キャリア分野には多くのコースがあり、コースは多くのキャリア分野に属しています(あらゆる学位プログラムの英語のような基本的なクラスを考えてください)。

2012年には、「木工」という名前のコースを持つCarpentryというキャリアフィールドがあります。 2013年には、Carpentry and Designと呼ばれるキャリアフィールドがあり、基本的な木工コースがあります。

キャリアフィールドは新しいものではなく、名前を変更しましたが、歴史的な目的ですべての2012年(過去のすべての年)のデータを保持する必要があるため、Carpentryレコードの名前を単にCarpentry and Designに変更することはできません。

基本的には、前年のすべてのコースデータに基づいて新しい年を作成しなければなりません。コースが削除されたり、キャリアフィールドの名前が変更されたりすると、新しい年の変更が発生します。フロントエンドインターフェイスには、新年 - 既存のデータから2013年の間にコピーされたすべての表データ(前年のデータを引き継ぐために選択されたものを使用)。以前の年に関係しない新しいフィールドが追加される可能性があります。

このようなことを行うベストプラクティスは何ですか?私は毎年新しいテーブルを削除するより高いed ERPソフトウェア(例えばDatatel)を使用しました。これは冗長で悪い習慣ですが、私は2年未満でデータベースを開発しています。

私はこのようなシナリオをどのように扱うべきかアドバイスを求めています。実際のソリューションには、設計時に約16個のテーブルが含まれるため、上記の例では毎年のテーブルが複製されます。

ありがとうございます。

答えて

0

私は今年のあなたが言及したテーブルを使用し、歴史的な情報を格納する構造(異なる名前)の同じテーブルを使用します。 年が終了すると、現在の年の情報が履歴テーブルに転送されます。 既存のテーブルにいくつかのフィールドを追加する必要がある場合は、これらの変更を両方のテーブルに適用する必要があります(履歴テーブルと現在のテーブル) 履歴テーブルは読み取り専用で、読取り/書込み/更新用のテーブルと履歴用のテーブルは、レポートを抽出するためのものです。

0

毎年アーカイブする必要はなく、各用語のデータを適切なコースに関連付ける列が必要です。データが有効な日付を最初に記述した表が必要になります。

したがって、いつでも年に1回で、決して学業ではないことが分かっている場合は、AcademicYearIDを含むAcademicYearというテーブルを作成します。実際の年はPKである可能性があります(自動インクリメントを使用して、 StartDate(日付データ型の使用と必須)とEndDate(必須ではありませんが、日付データ型のままです)。今度は年ごとに分割できるすべての親テーブルにacademicYearIDを追加します。あなたのCareerFieldにはAcademicYearIDが追加されており、あなたのコースはCareerFieldテーブルを経由せずに学年度の問い合わせができるようにしたい場合にのみ追加されます。

これで、新しい年のデータを既存のすべてのルックアップデータ(コース、キャリアフィールド)を新しい学年にコピーできる最初の日に実行するようスケジュールされたジョブを作成してから、それを実行するスクリプトは、もはや使用したくないものを削除したり、新しいものを追加したりします。設計段階にあるときにこのプロセスを作成すると、毎年データを入力するプロセスが簡単になり、突然クラスをスケジューリングできなくなるため、スクランブルでは実行されません。

あなたの学期には、新しいレコードが新しいレコードの開始日またはそれ以前の日付になるように新しいレコードが追加されたときに、必ずしも必要でない終了日を記入するトリガーが必要ですあなたのビジネスルールまたは、終了日を入力してデータ入力時に入力することもできます。データ入力時にその日付がわかるかどうかによって異なります。

最後に、アクティブなものだけを表示するためにビューを作成することができます。ビューは、レポート以外のすべてに対して基本表の代わりに使用されます。

+0

非常に詳細な回答ありがとうございます。これは私がやることです。それは有り難いです。 – dekron

関連する問題