Integritatea referențială

Restricțiile privind integritatea corporației

Limitări pentru câmpurile de domeniu

Unele câmpuri trebuie să conțină întotdeauna una dintre valorile valide, cu alte cuvinte, aceste câmpuri nu pot avea o valoare goală.

Fiecare domeniu are propriul domeniu, care este un set de valori admise.

Există noțiunea de "constrângeri de integritate corporativă" ca reguli suplimentare pentru menținerea integrității datelor. definită de utilizatori, adoptată de administratorii întreprinderii sau ale bazei de date. Restricțiile întreprinderii se numesc reguli de afaceri.

Această constrângere de integritate se aplică cheilor primare ale tabelelor de bază. Prin definiție, cheia primară este identificatorul minim (unul sau mai multe câmpuri) care este utilizat pentru a identifica în mod unic înregistrările din tabel. Astfel, niciun subset al cheii primare nu poate fi suficient pentru a identifica în mod unic înregistrările.

Integritatea entității determină că în tabelul de bază niciun câmp al cheii primare nu poate conține valori lipsă, notate cu NULL.

Dacă permiteți prezența identificatorului NULL în orice parte a cheii primare. acest lucru este echivalent cu afirmația că nu toate câmpurile sale sunt necesare pentru identificarea unică a înregistrărilor și contrazice definiția cheii primare.

Constrângerile de integritate specificate se aplică cheilor externe. O cheie străină este un câmp (sau un set de câmpuri) dintr-un tabel care este cheia altei (sau aceleași) tabele. Cheile externe sunt folosite pentru a stabili relații logice între tabele. Conexiunea se stabilește prin atribuirea valorilor cheii străine a unei mese la valorile cheii celuilalt.

Pot exista relații de subordonare între două sau mai multe tabele de baze de date care determină că pentru fiecare înregistrare a tabelului principal (numită tabelul părinte) pot fi una sau mai multe înregistrări în tabelul subordonat (numit și tabelul copil).

Există trei tipuri de relații între tabelele bazei de date:

  • "One-to-many";
  • "One-to-one";
  • „Multi-la-mulți“.

Relația one-to-many are loc când o singură înregistrare a tabelului părinte poate corespunde mai multor înregistrări copil. Relația de la unu la altul este uneori numită relația multi-la-unu. În ambele cazuri, esența relației dintre tabele rămâne neschimbată.

Relația one-to-many este cea mai comună pentru bazele de date relaționale. De asemenea, vă permite să modelați structuri de date ierarhice.

O relație unu-unu apare atunci când o intrare în tabelul părinte corespunde unei intrări în tabelul copil. Această relație este mult mai puțin comună decât relația "unu-la-mulți". Se folosește dacă nu doriți ca tabela bazei de date să "se umfle" din informațiile de fundal. Folosind o relație one-to-one duce la faptul că pentru a citi informații legate în mai multe tabele, trebuie să efectuați mai multe operații de citire în loc de una, atunci când datele sunt stocate într-un singur tabel.

Relația de la mulți la mulți are loc în următoarele cazuri:

  • o intrare în tabelul părinte corespunde mai multor intrări în tabelul copil;
  • o intrare în tabelul copil corespunde mai multor intrări în tabelul părinte.

Se crede că orice relație de la mulți la mulți poate fi înlocuită de o relație una-la-multe (una sau mai multe).

Adesea, legătura dintre mese este setată de cheia primară. și anume valorile cheii externe a unei tabele sunt atribuite valorilor cheii primare a celeilalte. Cu toate acestea, acest lucru nu este necesar - în general, comunicarea poate fi stabilită cu ajutorul cheilor secundare. În plus, atunci când stabiliți relații între mese, nu aveți nevoie de unicitatea indispensabilă a cheii care asigură conexiunea. Câmpurile de chei străine nu trebuie să aibă aceleași nume ca și numele cheilor cărora le corespund. O cheie străină se poate referi la tabelul propriu - în care caz cheia externă se numește recursivă.

Integritatea referențială determină: dacă există o cheie străină în tabel. atunci valoarea sa trebuie fie să se potrivească valorii cheie primară a unei anumite înregistrări în tabela de bază, fie să fie specificată de determinantul NULL.

Există mai multe puncte importante legate de cheile externe. Mai întâi, ar trebui să analizați dacă este posibil să utilizați valori goale în chei străine. În cazul general, în cazul în care participarea unui tabel copil în comunicare este obligatorie, se recomandă interzicerea utilizării valorilor goale în cheia externă corespunzătoare. În același timp, dacă există o participare parțială a tabelului copil în conexiune, ar trebui să se permită introducerea valorilor goale în câmpul cheie străine. De exemplu, dacă trebuie să specificați un client în tranzacția de stabilire a tranzacției pentru o anumită companie comercială, atunci câmpul CustomerCode trebuie să aibă atributul NOT NULL. Dacă puteți vinde sau cumpăra bunuri fără a specifica un client, puteți specifica atributul NULL pentru câmpul CustomerCode.

Următoarea problemă este legată de organizarea suportului pentru integritatea referențială atunci când se efectuează operații de modificare a datelor în baza de date. Aici sunt posibile următoarele situații:

Există un alt fel de integritate - integritatea semantică a bazei de date. Cerința integrității semantice determină faptul că datele din baza de date ar trebui modificate astfel încât conexiunea semantică care a fost dezvoltată între ele să nu fie încălcată.

Nivelul de menținere a integrității datelor în diferite sisteme variază semnificativ.

Ideologia arhitecturii client-server necesită transferarea la server a numărului maxim posibil de reguli de integritate a datelor. Avantajele acestei abordări sunt:

  • garantează integritatea bazei de date, deoarece toate regulile sunt concentrate într-un singur loc (în baza de date);
  • aplicarea automată a constrângerilor de integritate definite de server pentru orice aplicație;
  • absența diferitelor implementări ale restricțiilor în diferite aplicații client care funcționează cu baza de date;
  • activarea rapidă a restricțiilor, deoarece acestea sunt implementate pe server și, prin urmare, nu este nevoie să trimiteți date clientului, mărind în același timp traficul în rețea;
  • disponibilitatea modificărilor aduse restricțiilor de server pentru toate aplicațiile client care execută baza de date și necesitatea de a redistribui aplicațiile client modificate utilizatorilor.

Dezavantajele stocării constrângerilor de integritate pe server includ:

  • Aplicația client nu are capacitatea de a răspunde unor situații eronate care apar pe server atunci când implementează anumite reguli (de exemplu erori la executarea procedurilor stocate pe server);
  • Limitările limbajului SQL și limba procedurilor stocate și declanșatoare pentru implementarea tuturor cerințelor de integritate a datelor.

În practică, aplicațiile client implementează numai acele reguli care sunt dificile sau imposibil de implementat cu utilizarea resurselor serverului. Toate celelalte constrângeri de integritate a datelor sunt transferate către server.

Curs 9: Determinarea constrângerilor de integritate
Este dată definiția conceptelor de integritate a datelor în standardul SQL. Se iau în considerare problemele de definire a integrității referențiale intelectuale și cascadate. Exemple sunt date de crearea constrângerilor cheie primare și străine, constrângerile asupra valorii și implicit, precum și exemple de creare și folosire a regulilor și valorilor implicite.

Articole similare