Ce este o relație de bază de date?

Cuprins:

Ce este o relație de bază de date?
Ce este o relație de bază de date?
Anonim

Se stabilește o relație între două tabele de bază de date atunci când un tabel folosește o cheie străină care face referire la cheia primară a altui tabel. Acesta este conceptul de bază din spatele termenului bază de date relațională.

Cum funcționează o cheie străină pentru a stabili o relație

O cheie primară identifică în mod unic fiecare înregistrare din tabel. Este un tip de cheie candidată care este de obicei prima coloană dintr-un tabel și poate fi generată automat de baza de date pentru a se asigura că este unică. O cheie străină este o altă cheie candidată (nu cheia primară) utilizată pentru a lega o înregistrare la datele dintr-un alt tabel.

De exemplu, luați în considerare aceste două tabele care identifică profesorul care predă ce curs. Aici, cheia primară a tabelului Courses este Course_ID. Cheia străină este Teacher_ID:

Course_ID Nume_curs Teacher_ID
Curs_001 Biologie Teacher_001
Curs_002 Mate Teacher_002
Curs_003 engleză Teacher_003

Puteți vedea că cheia externă din Cursuri se potrivește cu o cheie primară din Profesori:

Teacher_ID Nume_Profesor
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Putem spune că cheia externă Teacher_ID a ajutat la stabilirea unei relații între tabelele Cursuri și Profesori.

Image
Image

Tipuri de relații cu baze de date

Folosind chei externe sau alte chei candidate, puteți implementa trei tipuri de relații între tabele:

Unu-la-unu

Acest tip de relație permite doar o înregistrare pe fiecare parte a relației. Cheia primară se referă la o singură înregistrare (sau la niciuna) dintr-un alt tabel. De exemplu, într-o căsătorie, fiecare soț are doar un alt soț. Acest tip de relație poate fi implementat într-un singur tabel și, prin urmare, nu utilizează o cheie străină.

Unul-la-Mulți

O relație unu-la-mai multe permite ca o singură înregistrare dintr-un tabel să fie asociată cu mai multe înregistrări dintr-un alt tabel. Luați în considerare o companie cu o bază de date care conține tabele Clienți și Comenzi.

Un singur client poate achiziționa mai multe comenzi, dar o singură comandă nu a putut fi conectată la mai mulți clienți. Prin urmare, tabelul Comenzi ar conține o cheie externă care se potrivește cu cheia primară a tabelului Clienți, în timp ce tabelul Clienți nu ar avea o cheie externă care să indice tabelul Comenzi.

Mulți-la-Mulți

Aceasta este o relație complexă în care multe înregistrări dintr-un tabel se pot conecta la multe înregistrări dintr-un alt tabel. De exemplu, afacerea noastră are nevoie probabil de tabelele Clienți și Comenzi și probabil are nevoie și de un tabel de produse.

Din nou, relația dintre tabelul Clienți și Comenzi este unul la mai mulți, dar luați în considerare relația dintre tabelul Comenzi și Produse. O comandă poate conține mai multe produse, iar un produs poate fi legat de mai multe comenzi, deoarece mai mulți clienți pot trimite o comandă care conține unele dintre aceleași produse. Acest tip de relație necesită cel puțin trei tabele.

De ce sunt importante relațiile cu baze de date?

Stabilirea de relații consistente între tabelele bazei de date ajută la asigurarea integrității datelor, contribuind la normalizarea bazei de date. De exemplu, ce se întâmplă dacă nu am lega niciun tabel printr-o cheie străină și, în schimb, am combina datele din tabelele Cursuri și Profesori, astfel:

Teacher_ID Nume_Profesor Curs
Teacher_001 Carmen Biologie, matematică
Teacher_002 Veronica Mate
Teacher_003 Jorge engleză

Acest design este inflexibil și încalcă primul principiu al normalizării bazei de date, First Normal Form, care prevede că fiecare celulă de tabel ar trebui să conțină o singură bucată de date discretă.

Sau poate am decis să adăugăm un al doilea record pentru Carmen, pentru a impune 1NF:

Teacher_ID Nume_Profesor Curs
Teacher_001 Carmen Biologie
Teacher_001 Carmen Mate
Teacher_002 Veronica Mate
Teacher_003 Jorge engleză

Acesta este încă un design slab, care introduce dublari inutile și ceea ce se numește anomalii de inserare a datelor, ceea ce înseamnă că ar putea contribui la date inconsecvente. De exemplu, dacă un profesor are mai multe înregistrări, ce se întâmplă dacă unele date trebuie editate, dar persoana care efectuează editarea datelor nu realizează că există mai multe înregistrări? Tabelul ar conține apoi date diferite pentru aceeași persoană, fără nicio modalitate clară de a o identifica sau de a o evita.

Împărțirea acestui tabel în două tabele, Profesori și Cursuri, creează o relație adecvată între date și, prin urmare, ajută la asigurarea coerenței și acurateței datelor.

Recomandat: