Termi "relacionale" ose "marrëdhënia" e bazës së të dhënave përshkruan mënyrën e lidhjes së të dhënave në tabela.
Të sapoardhurit në botën e bazave të të dhënave shpesh e kanë vështirë të shohin dallimin midis një baze të të dhënave dhe një spreadsheet. Ata shohin tabelat e të dhënave dhe pranojnë se bazat e të dhënave ju lejojnë të organizoni dhe të kërkoni të dhëna në mënyra të reja, por nuk kuptoni rëndësinë e marrëdhënieve midis të dhënave që i japin teknologjisë relacionale të bazës së të dhënave emrin e saj.
Marrëdhëniet ju lejojnë të përshkruani lidhjet mes tabelave të ndryshme të bazës së të dhënave në mënyra të fuqishme. Këto marrëdhënie pastaj mund të nxirren për të kryer pyetje të fuqishme ndër-tavoline, të njohura si bashkime.
Llojet e marrëdhënieve të bazës së të dhënave
Ekzistojnë tri lloje të ndryshme të marrëdhënieve të bazës së të dhënave, secila e quajtur sipas numrit të rreshtave të tabelës që mund të përfshihen në marrëdhënie. Secila prej këtyre tre llojeve të marrëdhënieve ekziston midis dy tabelave.
- Marrëdhëniet një-me-një ndodhin kur çdo hyrje në tabelën e parë ka një, dhe vetëm një, homolog në tabelën e dytë. Marrëdhëniet një-me-një përdoren rrallë, sepse shpesh është më efikas për të vënë të gjitha informatat në një tabelë të vetme. Disa dizajnerë të bazës së të dhënave përfitojnë nga kjo marrëdhënie duke krijuar tabela që përmbajnë një nëngrup të të dhënave nga një tabelë tjetër.
- Marrëdhëniet një-me-shumë janë lloji më i zakonshëm i marrëdhënieve të bazës së të dhënave. Ato ndodhin kur çdo rekord në Tabelën A korrespondon me një ose më shumë të dhëna në Tabelën B, por secili rekord në Tabelën B korrespondon me vetëm një rekord në Tabelën A. Për shembull, marrëdhënia midis tabelës së mësuesve dhe tabelës së nxënësve në një shkollë fillore baza e të dhënave ka të ngjarë të jetë një marrëdhënie e vetme-për-shumë, sepse secili nxënës ka vetëm një mësues, por secili mësues ka studentë të shumtë. Ky dizajn një-me-shumë ndihmon në eliminimin e të dhënave të dyfishta.
- Marrëdhëniet shumë-me-shumë ndodhin kur çdo rekord në Tabelën A korrespondon me një ose më shumë të dhëna në Tabelën B dhe çdo rekord në Tabelën B korrespondon me një ose më shumë të dhëna në Tabelën A. Për shembull, marrëdhënia midis një Mësimdhënësi dhe një Kurse tabela ka të ngjarë të jetë shumë-për-shumë, sepse secili mësues mund të udhëzojë më shumë se një kurs, dhe secili kurs mund të ketë më shumë se një instruktor.
Marrëdhëniet Vetë-Referuese: Një Rast Special
Marrëdhëniet e vetë-referencës ndodhin kur ka vetëm një tryezë të përfshirë. Një shembull i zakonshëm është një tabelë e Punonjësve që përmban informacion rreth mbikëqyrësit të çdo punonjësi. Secili mbikëqyrës është gjithashtu i punësuar dhe ka mbikëqyrësin e vet. Në këtë rast, ekziston një marrëdhënie e vet-referencës një-me-shumë, pasi çdo punonjës ka një mbikëqyrës, por secili mbikëqyrës mund të ketë më shumë se një punonjës.
Krijimi i marrëdhënieve me çelësat e jashtëm
Ju krijoni marrëdhënie midis tabelave duke specifikuar një çelës të huaj. Ky kyç tregon bazën e të dhënave relacionale se si lidhen tabelat. Në shumë raste, një kolonë në Tabelën A përmban çelësat primarë që referohen nga Tabela B.
Shqyrto përsëri shembullin e tabelave të Mësuesve dhe Studentëve. Tabela Mësuesit përmban vetëm një ID, një emër dhe një kolonë kursesh:
InstructorID | Teacher_Name | kurs |
---|---|---|
001 | John Doe | anglisht |
002 | Jane Schmoe | Math |
Tabela Studentët përfshin një ID, emër dhe një kolonë të huaj kryesore:
StudentID | Emri i studentit | Teacher_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Kolona Teacher_FK në tryezën e Studentëve referon vlerën primare të një instruktori në tabelën e mësuesve.
Shpesh, hartuesit e bazës së të dhënave do të përdorin "PK" ose "FK" në emrin e kolonës për të identifikuar lehtë një çelës primar ose kolonë të huaj.
Vini re se këto dy tabela ilustrojnë një marrëdhënie të vetme mes mësuesve dhe nxënësve.
Marrëdhëniet dhe Integriteti Referues
Pasi të keni shtuar një çelës të jashtëm në një tabelë, atëherë mund të krijoni një kufizim të bazës së të dhënave që imponon integritetin referent midis dy tabelave. Kjo siguron që marrëdhëniet midis tabelave të mbeten të qëndrueshme. Kur një tabelë ka një çelës të huaj në një tabelë tjetër, koncepti i integritetit referent deklaron se çdo vlerë e rëndësishme e çelësit në Tabelën B duhet t'i referohet një regjistri ekzistues në Tabelën A.
Zbatimi i Marrëdhënieve
Në varësi të bazës së të dhënave tuaja, ju zbatoni marrëdhëniet midis tabelave në mënyra të ndryshme. Microsoft Access siguron një magjistar që lehtësisht ju lejon të lidhni tabela dhe të zbatoni integritetin referent.
Nëse po shkruani direkt SQL, së pari do të krijoni tabelën Mësuesit, duke deklaruar që një kolonë ID të jetë çelësi kryesor:
CREATE TABELA Mësimdhënësit (
Instruktori ID INT AUTO_INCREMENT KEY FILLESTAR,
Mësimdhënësi VARCHAR (100),
Kursi VARCHAR (100)
);
Kur krijoni tryezën e Studentëve, ju deklaroni që kolona Teacher_FK të jetë një çelës i huaj që referohet në kolonën e instruktorit në tabelën e mësuesve:
CREATE TABLE Studentët (
StudentID INT AUTO_INCREMENT KEY FILLESTAR,
Student_Name VARCHAR (100), Teacher_FK INT,
KEY FOREIGN (Teacher_FK) REFERENCAT Mësimdhënësit (ID instruktor))
);
Përdorimi i Marrëdhënieve me Bashkimin e Tabelave
Pasi të keni krijuar një ose më shumë marrëdhënie në bazën e të dhënave, mund të shfrytëzoni fuqinë e tyre duke përdorur SQL JOIN pyetje për të kombinuar informacionin nga tabela të shumta. Lloji më i zakonshëm i bashkëngjitjes është një SQL INNER JOIN, ose një bashkim i thjeshtë. Ky lloj bashkimi i kthen të gjitha të dhënat që plotësojnë kushtin e bashkimit nga tabela të shumëfishta. Për shembull, ky kusht JOIN do të kthejë Student_Name, Teacher_Name dhe Course kur çelësi i jashtëm në tryezën e Studentëve përputhet me çelësin primar në tabelën e mësuesve:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
NGA Nxënësit
INNER JOIN Mësuesit
ON Students.Teacher_FK = Teachers.InstructorID;
Kjo deklaratë prodhon një tabelë si kjo:
U kthye nga deklarata SQL Join
Student_NameTeacher_NameCourseLowell SmithJohn DoeAnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish