Datubāzes nosaukums "relāciju" vai "attiecības" apraksta to, kā dati tabulās ir savienoti.
Jaunpienācējiem datu bāzu pasaulē bieži vien ir grūti saskatīt atšķirību starp datubāzi un izklājlapu. Viņi redz datu tabulas un atzīst, ka datu bāzes ļauj jums organizēt un pieprasīt datus jaunos veidos, bet nesaprot, cik liela nozīme ir sakarībām starp datiem, kas piešķir relāciju datubāzes tehnoloģiju tā nosaukumu.
Attiecības ļauj efektīvi aprakstīt savienojumus starp dažādām datu bāzes tabulām. Pēc tam šīs attiecības var tikt izmantotas, lai veiktu jaudīgus pārrobežu tabulas vaicājumus, kurus sauc par savienojumiem.
Datubāzu attiecību veidi
Ir trīs dažādi datu bāzu attiecību veidi, katrs no tiem tiek norādīts atbilstoši tabulu rindu skaitam, kas var būt saistīts ar attiecībām. Katrs no šiem trim saikņu veidiem pastāv starp divām tabulām.
- Vienu-otru attiecības rodas, ja katram pirmajā tabulā sniegtajam ierakstam ir viena un otrajā tabulā tikai viens. Vienu-otru attiecības tiek reti izmantotas, jo bieži vien ir daudz efektīvāk vienkārši ievietot visu informāciju vienā tabulā. Daži datu bāzes izstrādātāji izmanto šo attiecību priekšrocības, izveidojot tabulas, kurās ir citu datu tabulas datu apakšgrupa.
- Viena-pret-daudzām attiecībām ir visizplatītākais datu bāzu attiecības veids. Tie rodas, ja katrs A tabulas ieraksts atbilst vienam vai vairākiem B tabulas ierakstiem, bet katrs B tabulas ieraksts atbilst tikai vienam A tabulas ierakstam. Piemēram, attiecības starp skolotāju tabulu un studentu tabulu pamatskolā Datubāze, visticamāk, būs savstarpēja attiecība, jo katram skolēnam ir tikai viens skolotājs, bet katram skolotājam ir vairāki studenti. Šis dizains "viens pret daudziem" palīdz novērst dublētus datus.
- Starp daudzām attiecībām rodas tad, kad katrs A tabulas ieraksts atbilst vienam vai vairākiem B tabulas ierakstiem, un katrs B tabulas ieraksts atbilst vienam vai vairākiem A tabulas ierakstiem. Piemēram, attiecības starp skolotājiem un kursiem tabula, visticamāk, būs daudzi pret daudziem, jo katrs skolotājs var uzdot vairāk nekā vienu kursu, un katram kursam var būt vairāk nekā viens instruktors.
Pašreferences attiecības: īpašs gadījums
Pašreferatīvās attiecības rodas, ja ir iesaistīta tikai viena tabula. Viens kopīgs 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 savs uzraugs. Šajā gadījumā ir savstarpēji saistītas savstarpējas attiecības, jo katram darbiniekam ir viens vadītājs, bet katram uzraugam var būt vairāk nekā viens darbinieks.
Radīt attiecības ar ārvalstu taustiņiem
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 aile satur primārās atslēgas, uz kurām attiecas B tabula.
Vēlreiz apsveriet Skolotāju un studentu tabulu piemēru. Skolotāju tabulā ir tikai ID, vārds un kursa aile:
InstructorID | Skolotāja vārds | Kurss |
---|---|---|
001 | John Doe | Angļu |
002 | Jane Schmoe | Matemātika |
Studentu tabulā ir ID, vārds un ārējās atslēgas kolonna:
StudentID | Studenta vārds | Teacher_FK |
---|---|---|
0200 | Lowells Smits | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monika Jonesa | 001 |
Tabulā Studenti sleja Teacher_FK norāda skolotāju tabulas instruktora primāro atslēgas vērtību .
Bieži vien datu bāzes projektētāji kolonnas nosaukumā izmantos "PK" vai "FK", lai viegli identificētu primāro atslēgu vai ārējās atslēgas kolonnu.
Ņemiet vērā, ka šīs divas tabulas ilustrē skolotāju un studentu savstarpējo saistību.
Attiecības un atsauces integritāte
Kad esat pievienojis ārējo atslēgu tabulā, varat izveidot datubāzes ierobežojumu, kas nodrošina abpusēju tabulu savstarpēju atsaucību. Tas nodrošina, ka attiecības starp tabulām paliek konsekventi. Ja vienam tabulam ir ārējā atslēga citai tabulai, atsauces integritātes koncepcija nosaka, ka jebkurai ārējās atslēgas vērtībai B tabulā jāattiecas uz esošo ierakstu A tabulā.
Īstenošanas attiecības
Atkarībā no datubāzes, jūs dažādos veidos lietojat tabulas. Microsoft Access nodrošina vedni, kas viegli ļauj saistīt tabulas un arī nodrošināt atsauces integritāti.
Ja jūs rakstāt SQL tieši, vispirms izveidojiet tabulu "Skolotāji", pasludinot ID kolonnu par primāro atslēgu:
CREATE TABLE Skolotāji (
InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Teacher_Name VARCHAR (100),
Kurss VARCHAR (100)
);
Izveidojot Studentu tabulu, paskaidrojiet, ka Teacher_FK sleja ir svešvārdi, kas atsaucas uz InstructorID kolonnu Skolotāju tabulā:
CREATE TABLE Studenti (
StudentID INT AUTO_INCREMENT PRIMARY KEY,
Student_Name VARCHAR (100), Teacher_FK INT,
ĀRĒJĀ KEY (Teacher_FK) ATSAUCES Skolotāji (InstructorID))
);
Izmantojot attiecības, lai pievienotos tabulām
Kad esat izveidojis vienu vai vairākas attiecības savā datubāzē, varat izmantot savu jaudu, izmantojot SQL JOIN vaicājumus, lai apvienotu informāciju no vairākām tabulām. Visizplatītākais pievienošanās veids ir SQL INNER JOIN vai vienkārša pievienošanās. Šis savienojuma veids atgriež visus ierakstus, kas atbilst pievienošanās nosacījumiem, no vairākām tabulām. Piemēram, šis JOIN nosacījums atgriež Student_Name, Teacher_Name un Course, kur ārējā atslēga Studentu tabulā atbilst Primārās atslēgas Skolotāju tabulai:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
No studentiem
INNER JOIN Skolotāji
ON Studenti.Teacher_FK = Skolotāji. InstruktorsID;
Šis paziņojums rada tabulu, kas līdzīgs šim:
Atgrieztais tabula no SQL pievienošanās paziņojuma
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish