Ien-oan-in soad relaasjes yn in databank

In ien-in-protte relaasje yn in databank is opnommen as elke record yn Tabel A in protte keppele records yn Tafel B hawwe, mar elke record yn Tabel B kin allinich ien oerienkommende rekken yn Tabel A. hawwe In ien oant in protte relaasje yn In databank is it meast foarkommende relaasje database ûntwerp en is yn it hert fan goed ûntwerp.

Tink oan de relaasje tusken in learaar en de kursussen dy't se leare. In learaar kin meardere kursussen leare, mar de kursus soe net dezelfde relaasje hawwe mei de learkrêft.

Dêrom kinne foar elke rekord yn in Learjetafel in protte rekords yn 'e tabel Courses wêze. Dit is in ien-in-protte relaasje: ien learaar foar meardere kursussen.

Wêrom it opstellen fan in ien oant in protte relaasje is wichtich

Om in ien-in-protte relaasje te fertsjintwurdigjen, moatte jo op syn minst twa tabellen hawwe. Lit sjen wêrom.

Miskien meitsje wy in Learres tafel wêryn't wy de namme en kursussen opnimme woene. Wy kinne it sa foarmje:

Leararen en kursussen
Teacher_ID Teacher_Name Ferrin
Teacher_001 Carmen Biology
Teacher_002 Veronica Math
Teacher_003 Jorge Ingelsk

Wat as Carmen leart twa of mear kursussen? Wy hawwe twa mooglikheden mei dizze ûntwerp. Wy kinne gewoan it tafoegjen fan Carmen opnimme, lykas dit:

Leararen en kursussen
Teacher_ID Teacher _Name Ferrin
Teacher_001 Carmen Biology, Mat
Teacher_002 Veronica Math
Teacher_003 Jorge Ingelsk

It hjirboppe ûntwerp is lykwols ûnbidich en kin letter probleem besykje as jo besykje de gegevens yn te setten, te bewurkjen of te ferwiderjen.

It makket it dreech om nei gegevens te sykjen. Dit ûntwerp ferrjochtet it earste prinsipe fan normasearring fan databank, First Normal Form (1NF) , wêrby't stiet dat elke tabelzelle in ienige, diskrete stik fan gegevens befetsje moat.

In oar ûntwerp alternatyf kin wêze om in twadde rekord te meitsjen foar Carmen:

Leararen en kursussen
Teacher _ID Teacher _Name Ferrin
Teacher_001 Carmen Biology
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge Ingelsk

Dit befettet oan 1NF, mar is noch altyd earm databankûntwerp omdat it redundans yntrodusearret en kin in tige grutte databank unnecessary bloatje. Mear wichtich kinne de gegevens inkonsistint wurde. Bygelyks, wat as de namme fan Carmen feroare? Ien dy't wurket mei de gegevens kin har namme yn ien rekord bywurkje en it net opnimme yn it twadde rekord. Dit ûntwerp fergryp Twadde Normale Form (2NF), dy't oan 1NF oanhinget en moat ek de ôftrekingen fan meardere registers foarkomme troch subsydzjes fan gegevens te ûnderskieden yn meardere tabellen en in relaasje tusken har te meitsjen.

Hoe kinne jo in databank oanmeitsje mei ienriedige relaasjes

Om in ien-in-protte relaasje yn 'e tabel te learen, ferbrekke wy de tabellen yn twa en keppelje se mei in frjemdske kaai .

Hjir binne wy ​​de kursus kolommen yn 'e tabel fan' e Learers ferwidere:

Learers
Teacher _ID Teacher _Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

En hjir is de Courses tafel. Tink derom dat syn bûtenlânske kaai, Teacher_ID, in kursus ferpleatst nei in learaar yn 'e tabel fan' e Learers:

Courses
Course_ID Kursus namme Teacher_ID
Course_001 Biology Teacher_001
Course_002 Math Teacher_001
Course_003 Ingelsk Teacher_003

Wy hawwe in relaasje ûntwikkele tusken de Learers en de Courses tabletten mei in frjemde kaai.

Dit fertelt dat beide Biology en Mathe wurde leard troch Carmen en dat Jorge leart Ingelsk.

Wy sjogge hoe't dit ûntwerp gjin eventuele besunigingen ferwideret, jout yndividuele learkrêften meardere kursussen te leegjen en realisearret in ien-in-protte relaasje.

Databases kinne ek in ien-oan-ien relaasje en in protte toal relaasje ynfiere.