Mysql
 sql >> база данни >  >> RDS >> Mysql

Целостта на свързаните обекти с данни при актуализация

Това, което трябва да направите, е да оставите масата такава, каквато е. Вие сте прав, трябва да съхранявате информацията за клиента във фактурата за история на това къде са били изпратени артикулите. Когато се промени, НЕ трябва да актуализирате тази информация, освен за всички фактури, които все още не са изпратени. За да поддържате този тип информация, имате нужда от тригер в таблицата с клиенти, който търси фактури, които не са били изпратени, и актуализира тези адреси автоматично.

Ако искате да запазите исторически версии на информацията за клиента, правилният процес е да създадете таблица за проверка и да я попълните чрез тригер.

Целостта на данните в този случай е просто чрез външен ключ към идентификатора на клиента. Самият идентификатор никога не трябва да се променя или да бъде разрешен за промяна от потребителя и трябва да бъде заместващо число, като цяло число. Тъй като не трябва да променяте информацията за адреса в действителната фактура (освен ако не е изпратена, в който случай е по-добре да я промените или продуктът ще бъде изпратен на грешното място), това е достатъчно, за да се запази целостта на данните. Това също ви позволява да видите къде действително са били изпратени нещата, но все пак да търсите текущата информация за клиента чрез използването на външния ключ.

Ако имате клиенти, които се променят (компании, закупени от други компании), можете или да стартирате процес на сървъра, за да актуализирате клиентския идентификатор на стари записи, или да създадете структура на таблица, която показва кои клиентски идентификатори принадлежат към текущия родителски идентификатор. Първото е по-лесно за изпълнение, ако не говорите за промяна на милиони записи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сортиране на резултат от търсене в MySQL с приоритет

  2. Как да сортирате асоциативен масив в php

  3. mysql заявка за преобразуване на часова зона

  4. Изберете имена на колони, чиито записи не са null

  5. Продължавайте да получавате org.hibernate.exception.JDBCConnectionException:не можа да изпълни заявка