One-to-Many Bezéiungen an enger Datebank

Eenzel Bezéiung an enger Datebank trëfft wann all Opzeechnung an der Tabelle A vill Linke Bicher an der Tabelle B hunn, awer all Rekord vun der Table B kann nëmmen eng entspriechend Tabellen A. an enger Table A. Een Bezuch zu eng Datebank ass déi meescht Iwwergangsdatenbank Design a läit am Häerz vu gudde Design.

Betraffen d'Bezéiung tëschent engem Enseignant an de Coursen, déi se léieren. E Léierpersonal kann verschidde Coursen léieren, awer de Cours hätt net déi selwecht Relatioun mat dem Léierpersonal.

Duerfir, fir all Rekord an engem Lehrerbuller, konnt et vill Akten an der Courseness Tableau sinn. Dëst ass eng Eenheet ze verhandelen: e Léierpersonal fir verschidde Coursen.

Firwat e Grousse Bezierk opbauen ass wichteg

Fir e Relatiounen tëscht enger Bezéiung ze representéieren, brauch Dir op d'mannst zwee Dëscher. Loosst eis un.

Vläicht hu mir eng Léierperséinlech Dësch geschaft, wou mir de Numm an d'Coursen ageholl hunn. Mir kënnen se wéi

Léierpersonal a Coursen
Teacher_ID Teacher_Name Course
Teacher_001 Carmen Biologie
Teacher_002 Veronica Math
Teacher_003 Jorge Englesch

Wat ass wann Carmen léiert zwee oder méi Coursen? Mir hunn zwou Méiglechkeeten mat dësem Design. Mir konnten et just un den existente Rekord vum Carmen addéieren, wéi:

Léierpersonal a Coursen
Teacher_ID Teacher _Name Course
Teacher_001 Carmen Biologie, Math
Teacher_002 Veronica Math
Teacher_003 Jorge Englesch

De Design uewendriwwer gëtt onbestänneg an konnt spéider Problemer spille wann et probéiert Daten z'installéieren, änneren oder ze läschen.

Et mécht et schwéier ze sichen fir Daten ze sichen. Dës Konstruktioun verletzt den éischten Prinzip vun der Datebanknormaliséierung, First Normal Form (1NF) , déi feststellt datt all Dëschtabletten een eenzelen, diskret Stéck vu Daten enthalen.

Eng aner Design Alternativ kéint et einfach fir eng zweet Rekord fir Carmen ze addéieren:

Léierpersonal a Coursen
Teacher _ID Teacher _Name Course
Teacher_001 Carmen Biologie
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge Englesch

Dëst hänkt mat 1NF awer ëmmer nach e schlecht Datenbankentwurf, well se Redundanz entwéckelt a kéint eng ganz grouss Datebank unnötig sinn. Wat méi wichteg ass, kënnen d'Daten onkonsequent ginn. Zum Beispill, wat huet den Numm vum Carmen geännert? E Mëttegiessen mat den Donnéeën hunn hir Numm an engem Rekord weidergoen a se net am zweeten Rekord aktualiséieren. Dës Konstruktioun verletzt d'Second Normal Form (2NF), déi 1NF hëllt a muss och d'Redundanz vun de Multiple Datebank vermeiden, andeems Ënnersets mat Daten an mëcht Tabellen ze trennen an eng Relatioun tëschent hinnen z'erreechen.

Wéi eng Datebank ze entwéckelen mat Een-zu-Vier Bezéiungen

Fir eng Verhältnis vu Bezierken an de Léierpersonal a Coursen ze implementéieren, bréngen d'Dëscher an zwee a verknäppt se mat engem auslännesche Schlëssel .

Hei hu mir d'Kurssprooch an der Léierpersonal Dësch erofgeholl:

Léierpersonal
Teacher _ID Teacher _Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

An hei ass d'Coursen Dësch. Bedenkt datt säin auslännesche Schlëssel, Teacher_ID, eng Course an engem Enseignant an der Léierpersonnéiergläich verbënnt:

Coursen
Course_ID Course_Name Teacher_ID
Course_001 Biologie Teacher_001
Course_002 Math Teacher_001
Course_003 Englesch Teacher_003

Mir hunn eng Bezéiung tëscht de Léierpersonal an de Coursen am Zesummenhang mat engem externen Schlëssel entwéckelt.

Dëst erzielt eis datt d'Biologie an d'Math vu Carmen geléiert ginn an datt d'Jorge Englesch léiert.

Mir kënnen kucken wéi dësen Design evoluante Reduverzéngunge vermeide léisst, individuell Léierpersonal verschidde verschidde Coursen ze léieren, a realiséiert e Relatiounen tëscht enger Bezéiung.

Datebasen kënnen och eng Bezéiung mat enger Bezéiung a vill a Bezuele bilden.