Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Integralność połączonych jednostek danych podczas aktualizacji

To, co musisz zrobić, to odejść od stołu tak, jak jest. Masz rację, powinieneś przechowywać informacje o kliencie na fakturze dla historii, do której towary zostały wysłane. Kiedy się zmieni, NIE powinieneś aktualizować tych informacji, z wyjątkiem faktur, które nie zostały jeszcze wysłane. Aby zachować tego typu informacje, potrzebujesz wyzwalacza w tabeli klientów, który wyszukuje faktury, które nie zostały wysłane, i automatycznie aktualizuje te adresy.

Jeśli chcesz zapisać historyczne wersje informacji o kliencie, prawidłowym procesem jest utworzenie tabeli kontroli i wypełnienie jej za pomocą wyzwalacza.

Integralność danych w tym przypadku polega po prostu na kluczu obcym do identyfikatora klienta. Sam identyfikator nigdy nie powinien się zmieniać ani nie powinien być zmieniany przez użytkownika i powinien być liczbą zastępczą, taką jak liczba całkowita. Ponieważ nie powinieneś zmieniać danych adresowych na rzeczywistej fakturze (chyba że nie została ona wysłana, w takim przypadku lepiej ją zmień lub produkt zostanie wysłany w niewłaściwe miejsce), jest to wystarczające do zachowania integralności danych. Pozwala to również zobaczyć, gdzie rzeczy zostały faktycznie wysłane, ale nadal sprawdzać bieżące informacje o kliencie za pomocą klucza obcego.

Jeśli masz klientów, którzy się zmieniają (firmy kupione przez inne firmy), możesz uruchomić proces na serwerze, aby zaktualizować identyfikator klienta starych rekordów lub utworzyć strukturę tabeli, która pokazuje, które identyfikatory klientów należą do bieżącego identyfikatora nadrzędnego. Pierwszy jest łatwiejszy do zrobienia, jeśli nie mówisz o zmienianiu milionów rekordów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. isset($_POST['submit']) teraz nie działa

  2. Pokrycie MySQL vs indeks złożony vs indeks kolumn

  3. Obsługa danych z wielu pól wyboru

  4. Wystąpił błąd mySQL, nieznana kolumna, gdzie klauzula

  5. Wielowątkowość w MySQL?