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ů.