Skip to main content

Introducere în relațiile de baze de date

Curs de programare online GRATUIT pentru incepatori / copii - Curs 3 (Aprilie 2025)

Curs de programare online GRATUIT pentru incepatori / copii - Curs 3 (Aprilie 2025)
Anonim

Termenul de bază de date "relațional" sau "relație" descrie modul în care sunt conectate datele din tabele.

Cei nou-veniți în lumea bazelor de date au adesea dificultăți în a vedea diferența dintre o bază de date și o foaie de calcul. Ei văd tabele de date și recunosc că bazele de date vă permit să organizați și să interogați date în moduri noi, dar să nu înțelegeți semnificația relațiile dintre date care dau numele tehnologiei bazei de date relaționale.

Relațiile vă permit să descrieți legăturile dintre diferitele tabele de baze de date în moduri puternice. Aceste relații pot fi apoi utilizate pentru a efectua interogări puternice de tip cross-table, cunoscute sub numele de "join".

Tipuri de relații baze de date

Există trei tipuri diferite de relații baze de date, fiecare numit în funcție de numărul de rânduri de tabel care pot fi implicate în relație. Fiecare dintre aceste trei tipuri de relații există între două tabele.

  • Relațiile one-to-one apare atunci când fiecare intrare din prima tabelă are unul și doar un singur omolog în al doilea tabel. Relațiile unu-la-unu sunt rareori utilizate, deoarece este adesea mai eficient să se pună pur și simplu toate informațiile într-o singură masă. Unii designeri de baze de date profită de această relație prin crearea de tabele care conțin un subset de date dintr-un alt tabel.
  • Relațiile de la unu la altul sunt cele mai comune tipuri de relații de bază de date. Acestea apar atunci când fiecare înregistrare din tabelul A corespunde uneia sau mai multor înregistrări din Tabelul B, dar fiecare înregistrare din Tabelul B corespunde unei singure înregistrări din Tabelul A. De exemplu, relația dintre un tabel al Profesorilor și un Tabel de Studenți într-o școală elementară baza de date ar fi probabil o relație una-la-multe, deoarece fiecare student are doar un profesor, dar fiecare profesor are mai mulți studenți. Acest design unu-la-multe ajută la eliminarea datelor duplicat.
  • Relații multi-la-multe apare atunci când fiecare înregistrare din Tabelul A corespunde uneia sau mai multor înregistrări din Tabelul B și fiecare înregistrare din Tabelul B corespunde uneia sau mai multor înregistrări din Tabelul A. De exemplu, relația dintre un tabel de profesori și un curs ar fi probabil mult- deoarece mulți profesori pot instrui mai multe cursuri, fiecare curs având mai mulți instructori.

Relații de auto-referință: un caz special

Relațiile de auto-referință apar atunci când există doar un singur tabel implicat. Un exemplu obișnuit este un tabel al angajaților care conține informații despre supraveghetorul fiecărui angajat. Fiecare supraveghetor este, de asemenea, un angajat și are propriul său supraveghetor. În acest caz, există o relație de auto-referință unu-la-multe, deoarece fiecare angajat are un supraveghetor, dar fiecare supraveghetor poate avea mai mult de un angajat.

Crearea relațiilor cu cheile externe

Creați relații între tabele specificând o cheie străină. Această cheie spune baza de date relațională cum sunt legate tabelele. În multe cazuri, o coloană din Tabelul A conține cheile primare care sunt menționate din Tabelul B.

Luați din nou în considerare exemplul meselor profesorilor și studenților. Tabelul Profesorilor conține doar o coloană de identificare, nume și coloană:

Profesori
InstructorIDNumele profesoruluiCurs
001John DoeEngleză
002Jane SchmoeMath

Tabelul Studenți include un cod, un nume și o coloană de chei străine:

Studenți
Carnet de studentNumele studentuluiTeacher_FK
0200Lowell Smith001
0201Brian Short001
0202Corky Mendez002
0203Monica Jones001

Coloana Teacher_FK în tabelul Studenți se face trimitere la valoarea cheie a unui instructor din tabelul Profesorii.

Frecvent, designerii bazei de date vor folosi "PK" sau "FK" în numele coloanei pentru a identifica cu ușurință o cheie primară sau o coloană de chei străine.

Rețineți că aceste două tabele ilustrează o relație una-la-multe între profesori și studenți.

Relațiile și integritatea referențială

Odată ce ați adăugat o cheie străină la o masă, puteți crea o constrângere bazată pe baza de date care impune integritatea referențială între cele două tabele. Acest lucru asigură faptul că relațiile dintre tabele rămân în concordanță. Atunci când un tabel are o cheie străină la un alt tabel, conceptul de integritate referențială prevede că orice valoare cheie străină din Tabelul B trebuie să se refere la o înregistrare existentă în Tabelul A.

Implementarea relațiilor

În funcție de baza de date, implementați relațiile dintre tabele în moduri diferite. Microsoft Access oferă un expert care vă permite cu ușurință să conectați tabelele și să impuneți și integritatea referențială.

Dacă scrieți direct SQL, mai întâi creați tabelul Profesorii, declarând o coloană ID drept cheie primară:

CREATE TABLE Profesorii (

InstructorID INT AUTO_INCREMENT PRIMAR CHEIE, Teacher_Name VARCHAR (100), Curs VARCHAR (100));

Când creați tabelul Studenți, declarați că coloana Teacher_FK este o cheie străină care face referire la coloana InstructorID din tabelul Profesorilor:

CREATE TABLE Studenții ( StudentID INT AUTO_INCREMENT PRIMAR CHEIE, Student_Name VARCHAR (100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERINȚE Profesori (InstructorID)));

Utilizarea relațiilor pentru a intra în tabele

Odată ce ați creat una sau mai multe relații în baza de date, puteți utiliza puterea lor utilizând interogările SQL JOIN pentru a combina informațiile din mai multe tabele. Cel mai obișnuit tip de conectare este SQL INNER JOIN sau o simplă conexiune. Acest tip de intrare returnează toate înregistrările care îndeplinesc condiția de conectare din mai multe tabele.De exemplu, această condiție JOIN va reveni la Student_Name, Teacher_Name și Curs unde cheia străină din tabelul Studenți se potrivește cu cheia primară din tabelul Profesorii:

SELECT Studenți.Student_Name, Teachers.Teacher_Name, Teachers.CourseDin studențiINNER JOIN ProfesoriON Students.Teacher_FK = Teachers.InstructorID;

Această afirmație produce un tabel ca acesta:

Tabel întors din declarația de conectare SQL

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEngleză