Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara memodelkan data yang perlahan berubah seiring waktu?

Saya memiliki masalah yang sama - file datar besar yang diimpor ke database sekali sehari. Sebagian besar data tidak berubah.

Tambahkan dua kolom tambahan ke tabel, tanggal_mulai dan tanggal_akhir. Nilai default untuk tanggal_akhir harus suatu saat nanti.

Untuk membandingkan satu file dengan file berikutnya, urutkan keduanya berdasarkan kolom kunci, lalu baca satu baris dari setiap file.

  • Jika kuncinya sama:bandingkan kolom lainnya untuk melihat apakah data telah berubah. Jika data baris sama, baris sudah ada di database dan tidak ada yang bisa dilakukan; jika berbeda, perbarui baris yang ada di database dengan tanggal_akhir hari ini dan sisipkan baris baru dengan tanggal_mulai hari ini. Baca baris baru dari kedua file.
  • Jika kunci dari file lama lebih kecil:baris telah dihapus. Perbarui tanggal_akhir menjadi hari ini. Baca baris baru dari file lama.
  • Jika kunci dari file baru lebih kecil:satu baris dimasukkan. Masukkan baris ke dalam database dengan starting_date hari ini. Baca baris baru dari file baru.

Ulangi sampai Anda membaca semuanya dari kedua file.

Sekarang untuk menanyakan baris yang valid pada tanggal berapa pun, cukup pilih dengan klausa where test_date antara start_date dan end_date.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melewati nilai yang dipisahkan koma dari .NET ke prosedur tersimpan menggunakan nilai dalam fungsi IN SQL

  2. Tentukan versi SQL Server dari server tertaut

  3. Memeriksa pelanggaran aturan integritas referensial sebelum dihapus

  4. Ubah kolom nomor

  5. Visual studio 2010 dan Sql Server