Datubāzes termini relācijas un relācijas apraksta veidu, kā tiek savienoti tabulu dati. Relāciju datu bāze sastāv no divu vai vairāku tabulu sērijas, kas savienotas ar noteiktu atslēgu. Relāciju datu bāze atšķiras no nestrukturētām datu bāzēm, kas ir izplatītas lielo datu iniciatīvās. Relāciju datu bāzēs parasti ir nepieciešami stingri noteikumi par to, kā tiek definētas tabulas un kas veido derīgas attiecības starp tabulām.
Datu bāzu attiecību veidi
Attiecības ļauj efektīvi aprakstīt savienojumus starp datu bāzes tabulām. Pēc tam šīs attiecības var izmantot, lai veiktu jaudīgus starptabulu vaicājumus, kas pazīstami kā JOIN.
Ir trīs datu bāzes relāciju veidi, katrs nosaukts atbilstoši relācijā iesaistīto tabulas rindu skaitam. Katrs no šiem trīs attiecību veidiem pastāv starp divām tabulām.
- Attiecības viens pret vienu rodas, ja katram ierakstam pirmajā tabulā ir tikai viens ekvivalents otrajā tabulā. Attiecības viens pret vienu tiek izmantotas reti, jo bieži vien ir efektīvāk visu informāciju ievietot vienā tabulā. Daži datu bāzu izstrādātāji izmanto šīs attiecības priekšrocības, izveidojot tabulas, kurās ir datu apakškopa no citas tabulas.
- Attiecības viens pret daudziem ir visizplatītākais datu bāzes attiecību veids. Tās rodas, ja katrs ieraksts A tabulā atbilst vienam vai vairākiem ierakstiem tabulā B, bet katrs ieraksts tabulā B atbilst tikai vienam ierakstam tabulā A. Piemēram, saistība starp skolotāju tabulu un skolēnu tabulu pamatskolā. datubāze, visticamāk, būtu attiecības viens pret daudziem, jo katram skolēnam ir tikai viens skolotājs, bet katram skolotājam ir vairāki skolēni. Šis dizains “viens pret daudziem” palīdz novērst dublētus datus.
- Attiecības daudzi pret daudziem rodas, ja katrs ieraksts A tabulā atbilst vienam vai vairākiem ierakstiem tabulā B un katrs ieraksts tabulā B atbilst vienam vai vairākiem ierakstiem. Tabulā A. Piemēram, saistība starp skolotāju tabulu un tabulu Kursi, visticamāk, būtu daudzi pret daudziem, jo katrs skolotājs var vadīt vairāk nekā vienu kursu, un katrā kursā var būt vairāk nekā viens pasniedzējs.
Bottom Line
Pašatsauces attiecības rodas, ja ir iesaistīta tikai viena tabula. Viens izplatīts piemērs ir darbinieku tabula, kurā ir informācija par katra darbinieka vadītāju. Katrs vadītājs ir arī darbinieks, un viņam ir vadītājs. Šajā gadījumā pastāv attiecības viens pret daudziem, jo katram darbiniekam ir viens vadītājs, bet katram vadītājam var būt vairāk nekā viens darbinieks.
Attiecību izveide ar svešām atslēgām
Jūs izveidojat attiecības starp tabulām, norādot ārējo atslēgu. Šī atslēga norāda relāciju datubāzei, kā tabulas ir saistītas. Daudzos gadījumos A tabulas kolonna satur primārās atslēgas, uz kurām ir atsauces no tabulas B.
Apskatiet skolotāju un skolēnu tabulu piemēru. Tabulā Skolotāji ir ID, nosaukums un kursa kolonna:
InstructorID | Skolotāja_vārds | Kurss |
001 | Džons Doe | angļu valoda |
002 | Jane Schmoe | Math |
Studentu tabulā ir iekļauts ID, nosaukums un ārējās atslēgas kolonna:
StudentID | Studenta_vārds | Skolotājs_FK |
0200 | Lowell Smith | 001 |
0201 | Braiens Šorts | 001 |
0202 | Korkijs Mendezs | 002 |
0203 | Monika Džounsa | 001 |
Sleja Teacher_FK tabulā Studenti norāda uz skolotāja primārās atslēgas vērtību tabulā Skolotāji. Bieži vien datu bāzes izstrādātāji kolonnas nosaukumā izmanto PK vai FK, lai identificētu primārās atslēgas vai ārējās atslēgas kolonnu.
Šīs divas tabulas ilustrē attiecības viens pret daudziem starp skolotājiem un skolēniem.
Attiecības un atsauces integritāte
Pēc ārējās atslēgas pievienošanas tabulai izveidojiet datu bāzes ierobežojumu, kas nodrošina atsauces integritāti starp abām tabulām. Šis solis nodrošina, ka attiecības starp tabulām paliek konsekventas. Ja vienai tabulai ir ārējā atslēga pret citu tabulu, atsauces integritāte nosaka, ka jebkurai ārējās atslēgas vērtībai tabulā B ir jāattiecas uz esošu ierakstu tabulā A.
Attiecību īstenošana
Atkarībā no jūsu datu bāzes jūs ieviesīsit attiecības starp tabulām dažādos veidos. Microsoft Access nodrošina vedni, kas ļauj saistīt tabulas un arī nodrošināt atsauces integritāti.
Ja rakstāt SQL tieši, vispirms izveidojiet tabulu Teachers, deklarējot ID kolonnu kā primāro atslēgu:
CREATE TABLE skolotāji (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Kurss VARCHAR(100));
Kad veidojat tabulu Studenti, jūs deklarējat, ka kolonna Teacher_FK ir sveša atslēga, atsaucoties uz skolotāju tabulas kolonnu InstructorID:
IZVEIDOT TABULU Skolēni (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_ID) REFERENCES or Teacher));
Attiecību izmantošana, lai pievienotos tabulām
Pēc vienas vai vairāku attiecību izveides savā datu bāzē izmantojiet to jaudu, izmantojot SQL JOIN vaicājumus, lai apvienotu informāciju no vairākām tabulām. Visizplatītākais savienojuma veids ir SQL INNER JOIN, kas ir vienkāršs savienojums. Šis savienojuma veids atgriež visus ierakstus, kas atbilst savienojuma nosacījumam no vienas vai vairākām tabulām.
Piemēram, šis JOIN nosacījums atgriež Studenta_vārds, Skolotāja_vārds un Kurss, kur ārējā atslēga tabulā Studenti atbilst primārajai atslēgai skolotāju tabulā:
ATLASĪT Studentus. Studenta_vārds, Skolotāji. Skolotāja_vārds, Skolotāji. Kurss
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Šis paziņojums veido aptuveni šādu tabulu:
Studenta_vārds | Skolotāja_vārds | Kurss |
Lowell Smith | Džons Doe | angļu valoda |
Braiens Šorts | Džons Doe | angļu valoda |
Korkijs Mendezs | Jane Schmoe | Math |
Monika Džounsa | Džons Doe | angļu valoda |