Skip to main content

Transitive Dependency sa isang Database

Panel 1: Workers’ Compensation and Short-Term Disability (Abril 2025)

Panel 1: Workers’ Compensation and Short-Term Disability (Abril 2025)
Anonim

Ang isang palipat na dependency sa isang database ay isang di-tuwirang kaugnayan sa pagitan ng mga halaga sa parehong mesa na nagiging sanhi ng isang functional dependency. Upang makamit ang pamantayan ng normalization ng Third Normal Form (3NF), dapat mong alisin ang anumang palipat na dependency.

Sa pamamagitan ng kalikasan nito, ang isang palipat na dependency ay nangangailangan ng tatlo o higit pang mga katangian (o mga haligi ng database) na may isang functional dependency sa pagitan ng mga ito, ibig sabihin na ang Haligi A sa isang table ay umaasa sa Haligi B sa pamamagitan ng isang intermediate na Column C.

Tingnan natin kung paano ito gumagana.

Halimbawa ng Transitive Dependency

MGA AUTHORS

Author_IDMay-akdaBookAuthor_Nationality
Auth_001Orson Scott CardEnder's GameEstados Unidos
Auth_001Orson Scott CardEnder's GameEstados Unidos
Auth_002Margaret AtwoodAng Kuwento ng SuliraninCanada

Sa mga halimbawa ng AUTHORS sa itaas:

  • Book → May-akda : Dito, ang Book tinutukoy ng katangian ang May-akda katangian. Kung alam mo ang pangalan ng libro, maaari mong malaman ang pangalan ng may-akda. Gayunpaman, May-akda ay hindi tumutukoy Book , dahil ang isang may-akda ay maaaring magsulat ng maramihang mga libro. Halimbawa, dahil alam namin ang pangalan ng may-akda na Orson Scott Card, hindi namin alam ang pangalan ng libro.
  • May-akda → Author_Nationality : Gayundin, ang May-akda tinutukoy ng katangian ang Author_Nationality , ngunit hindi ang iba pang paraan sa paligid; dahil alam natin na ang nasyonalidad ay hindi nangangahulugang matukoy natin ang may-akda.

Ngunit ang mesa na ito ay nagpapakilala ng isang palipat na dependency:

  • Book → Author_Nationality: Kung alam namin ang pangalan ng libro, maaari naming matukoy ang nasyonalidad sa pamamagitan ng hanay ng May-akda.

Pag-iwas sa mga Transitive Dependencies

Upang matiyak ang Third Normal Form, tanggalin natin ang palipat na dependency.

Maaari naming magsimula sa pamamagitan ng pag-alis ng hanay ng Aklat mula sa talahanayan ng Mga May-akda at paglikha ng hiwalay na talahanayan ng Mga Libro:

MGA LIBRO

Book_IDBookAuthor_ID
Book_001Ender's GameAuth_001
Book_001Mga Bata ng Pag-iisipAuth_001
Book_002Ang Kuwento ng SuliraninAuth_002

MGA AUTHORS

Author_IDMay-akdaAuthor_Nationality
Auth_001Orson Scott CardEstados Unidos
Auth_002Margaret AtwoodCanada

Naaayos na ba ito? Suriin natin ang ating mga dependency ngayon:

Mga talahanayan ng BOOKS:

  • Book_ID → Aklat: Ang Book depende sa Book_ID .
  • Walang iba pang mga dependency sa table na ito ang umiiral, kaya't okay lang kami. Tandaan na ang banyagang susi Author_ID nagli-link ng table na ito sa talahanayan ng AUTHORS sa pamamagitan ng pangunahing key nito Author_ID . Gumawa kami ng isang relasyon upang maiwasan ang isang palipat na dependency, isang pangunahing disenyo ng mga pamanggit na database.

Mga talahanayan ng mga may-akda:

  • Author_ID → May-akda: Ang May-akda depende sa Author_ID .
  • May-akda → Author_Nationality: Ang nasyonalidad ay maaaring matukoy ng may-akda.
  • Author_ID → Author_Nationality: Ang nasyonalidad ay maaaring matukoy mula sa Author_ID sa pamamagitan ng May-akda katangian. Mayroon pa kaming isang palipat na dependency.

Kailangan naming magdagdag ng isang ikatlong talahanayan upang gawing normal ang data na ito:

MGA BANSA

Country_IDBansa
Coun_001Estados Unidos
Coun_002Canada

MGA AUTHORS

Author_IDMay-akdaCountry_ID
Auth_001Orson Scott CardCoun_001
Auth_002Margaret AtwoodCoun_002

Ngayon mayroon kaming tatlong mga talahanayan, na ginagamit ang mga banyagang key upang iugnay sa pagitan ng mga talahanayan:

  • Ang banyagang key ng BOOK table Author_ID nagli-link ng isang libro sa isang may-akda sa talahanayan ng AUTHORS.
  • Ang banyagang key ng talahanayan ng AUTHORS Country_ID nagli-link ng isang may-akda sa isang bansa sa talahanayan ng COUNTRIES.
  • Ang talahanayan ng COUNTRIES ay walang mga banyagang key dahil hindi na kailangang mag-link sa isa pang table sa disenyo na ito.

Bakit ang mga Dependencies ng Transitive ay Masamang Disenyo sa Database

Ano ang halaga ng pag-iwas sa mga palipat-lipat na dependency upang matulungan tiyakin ang 3NF? Isaalang-alang natin ang aming unang talahanayan at tingnan ang mga isyu na lumilikha nito:

MGA AUTHORS

Author_IDMay-akdaBookAuthor_Nationality
Auth_001Orson Scott CardEnder's GameEstados Unidos
Auth_001Orson Scott CardMga Bata ng Pag-iisipEstados Unidos
Auth_002Margaret AtwoodAng Kuwento ng SuliraninCanada

Ang ganitong uri ng disenyo ay maaaring magbigay ng kontribusyon sa mga anomalya at hindi pagkakapare-pareho ng data, halimbawa:

  • Kung tinanggal mo ang dalawang aklat na "Children of the Mind" at "Ender's Game," tatanggalin mo ang may-akda na "Orson Scott Card" at ang kanyang nasyonalidad ganap na mula sa database.
  • Hindi ka maaaring magdagdag ng isang bagong may-akda sa database maliban kung nagdagdag ka rin ng isang libro; paano kung ang may-akda ay hindi pa nai-publish o hindi mo alam ang pangalan ng isang libro na kanyang nilikha?
  • Kung ang "Orson Scott Card" ay nagbago ng kanyang pagkamamamayan, kailangan mong baguhin ito sa lahat ng mga rekord kung saan siya lilitaw. Ang pagkakaroon ng maramihang mga rekord na may parehong may-akda ay maaaring magresulta sa di-tumpak na data: paano kung ang data entry tao ay hindi mapagtanto mayroong maraming mga talaan para sa kanya at nagbabago ang data sa isang talaan lamang?
  • Hindi mo maaaring tanggalin ang isang libro tulad ng "The Handmaid's Tale" nang hindi rin tinatanggal ang may-akda ng ganap.

Ang mga ito ay ilang mga kadahilanan kung bakit ang normalisasyon, at pag-iwas sa mga palipat-lipat na dependency, protektahan ang data at matiyak ang pagkakapare-pareho.