Adatbázis-kapcsolatok

Az adatbázis-kapcsolatok az összes relációs adatbázis gerincét jelentik

Két adatbázishoz kapcsolódik a kapcsolat, ha egy táblázatnak van egy idegen kulcsja, amely egy másik táblázat elsődleges kulcsát jelenti. Ez az alapfogalom a relációs adatbázis fogalmának mögött.

Hogyan működik egy külföldi kulcs a kapcsolat kialakításához?

Nézzük át az elsődleges és külföldi kulcsok alapjait. Az elsődleges kulcs egyedileg azonosítja az egyes rekordokat a táblázatban. Ez egy olyan típusú jelölt kulcs , amely rendszerint az első oszlop egy táblázatban, és automatikusan létrehozható az adatbázisban annak biztosítása érdekében, hogy az egyedi.

Az idegen kulcs egy másik jelölt kulcs (nem az elsődleges kulcs), amely egy rekordot egy másik táblában lévő adatokhoz kapcsol.

Például, fontolja meg ezt a két táblázatot, amely azonosítja, melyik tanár tanítja, melyik kurzust.

Itt a Kurzusok táblázat elsődleges kulcsa a Course_ID. Az idegen kulcs a Teacher_ID:

Tanfolyamok
Course_ID A tantárgy neve Teacher_ID
Course_001 Biológia Teacher_001
Course_002 Math Teacher_001
Course_003 angol Teacher_003

Láthatja, hogy a tanfolyamok idegen kulcsa megfelel az elsődleges kulcsnak a Tanárokban:

Tanárok
Teacher_ID Tanár neve
Teacher_001 Carmen
Teacher_002 Veronika
Teacher_003 Jorge

Meg lehet mondani, hogy a Teacher_ID külföldi kulcs segített létrehozni a kapcsolatot a tanfolyamok és a tanárok asztalai között.

Adatbázis-kapcsolatok típusai

A külföldi kulcsok vagy más jelölt kulcsok használatával háromféle kapcsolatot tud megvalósítani a táblák között:

One-to-one : Ez a fajta kapcsolat csak egyetlen rekordot enged meg a kapcsolat mindkét oldalán.

Az elsődleges kulcs csak egy rekordra vonatkozik - vagy sem - egy másik táblában. Például házasságban minden házastársnak csak egy másik házastársa van. Ez a fajta kapcsolat egyetlen táblázatban megvalósítható, ezért nem használ idegen kulcsot.

One-to-many : Az egy-sok kapcsolathoz egy adott rekord egy táblázatban egy másik táblában több rekordhoz kapcsolódik.

Vegyünk egy olyan üzleti ügyfelet, amelynek adatbázisai Ügyfelek és Megrendelések táblázatok.

Egy ügyfél több megrendelést is vásárolhat, de egyetlen megrendelést nem lehet több ügyféllel összekapcsolni. Ezért a Megrendelések táblázata olyan idegen kulcsot tartalmazna, amely megfelelt az Ügyfelek tábla elsődleges kulcsjának, míg az Ügyfelek táblában nincs idegen kulcs a Rendelések táblázatra.

Sok-sok-sok : Ez egy összetett kapcsolat, amelyben a táblában lévő számos rekord egy másik táblában lévő rekordokhoz kapcsolódhat. Például üzleti tevékenységünknek valószínűleg nem csak az ügyfelek és a megrendelések táblázatokra van szüksége, de valószínűleg terméktáblára is szükség van.

Ismét az Ügyfelek és a Megrendelések tábla közötti kapcsolat egy-sok-sok, de fontolja meg a Rendelések és a Termékek táblázat közötti kapcsolatot. A megrendelés több terméket is tartalmazhat, és egy termék több megrendeléshez is kapcsolódhat: több ügyféllel rendeletet küldhet, amely ugyanazokat a termékeket tartalmazza. Ez a fajta kapcsolat legalább három asztalnál szükséges.

Milyen fontos az adatbázis-kapcsolatok?

Az adatbázis táblák közötti konzisztens kapcsolatok kialakítása segít az adatok integritásának biztosításában, hozzájárulva az adatbázisok normalizálásához. Például mi van, ha nem kapcsoltunk össze egy táblázatot egy idegen kulcson keresztül, hanem csak az adatokat a tanfolyamok és a tanárok táblázatokban kombináltuk, mint például:

Tanárok és tanfolyamok
Teacher_ID Tanár neve Tanfolyam
Teacher_001 Carmen Biológia, matematika
Teacher_002 Veronika Math
Teacher_003 Jorge angol

Ez a megoldás rugalmatlan és 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ázatcellában egyetlen, különálló adatelemet kell tartalmaznia.

Vagy talán úgy döntöttünk, hogy egyszerűen hozzáteszünk egy második rekordot a Carmen számára, hogy érvényesítsük az 1NF-et:

Tanárok és tanfolyamok
Teacher_ID Tanár neve Tanfolyam
Teacher_001 Carmen Biológia
Teacher_001 Carmen Math
Teacher_002 Veronika Math
Teacher_003 Jorge angol

Ez még mindig gyenge kialakítás, szükségtelen duplikáció bevezetésével és az úgynevezett adatbeillesztési rendellenességekkel , ami csak azt jelenti, hogy hozzájárulhat az inkonzisztens adatokhoz.

Például ha egy tanárnak több rekordja van, akkor mi van, ha bizonyos adatokat szerkeszteni kell, de az adatszerkesztést végző személy nem veszi észre, hogy több rekord létezik? A tábla ugyanazon személy számára különböző adatokat tartalmazna, anélkül, hogy egyértelműen meghatározta volna vagy elkerülné azt.

Ha ezt a táblázatot két táblázatba, a Tanárok és a tanfolyamok (lásd fent) megszakítja, az adatok közötti helyes kapcsolatot hozza létre, és ezáltal biztosítja az adatok konzisztenciáját és pontosságát.