sql >> データベース >  >> RDS >> Sqlserver

時間の経過とともにゆっくりと変化するデータをモデル化するにはどうすればよいですか?

    私も同様の問題を抱えていました.1日に1回、大きなフラットファイルがデータベースにインポートされました。ほとんどのデータは変更されていません。

    テーブルに、開始日と終了日の 2 つの列を追加します。 ending_date のデフォルト値は、将来のある時点でなければなりません。

    1 つのファイルを次のファイルと比較するには、両方をキー列で並べ替えてから、各ファイルから 1 行を読み取ります。

    • キーが等しい場合:残りの列を比較して、データが変更されているかどうかを確認します。行データが等しい場合、その行は既にデータベースにあり、何もする必要はありません。異なる場合は、データベース内の既存の行を今日の終了日で更新し、今日の開始日で新しい行を挿入します。両方のファイルから新しい行を読み取ります。
    • 古いファイルのキーの方が小さい場合:行は削除されています。終了日を今日に更新します。古いファイルから新しい行を読み取ります。
    • 新しいファイルのキーが小さい場合:行が挿入されました。 start_date が今日の行をデータベースに挿入します。新しいファイルから新しい行を読み取ります。

    両方のファイルからすべてを読み取るまで繰り返します。

    任意の日付で有効だった行をクエリするには、start_date と end_date の間の where 句 test_date で選択するだけです。



    1. シェルスクリプトからMySQLコマンドを実行する方法は?

    2. PostgreSQLのデータストアの比較-MVCCとInnoDB

    3. cronなしでバックグラウンドでメールを送信する

    4. 戻りパラメータを使用してHibernateからOracle関数を呼び出す方法は?