Wat is 'n databasisverhouding?

INHOUDSOPGAWE:

Wat is 'n databasisverhouding?
Wat is 'n databasisverhouding?
Anonim

'n Verwantskap word gevestig tussen twee databasistabelle wanneer een tabel 'n vreemde sleutel gebruik wat na die primêre sleutel van 'n ander tabel verwys. Dit is die basiese konsep agter die term relasionele databasis.

Hoe 'n buitelandse sleutel werk om 'n verhouding te vestig

'n Primêre sleutel identifiseer elke rekord in die tabel uniek. Dit is 'n tipe kandidaatsleutel wat gewoonlik die eerste kolom in 'n tabel is en outomaties deur die databasis gegenereer kan word om te verseker dat dit uniek is. 'n Vreemde sleutel is 'n ander kandidaatsleutel (nie die primêre sleutel nie) wat gebruik word om 'n rekord aan data in 'n ander tabel te koppel.

Beskou byvoorbeeld hierdie twee tabelle wat identifiseer watter onderwyser watter kursus onderrig. Hier is die kursusse-tabel se primêre sleutel Course_ID. Sy vreemde sleutel is Teacher_ID:

Course_ID Kursusnaam Teacher_ID
Course_001 Biologie Teacher_001
Course_002 Math Teacher_002
Course_003 Engels Teacher_003

Jy kan sien dat die vreemde sleutel in Courses ooreenstem met 'n primêre sleutel in Onderwysers:

Teacher_ID Onderwyser_Naam
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Ons kan sê dat die Teacher_ID-buitelandse sleutel gehelp het om 'n verhouding tussen die kursusse en die onderwysers-tabelle te vestig.

Image
Image

tipes databasisverhoudings

Deur vreemde sleutels of ander kandidaatsleutels te gebruik, kan jy drie tipes verhoudings tussen tabelle implementeer:

Een-tot-een

Hierdie tipe verhouding laat slegs een rekord aan elke kant van die verhouding toe. Die primêre sleutel hou verband met slegs een rekord (of geen) in 'n ander tabel. Byvoorbeeld, in 'n huwelik het elke gade net een ander gade. Hierdie soort verhouding kan in 'n enkele tabel geïmplementeer word en gebruik dus nie 'n vreemde sleutel nie.

Een-tot-Baie

'n Een-tot-baie-verhouding laat toe dat 'n enkele rekord in een tabel met veelvuldige rekords in 'n ander tabel verband hou. Oorweeg 'n besigheid met 'n databasis wat klante- en bestellingstabelle het.

'n Enkele klant kan veelvuldige bestellings koop, maar 'n enkele bestelling kon nie aan veelvuldige klante gekoppel word nie. Daarom sal die Bestellings-tabel 'n vreemde sleutel bevat wat ooreenstem met die primêre sleutel van die Klante-tabel, terwyl die Klante-tabel geen vreemde sleutel sal hê wat na die Bestellings-tabel wys nie.

Baie-tot-Baie

Dit is 'n komplekse verhouding waarin baie rekords in 'n tabel na baie rekords in 'n ander tabel kan skakel. Byvoorbeeld, ons besigheid het waarskynlik klante- en bestellingstabelle nodig, en het waarskynlik ook 'n produktetabel nodig.

Weereens, die verhouding tussen die Kliënte- en Bestellings-tabel is een-tot-baie, maar oorweeg die verhouding tussen die Bestellings- en Produkte-tabel. 'n Bestelling kan veelvuldige produkte bevat, en 'n produk kan aan veelvuldige bestellings gekoppel word aangesien verskeie klante 'n bestelling kan indien wat sommige van dieselfde produkte bevat. Hierdie soort verhouding vereis minstens drie tabelle.

Waarom is databasisverhoudings belangrik?

Die vestiging van konsekwente verhoudings tussen databasistabelle help om data-integriteit te verseker, wat bydra tot databasisnormalisering. Byvoorbeeld, wat as ons geen tabelle deur 'n vreemde sleutel gekoppel het nie en eerder die data in die kursusse en onderwysers-tabelle gekombineer het, soos so:

Teacher_ID Onderwyser_Naam Kursus
Teacher_001 Carmen Biologie, Wiskunde
Teacher_002 Veronica Math
Teacher_003 Jorge Engels

Hierdie ontwerp is onbuigsaam en oortree die eerste beginsel van databasisnormalisering, First Normal Form, wat bepaal dat elke tabelsel 'n enkele, diskrete stuk data moet bevat.

Of miskien het ons besluit om 'n tweede rekord vir Carmen by te voeg, om 1NF: af te dwing

Teacher_ID Onderwyser_Naam Kursus
Teacher_001 Carmen Biologie
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge Engels

Dit is steeds 'n swak ontwerp, wat onnodige duplisering bekendstel en wat genoem word data-invoeging-anomalieë, wat beteken dat dit kan bydra tot inkonsekwente data. Byvoorbeeld, as 'n onderwyser veelvuldige rekords het, wat as sommige data geredigeer moet word, maar die persoon wat die dataredigering uitvoer, besef nie dat daar veelvuldige rekords bestaan nie? Die tabel sal dan verskillende data vir dieselfde individu bevat, sonder enige duidelike manier om dit te identifiseer of te vermy.

Om hierdie tabel in twee tabelle op te breek, Onderwysers en Kursusse, skep die regte verhouding tussen die data en help dus om datakonsekwentheid en akkuraatheid te verseker.

Aanbeveel: