sql >> Databasteknik >  >> RDS >> Mysql

Integriteten för länkade dataenheter vid uppdatering

Vad du behöver göra är att lämna bordet som det är. Du har rätt, du bör lagra kundinformationen på fakturan för historik över vart varorna har skickats till. När den ändras bör du INTE uppdatera denna information förutom eventuella fakturor som ännu inte har skickats. För att behålla den här typen av information behöver du en trigger på kundtabellen som letar efter fakturor som inte har skickats och uppdaterar dessa adresser automatiskt.

Om du vill spara historiska versioner av klientinformationen är den korrekta processen att skapa en granskningstabell och fylla i den genom en utlösare.

Dataintegritet i detta fall är helt enkelt genom en främmande nyckel till kund-id. Själva id:t ska aldrig ändras eller tillåtas ändras av användaren och bör vara ett surrogatnummer som ett heltal. Eftersom du inte bör ändra adressinformationen i den faktiska fakturan (såvida den inte har skickats i vilket fall du bör ändra den eller så kommer produkten att skickas till fel plats), är detta tillräckligt för att upprätthålla dataintegriteten. Detta gör att du också kan se var grejerna faktiskt skickades men ändå slå upp aktuell information om klienten genom att använda den främmande nyckeln.

Om du har klienter som ändras (företag köpta av andra företag) kan du antingen köra en process på servern för att uppdatera kund-id för gamla poster eller skapa en tabellstruktur som visar vilka klient-id som tillhör ett aktuellt överordnat ID. Det första är lättare att göra om du inte pratar om att ändra miljontals poster.



  1. hur skapar jag en unik php-sida för varje rad i en mysql-databas

  2. mysql ERROR 1064 (42000):Du har ett fel i din SQL-syntax;

  3. Codeigniter visar fel:Ingen databas har valts

  4. Största värdet av flera kolumner med kolumnnamn?