Marrëdhëniet e bazës së të dhënave janë shtylla kurrizore e të gjitha bazave të të dhënave relacionale
Një lidhje vendoset midis dy tabelave të bazës së të dhënave kur një tabelë ka një çelës të jashtëm që i referohet çelësit kryesor të një tabele tjetër. Ky është koncepti bazë i bazës së të dhënave relacionale.
Si punon një çelës i jashtëm për të krijuar një lidhje
Le të shqyrtojmë bazat e çelësave primar dhe të huaj. Një çelës primar identifikon në mënyrë unike çdo rekord në tabelë. Është një lloj kyçe e kandidatit që zakonisht është kolona e parë në një tabelë dhe mund të gjenerohet automatikisht nga baza e të dhënave për të siguruar që është unik.
Një çelës i jashtëm është një tjetër çelës i kandidatit (jo kyç primar) që përdoret për të lidhur një rekord me të dhënat në një tabelë tjetër.
Për shembull, konsideroni këto dy tabela që identifikojnë se cili mësues mëson se cili kurs.
Këtu, çelësi kryesor i tryezës së kurseve është Course_ID. Çelësi i saj i huaj është Teacher_ID:
Course_ID | Course_Name | Teacher_ID |
---|---|---|
Course_001 | biologji | Teacher_001 |
Course_002 | Math | Teacher_001 |
Course_003 | anglisht | Teacher_003 |
Ju mund të shihni se çelësi i jashtëm në Kurse përputhet me një çelës primar në Mësuesit:
Teacher_ID | Teacher_Name |
---|---|
Teacher_001 | Carmen |
Teacher_002 | veronikë |
Teacher_003 | jorge |
Mund të themi se çelësi i jashtëm i mësimdhënësit ka ndihmuar në krijimin e një marrëdhënie midis kurseve dhe tabelave të mësuesve.
Llojet e marrëdhënieve të bazës së të dhënave
Duke përdorur çelësa të huaj ose çelësa të tjerë të kandidatëve, mund të zbatoni tre lloje të marrëdhënieve midis tabelave:
Një-në-një : Ky lloj marrëdhënie lejon vetëm një rekord në secilën anë të marrëdhënies.
Kyç primar ka të bëjë vetëm me një rekord - ose jo - në një tabelë tjetër. Për shembull, në një martesë, secili bashkëshort ka vetëm një bashkëshort tjetër. Ky lloj marrëdhënieje mund të zbatohet në një tabelë të vetme dhe prandaj nuk përdor një çelës të huaj.
Një-për-shumë : Një marrëdhënie një-me-shumë lejon një rekord të vetëm në një tabelë të lidhet me të dhëna të shumëfishta në një tabelë tjetër.
Konsideroni një biznes me një bazë të dhënash që ka tabela të Konsumatorëve dhe Urdhrave.
Një klient i vetëm mund të blejë porosi të shumta, por një porosi e vetme nuk mund të lidhej me klientë të shumtë. Prandaj tabela e urdhrave do të përmbajë një çelës të huaj që përputhet me çelësin kryesor të tabelës së Konsumatorëve, ndërsa tabela e Konsumatorëve nuk do të kishte asnjë çelës të huaj që tregon në tabelën e Urdhrave.
Shumë-me-shumë : Kjo është një marrëdhënie komplekse në të cilën shumë rekorde në një tabelë mund të lidhen me shumë të dhëna në një tabelë tjetër. Për shembull, biznesi ynë ndoshta ka nevojë jo vetëm për tavolina të Konsumatorëve dhe Urdhrave, por gjithashtu ka nevojë për një tabelë Produkte.
Përsëri, marrëdhënia midis Tabelës së Konsumatorëve dhe Urdhrave është e një-shumë, por e konsideron marrëdhënien midis Tabelës së Urdhrave dhe Produkteve. Një urdhër mund të përmbajë produkte të shumta dhe një produkt mund të lidhet me urdhërime të shumëfishta: disa konsumatorë mund të dorëzojnë një porosi që përmban disa nga të njëjtat produkte. Ky lloj marrëdhënie kërkon minimum tre tryeza.
Cilat janë marrëdhëniet e bazës së të dhënave të rëndësishme?
Vendosja e marrëdhënieve të qëndrueshme midis tabelave të bazës së të dhënave ndihmon në sigurimin e integritetit të të dhënave, duke kontribuar në normalizimin e bazës së të dhënave Për shembull, çka nëse nuk i lidhëm ndonjë tabelë me një çelës të jashtëm dhe në vend të kësaj i kombinuam të dhënat në tavolinën e kurseve dhe mësuesve, si kështu:
Teacher_ID | Teacher_Name | kurs |
---|---|---|
Teacher_001 | Carmen | Biologji, Matematikë |
Teacher_002 | veronikë | Math |
Teacher_003 | jorge | anglisht |
Ky dizajn është i paqëndrueshëm dhe shkel parimin e parë të normalizimit të bazës së të dhënave, Formati i Parë i Normal (1NF), i cili thotë se çdo qelizë e tabelës duhet të përmbajë një pjesë të vetme dhe të veçantë të të dhënave.
Ose ndoshta vendosëm të shtojmë një rekord të dytë për Carmen, me qëllim që të zbatojmë 1NF:
Teacher_ID | Teacher_Name | kurs |
---|---|---|
Teacher_001 | Carmen | biologji |
Teacher_001 | Carmen | Math |
Teacher_002 | veronikë | Math |
Teacher_003 | jorge | anglisht |
Kjo është ende një dizajn i dobët, duke prezantuar dublikimin e panevojshëm dhe atë që quhet anomali i futjes së të dhënave , gjë që vetëm do të thotë se mund të kontribuojë në të dhëna të paqëndrueshme.
Për shembull, nëse një mësues ka të dhëna të shumta, çka nëse disa të dhëna duhet të redaktohen, por personi që kryen përpunimin e të dhënave nuk e kupton se ekzistojnë të dhëna të shumta? Tabela pastaj do të përmbajë të dhëna të ndryshme për të njëjtin individ, pa ndonjë mënyrë të qartë për ta identifikuar atë ose për ta shmangur atë.
Duke e thyer këtë tabelë në dy tavolina, Mësuesit dhe Kurse (siç është paraqitur më lart), krijon marrëdhënien e duhur midis të dhënave dhe për këtë arsye ndihmon në sigurimin e qëndrueshmërisë dhe saktësisë së të dhënave.