sql >> Databáze >  >> RDS >> Mysql

Integrita propojených datových entit při aktualizaci

Co musíte udělat, je nechat stůl tak, jak je. Máte pravdu, ve faktuře byste měli ukládat informace o zákazníkovi pro historii, kam byly položky odeslány. Když se změní, NEMĚLI byste tyto informace aktualizovat, s výjimkou faktur, které ještě nebyly odeslány. Chcete-li zachovat tento typ informací, potřebujete na tabulce zákazníků spouštěč, který vyhledá faktury, které nebyly odeslány, a tyto adresy automaticky aktualizuje.

Pokud chcete uložit historické verze klientských informací, správným postupem je vytvořit tabulku auditu a naplnit ji pomocí spouštěče.

Integrita dat je v tomto případě jednoduše prostřednictvím cizího klíče k ID zákazníka. Samotné id by se nemělo nikdy měnit nebo by nemělo být povoleno měnit uživatelem a mělo by to být náhradní číslo, například celé číslo. Vzhledem k tomu, že byste neměli měnit informace o adrese ve skutečné faktuře (pokud nebyla odeslána, v takovém případě je lepší ji změnit, jinak bude produkt odeslán na špatné místo), je to dostatečné pro zachování integrity dat. To vám také umožňuje vidět, kam bylo zboží skutečně odesláno, ale stále vyhledávat aktuální informace o klientovi pomocí cizího klíče.

Pokud máte klienty, kteří se mění (společnosti koupené jinými společnostmi), můžete buď spustit proces na serveru, který aktualizuje ID zákazníka starých záznamů, nebo vytvořit strukturu tabulky, která ukazuje, která ID klientů patří k aktuálnímu rodičovskému ID. První je snazší, pokud nemluvíte o změně milionů záznamů.



  1. Neplatný měsíc při provádění procedury parametru IN s hodnotou data

  2. Shrňte seznam do řetězce odděleného čárkami

  3. 2 způsoby, jak vrátit řádky, které obsahují pouze alfanumerické znaky v Oracle

  4. jak seřadit pořadí LEFT JOIN v dotazu SQL?