Am mai spus de mai multe ori că este mai bine să folosiți tipul unic de identificare pentru cheia primară, ceea ce este mai bine din punctul de vedere al asigurării unicității liniilor. Dar, pe de altă parte, acest tip este mai rău pentru index, deoarece intrările recent adăugate pot conține un identificator GUID mai mic decât cei deja existenți în tabel.
Când lucrăm cu câmpurile GUID, obținem câteva avantaje și dezavantaje. În acest capitol vom examina amândouă exemple de rezolvări.
Listing 2.14. Crearea de tabele legate printr-un câmp unic de identificatori
Rețineți că pentru cheia primară valoarea implicită este NewID (), care generează un identificator unic. Dacă utilizatorul adaugă o intrare și nu specifică o valoare explicită, va fi generată.
Să ștergem tabelul (DELETE FROM tbPhoneType_G) și să adăugăm un câmp nou
Să vedem cum vedeți intrările din tabelele legate. Nu există prea multe diferențe față de alte tipuri de câmpuri cheie:
Rețineți că valoarea GUID este mai întâi închisă în bretele și apoi în ghilimele simple. Dacă unele dintre acestea nu sunt specificate, serverul va afișa o eroare.
Cunoscând identificatorul, puteți adăuga un rând cu o comandă INSERT INTO. De exemplu:
Listing 2.15. Adăugarea unui tip numai dacă aveți nevoie de el
După cum puteți vedea, există probleme când se utilizează GUID, dar acestea sunt solvabile. Dar beneficiile utilizării GUID pun în evidență toate neajunsurile. Principalul avantaj este posibilitatea de auto-alocare a cheii primare, fără riscul de încălcare a integrității. Acest avantaj este evident în special atunci când se dezvoltă o aplicație client în limbi de nivel înalt, de exemplu, Delphi sau C ++. În aceste limbi, utilizatorul poate introduce datele din partea clientului și le poate memora în memorie. Când datele sunt acumulate, ele pot fi stocate într-un singur bloc de pe server.
În timp ce datele se află în memoria mașinii client, o cheie primară cu un câmp extins automat nu poate conține valori, astfel încât să nu puteți crea linkuri. Dacă cheia primară este de tipul GUID, atunci programul poate crea o valoare pentru cheia în sine și o poate folosi pentru a crea legături în memoria mașinii client cu date care nu există nici măcar pe server. Acum, aproape toate limbile au propriile lor capacități de a genera valori GUID, rezultatul căruia este absolut același.