Am observat ca SqlServer temporal tables( sau , generic, orice forma de temporal tables – fie prin trigger-e sau cod ) are o indicatie destul de buna asupra cum ar trebui organizata baza de date.
De exemplu , avem tabela Employee cu legatura la Department:
| Id | Name | IDDepartment | 
| 10 | HRManagerasad | 1 | 
| 13 | HRManagerasad | 2 | 
| 18 | HRManagerasad | 2 | 
| 22 | HRManagerasad | 21 | 
Ce e gresit aici? Pai, ce se schimba de obicei la un Employee ? Departamentul … Numele mai rar ( ma rog, odata …)
Hai sa vedem cum arata tabela cu datele temporale dupa schimbarea Departamentului:
select* from Employee FOR SYSTEM_TIME BETWEEN ‘2017-07-01’ AND ‘2017-09-01’ where Id=22
| Id | Name | IDDepartment | 
| 22 | HRManagerasad | 21 | 
| 22 | HRManagerasad | 2 | 
| 22 | HRManagerasad | 25 | 
| 22 | HRManagerasad | 23 | 
| 22 | HRManagerasad | 21 | 
Acum pare evident : IDDepartment trebuie sa stea intr-o alta tabela. Caram dupa noi numele Angajatului in temporal tables de fiecare data – fara sa fie nevoie.
Si acesta este un exemplu simplu. Uitati-va la cea mai CUD tabela – si vedeti ce se schimba cel mai des….