Database Relationships

Ang mga ugnayan sa database ay ang katigasan ng loob ng lahat ng mga database ng pamanggit

Ang isang relasyon ay itinatag sa pagitan ng dalawang mga talahanayan ng database kapag ang isang talahanayan ay may isang banyagang susi na tumutukoy sa pangunahing susi ng isa pang talahanayan. Ito ang pangunahing konsepto sa likod ng term database ng pamanggit.

Paano Gumagana ang isang Dayuhang Key upang Magtatag ng Relasyon

Suriin natin ang mga pangunahing kaalaman ng mga pangunahing at dayuhang mga susi. Ang isang pangunahing susi ay nakikilala ang bawat talaan sa talahanayan. Ito ay isang uri ng key ng kandidato na karaniwang ang unang haligi sa isang talahanayan at maaaring awtomatikong mabuo ng database upang matiyak na ito ay natatangi.

Ang isang banyagang susi ay isa pang key ng kandidato (hindi ang pangunahing susi) na ginagamit upang mag-link ng isang talaan sa data sa ibang talahanayan.

Halimbawa, isaalang-alang ang dalawang talahanayan na tumutukoy kung aling guro ang nagtuturo kung aling kurso.

Dito, ang pangunahing susi ng Kurso ng talahanayan ay Course_ID. Ang banyagang susi nito ay Teacher_ID:

Kurso
Course_ID Course_Name Teacher_ID
Course_001 Biology Teacher_001
Course_002 Math Teacher_001
Course_003 Ingles Teacher_003

Maaari mong makita na ang mga banyagang susi sa Mga Kurso ay tumutugma sa isang pangunahing susi sa mga Guro:

Mga guro
Teacher_ID Pangalan ng guro
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Maaari naming sabihin na ang Teacher_ID banyagang susi ay nakatulong upang magtatag ng isang relasyon sa pagitan ng mga Kurso at ang mga talahanayan ng Mga Guro.

Mga Uri ng Mga Relasyon sa Database

Gamit ang mga banyagang key, o iba pang kandidato, maaari mong ipatupad ang tatlong uri ng mga relasyon sa pagitan ng mga talahanayan:

One-to-one : Pinapayagan lamang ng ganitong uri ng relasyon ang isang rekord sa bawat panig ng kaugnayan.

Ang pangunahing susi ay may kaugnayan sa isang talaan lamang - o wala - sa ibang talahanayan. Halimbawa, sa isang kasal, ang bawat asawa ay may isa pang asawa. Ang ganitong uri ng relasyon ay maaaring ipatupad sa isang solong mesa at samakatuwid ay hindi gumagamit ng isang banyagang susi.

One-to-many : Ang isang one-to-many na relasyon ay nagbibigay-daan sa isang solong tala sa isang talahanayan na may kaugnayan sa maraming mga tala sa isa pang talahanayan.

Isaalang-alang ang isang negosyo na may isang database na may mga Customers at Orders tables.

Ang isang solong customer ay maaaring bumili ng maramihang mga order, ngunit ang isang solong order ay hindi maaaring ma-link sa maraming mga customer. Samakatuwid ang talahanayan ng Orders ay maglalaman ng isang banyagang susi na tumutugma sa pangunahing susi ng talahanayan ng mga Customer, samantalang ang mga talahanayan ng mga Customer ay walang mga banyagang susi na tumuturo sa talahanayan ng Orders.

Maraming-sa-maraming : Ito ay isang kumplikadong kaugnayan kung saan maraming mga talaan sa isang talahanayan ay maaaring mag-link sa maraming mga talaan sa isa pang talahanayan. Halimbawa, ang aming negosyo ay malamang na nangangailangan ng mga talahanayan ng Mga Customer at Orders, ngunit malamang na nangangailangan din ng isang mesa ng Produkto.

Muli, ang relasyon sa pagitan ng mga Customers at Orders table ay isa-sa-maraming, ngunit isaalang-alang ang kaugnayan sa pagitan ng mga Orders and Products table. Ang isang order ay maaaring maglaman ng maraming mga produkto, at ang isang produkto ay maaaring ma-link sa maraming mga order: ang ilang mga customer ay maaaring magsumite ng isang order na naglalaman ng ilan sa mga parehong mga produkto. Kailangan ng ganitong uri ng relasyon sa pinakamababang tatlong talahanayan.

Ano ang Mahalaga sa Mga Relasyon sa Database?

Ang pagtataguyod ng mga pare-parehong ugnayan sa pagitan ng mga talahanayan ng database ay nakakatulong na matiyak ang integridad ng data, na nag-aambag sa normalization ng database Halimbawa, kung hindi namin maiugnay ang anumang mga talahanayan sa pamamagitan ng isang banyagang susi at sa halip ay pinagsama lamang ang data sa mga talahanayan ng Mga Kurso at Guro, katulad nito:

Mga guro at Kurso
Teacher_ID Pangalan ng guro Kurso
Teacher_001 Carmen Biology, Math
Teacher_002 Veronica Math
Teacher_003 Jorge Ingles

Ang disenyo ay hindi mabisa at lumalabag sa unang prinsipyo ng normalisasyon ng database, First Normal Form (1NF), na nagsasaad na ang bawat talahanayan ng cell ay dapat maglaman ng isang solong, discrete piraso ng data.

O marahil ay nagpasya kaming magdagdag ng pangalawang rekord para kay Carmen, upang ipatupad ang 1NF:

Mga guro at Kurso
Teacher_ID Pangalan ng guro Kurso
Teacher_001 Carmen Biology
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge Ingles

Ito ay isang mahina na disenyo, na nagpapakilala sa hindi kinakailangang pagkopya at kung ano ang tinatawag na anomalya sa pagpapasok ng data , na nangangahulugan lamang na ito ay maaaring mag-ambag sa hindi pantay na data.

Halimbawa, kung ang isang guro ay may maraming mga tala, paano kung ang ilang data ay kailangang ma-edit, ngunit ang taong gumaganap ng pag-edit ng data ay hindi napagtanto na maraming mga tala ang umiiral? Ang talahanayan ay magkakaroon ng iba't ibang data para sa parehong indibidwal, nang walang anumang malinaw na paraan upang makilala ito o maiwasan ito.

Ang pagbasag ng table na ito sa dalawang talahanayan, Mga Guro at Mga Kurso (tulad ng nakikita sa itaas), ay lumilikha ng wastong ugnayan sa pagitan ng data at samakatuwid ay nakakatulong na matiyak ang pagkakapare-pareho at katumpakan ng data.