Patru fețe de integritate
Integritatea entităților se realizează prin intermediul cheilor primare. Regulile pentru asigurarea integrității entităților interzic cheile primare să aibă valori nedefinite sau să le primească ca urmare a oricărei manipulări a datelor. Aceste reguli garantează disponibilitatea fiecărui rând al tabelului la căutarea sau modificarea datelor. Puteți găsi orice rând al tabelului dacă specificați valoarea cheii primare.
Modul standard pentru a asigura integritatea entității într-un mediu SQL Server este de a defini cheile primare pentru fiecare tabel. În acest scop, instrucțiunea CREATE TABLE sau ALTER TABLE este introdus precizări suplimentare, așa cum se arată în Listarea 1. În îndeplinirea acestei echipe SQL Server construiește un index unic pe cheia primară. Această abordare garantează implementarea unei reguli care interzice introducerea unei valori duplicate în coloana pe care este construit indexul unic.
Integritatea referințelor asigură că valoarea dintr-un tabel se referă la valoarea existentă în cealaltă. Regula de integritate a legăturilor afirmă că valoarea cheii externe trebuie să fie fie în domeniul cheii primare asociată cu aceasta, fie să fie nedefinită. Un domeniu este un set de valori valide pentru o anumită coloană.
Cheile externe, adică coloanele care stabilesc legăturile unui tabel de referință numit "master", cu un tabel de referință numit "part", implementează o relație unu-mare (1: M) între două tabele. Cheia externă (coloana din tabelul de referință) trebuie să aibă întotdeauna cheia primară corespunzătoare (coloană de același tip și lungimea datelor în tabelul de căutare). Domeniul cheie externă nu poate depăși domeniul cheii primare care o corespunde. Aceste domenii trebuie să se potrivească, altfel cheia externă poate avea o valoare nedefinită.
Un declanșator este un anumit tip de proceduri stocate, care este invocată în mod automat atunci când efectuează anumite acțiuni cu tabelul, de exemplu, inserarea, ștergerea sau actualizarea rânduri. Înainte de acțiune va fi efectuată cu codul liniei (inserare sau ștergere) încorporate în declanșare verifică o condiție predeterminată. În funcție de rezultatele testelor efectuate una sau alta parte a codului de declanșare. Deoarece declanșatorul este codul, atunci este posibil să se stabilească algoritmi foarte sofisticate și reguli de validare. De exemplu, este posibil de a inspecta întreaga integritatea referențială în baza de date a scalei și de a efectua cascadă șterge toate rândurile din tabelul de referință asociat cu registrul special în tabelul de referențiere. Trigger declanșează numai după ce sunt îndeplinite toate controalele, membrii DSC. Deși DSC este mai rapid decât un declanșator, dar prevăzut cu posibilitatea de ceva mai puțin. Utilizarea și DSC, și declanșează pentru a verifica aceleași condiții este imposibilă, deoarece DSC este realizată înainte de declanșare de pornire, iar în cazul în care condiția este evaluată DSC dă un rezultat negativ, de declanșare și nu va porni. Listarea 3 ilustrează utilizarea declanșatori pentru verificarea integrității referențiale. Codul verifică disponibilitatea rândului corespunzător din tabelul de căutare la introducerea unui nou rând în tabelul de referențiere.
Integritatea domeniului asigură că toate valorile unei coloane aparțin unui set de valori permise. Fiecare coloană are un anumit set de valori, de exemplu, pentru un set de coloane Pubs..zip este format din toate numărul cinci cifre și pentru coloana Pubs..au_name - șiruri de caractere, și pentru coloana Sales..ord_date - toate datele. Dacă specificați o limită a valorilor elementelor unei coloane, atunci asigurați integritatea domeniului. Implementarea integrității domeniului poate fi foarte simplă - este suficient să alegeți tipul și lungimea datelor pentru coloană. Tabelul antet de baze de date Pubs pentru coloana Pubdate specifică tipul de date datetime și neagă valorile nedefinite. Această selecție a creatorului tabelului asigură că coloana conține valori care sunt date corecte, de exemplu 11/22/99. În acest fel, integritatea domeniului este asigurată.
Standardele ANSI SQL-89 și SQL-92 au introdus operatorul de creare a domeniului CREATE DOMAIN, care este procesat în Transact SQL (T-SQL) ca tip de date definit de utilizator (UDT) cu verificări și restricții. Domeniul din ANSI SQL-89/92 este derivat din tipurile de date existente, ca în următorul exemplu de cod pseudo-cod:
CREAȚI DOMAIN wholesale_price AS DECIMAL (5,2) CONSTRAINT whsale_price_not_negative CHECK (valoare> = 0) NOT DEFERRABLE
În T-SQL, puteți crea domenii elementare prin construirea unui UDT pe baza tipurilor de date SQL Server. În plus, puteți adăuga valori nedefinite la UDT, așa cum se arată în exemplul din manualul online T-SQL:
ziua de nastere sp_addtype, datetime, NULL
Dacă utilizați acest UDT în instrucțiunile CREATE TABLE sau ALTER TABLE, trebuie să finalizați procesul de integritate a domeniului verificând restricțiile. Verificarea constrângerii efectuată în timpul creării tabelului asigură integritatea domeniului prin limitarea setului de valori care pot fi plasate în coloană. Lista 4 prezintă un exemplu al unei astfel de restricții.
DCS este, de asemenea, o formă de integritate a domeniului. Atunci când implementați o relație 1: M, domeniul cheilor străine și domeniul cheii primare corespunzătoare trebuie să se potrivească. În lista 4, nu veți putea introduce niciodată o valoare în coloana pub_id care nu mai este inclusă în tabelul Editori. Astfel, domeniul titlului 6.pub_id al coloanei este limitat la o referință de cheie străină.
În urma acestei logici, puteți crea tabele care sunt proiectate special pentru a limita valorile coloanelor într-un alt tabel, adică pentru a asigura integritatea domeniului. În acest caz, un tabel special este numit referință sau referință. Este asociat cu tabelul modificat cu raportul 1: M, care este întotdeauna satisfăcut. De exemplu, în lista 5, coloana Pubs.type trimite o coloană în tabelul TypeTable. Lista 5 conține o descriere a structurii tabelului de referință TipTable și a valorilor eșantionului. Dacă încercați să introduceți un șir de caractere în tabelul Pubs.title7 și, în același timp, utilizați valoarea care nu se află în tabelul TypeTable, această operație va eșua. Termenii DSC înregistrate în Pubs.title7, utilizat împreună cu o listă de valori posibile în tabel furnizează integritatea domeniului TypeTable.
Integritatea de afaceri, de asemenea, numit de integritate a utilizatorului se asigură că baza de date îndeplinește toate regulile de business stabilite de către utilizator, instrucțiunile, directivele și procedurile. De obicei, integritatea afacerii este implementată folosind proceduri stocate și declanșatoare. Procedura stocată este o interogare stocată pe serverul de bază de date și este utilizată pentru a procesa rândurile și pentru a returna rezultatele. Declanșatoarele acceptă integritatea datelor "în spatele scenei", deoarece funcționează astfel încât utilizatorul să nu realizeze chiar că au fost pornite. Lista 7 conține un exemplu de cod de declanșare care asigură integritatea afacerii.
Integritatea datelor este vitală pentru orice bază de date. Dacă valorile datelor sunt discutabile, informațiile obținute din baza de date vor fi fie inutile, fie sunt afectate în mod semnificativ. Cele patru tipuri de integritate pe care le-am considerat sunt un set de reguli care ar trebui urmate atunci când se lucrează cu o bază de date. Definiți și aplicați corespunzător, aceștia acționează ca o singură comandă, asigurând acuratețea și coerența datelor din baza dvs. de date.