sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu modelovat data, která se v průběhu času pomalu mění?

Měl jsem podobný problém - velké ploché soubory importované do databáze jednou denně. Většina dat se nemění.

Přidejte do tabulky dva další sloupce, počáteční_datum a koncové_datum. Výchozí hodnota pro ending_date by měla být někdy v budoucnu.

Chcete-li porovnat jeden soubor s druhým, seřaďte je oba podle klíčových sloupců a poté z každého souboru přečtěte jeden řádek.

  • Pokud jsou klíče stejné:porovnejte zbývající sloupce a zjistěte, zda se data změnila. Pokud jsou data řádku stejná, řádek je již v databázi a nelze nic dělat; pokud se liší, aktualizujte stávající řádek v databázi s dnešním datem ukončení a vložte nový řádek s dnešním datem zahájení. Přečtěte si nový řádek z obou souborů.
  • Pokud je klíč ze starého souboru menší:řádek byl smazán. Aktualizujte datum ukončení na dnešek. Přečtěte si nový řádek ze starého souboru.
  • Pokud je klíč z nového souboru menší:byl vložen řádek. Vložte řádek do databáze s počátečním_datem dneška. Přečtěte si nový řádek z nového souboru.

Opakujte, dokud nepřečtete vše z obou souborů.

Chcete-li se nyní dotázat na řádky, které byly platné k libovolnému datu, stačí vybrat pomocí klauzule where test_date mezi počátečním datem a datem ukončení.



  1. Správný způsob použití NOT IN Postgres

  2. Překlenutí mezery v Azure:Spravované instance

  3. Vytvořit přílohu... Vyberte příkaz v Laravel

  4. Připojení ke vzdálenému serveru MySQL pomocí PHP