Skip to main content

Egy-sok kapcsolatot egy adatbázisban

Nash 2016 Carp Fishing DVD + Eurobanx 2 Alan Blair Full Movie (Lehet 2024)

Nash 2016 Carp Fishing DVD + Eurobanx 2 Alan Blair Full Movie (Lehet 2024)
Anonim

Egy adatbázisban egy-egy csomó kapcsolat akkor következik be, ha az A. táblázatban szereplő összes rekordnak számos csatolt rekordja lehet a B. táblázatban, de a B. táblázatban szereplő összes rekordnak csak egy megfelelő rekordja lehet az A. táblázatban. Egy-egy-sok kapcsolat a egy adatbázis a legáltalánosabb relációs adatbázis-tervezés és a jó tervezés középpontjában áll.

Tekintsük a tanár és az általuk tanított tanfolyamok közötti kapcsolatot. A tanár több tanfolyamot taníthat, de a tanfolyamnak nem lenne ugyanolyan kapcsolata a tanárral.

Ezért a Teachers tábla minden egyes rekordja esetében sok adat szerepelhet a tanfolyamok táblázatában. Ez egy egy-sok kapcsolat: egy tanár több tanfolyamra.

Miért fontos az egy-sok kapcsolat kialakítása?

Ahhoz, hogy egy-sok kapcsolatot képviseljen, legalább két asztalra van szüksége. Lássuk, miért.

Talán létrehoztunk egy táblázatot, amelyben meg akartuk jegyezni a tanított nevet és tanfolyamokat. Ezt úgy tervezhetjük meg:

Tanárok és tanfolyamok
Teacher_IDTanár neveTanfolyam
Teacher_001CarmenBiológia
Teacher_002VeronikaMath
Teacher_003Jorgeangol

Mi van, ha Carmen két vagy több kurzust tanít? Ennek a designnak két lehetősége van. Hozzá tudnánk adni Carmen meglévő rekordjához:

Tanárok és tanfolyamok
Teacher_IDTanár_NévTanfolyam
Teacher_001CarmenBiológia, matematika
Teacher_002VeronikaMath
Teacher_003Jorgeangol

A fenti felépítés azonban rugalmatlan, és később problémákat okozhat az adatok beszúrása, szerkesztése vagy törlése során.

Nehéz keresni az adatokat. Ez a terv sérti az adatbázis normalizálásának első elvét, az első normál űrlapot (1NF), amely kimondja, hogy minden egyes táblázatos cellának egyetlen, különálló adatrészletet kell tartalmaznia.

Egy másik tervezési alternatíva lehet, hogy egyszerűen hozzá egy második rekord Carmen:

Tanárok és tanfolyamok
Tanár_id értékűTanár_NévTanfolyam
Teacher_001CarmenBiológia
Teacher_001CarmenMath
Teacher_002VeronikaMath
Teacher_003Jorgeangol

Ez 1NF-hez ragaszkodik, de még mindig rossz adatbázissal rendelkezik, mert bevezeti a redundanciát, és feleslegesen felborulhat egy nagyon nagy adatbázis. Ennél is fontosabb, hogy az adatok következetlenek lehetnek. Például, ha Carmen neve megváltozott? Az adatokkal dolgozó személy frissítheti a nevét egy rekordban, és nem frissítheti azt a második rekordban. Ez a terv megsérti a második normál űrlapot (2NF), amely 1NF-hez ragaszkodik, és el kell kerülnie a több rekord elbocsátását azáltal, hogy elválasztja az adatbevitelt több táblázatba, és létrehozza a közöttük lévő kapcsolatot.

Hogyan készítsünk adatbázisokat egy-sok kapcsolaton keresztül?

A Tanárok és a tanfolyamok táblázat egy-sok kapcsolathoz történő megvalósításához kettőt töröljük a táblázatokat, és idegen kulcs segítségével linkeljük őket.

Itt töröltük a Tanfolyam táblázatot a Tanárok táblázatban:

Tanárok
Tanár_id értékűTanár_Név
Teacher_001Carmen
Teacher_002Veronika
Teacher_003Jorge

És itt van a kurzusok táblája. Ne feledje, hogy az idegen kulcs, a Teacher_ID, egy tanfolyamot kapcsol össze egy tanárral a Tanárok táblában:

Tanfolyamok
Course_IDA tantárgy neveTeacher_ID
Course_001BiológiaTeacher_001
Course_002MathTeacher_001
Course_003angolTeacher_003

A tanárok és a kurzusok tábla közötti kapcsolatot egy idegen kulcs használatával fejlesztettük ki.

Ez azt mondja, hogy mindkét biológiát és matematikát Carmen tanítja, és Jorge angolul tanít.

Láthatjuk, hogy ez a design elkerüli-e az esetleges elbocsátást, lehetővé teszi az egyéni tanárok számára, hogy több tanfolyamot tanítanak és egy-sok kapcsolatot valósítanak meg.

Az adatbázisok egy-egy kapcsolatot és sok-sok kapcsolatot is megvalósíthatnak.