SqlServer temporal tables ca indicator al 3rd normal form

 

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

Posted in sql

Leave a Reply

Your email address will not be published. Required fields are marked *