Mi az az adatbázis-kapcsolat?

Tartalomjegyzék:

Mi az az adatbázis-kapcsolat?
Mi az az adatbázis-kapcsolat?
Anonim

Kapcsolat jön létre két adatbázistábla között, ha az egyik tábla olyan idegen kulcsot használ, amely egy másik tábla elsődleges kulcsára hivatkozik. Ez az alapfogalom a relációs adatbázis kifejezés mögött.

Hogyan működik az idegen kulcs a kapcsolat létrehozásához

Egy elsődleges kulcs egyedileg azonosítja a táblázat minden rekordját. Ez egy olyan jelölt kulcs, amely általában a táblázat első oszlopa, és az adatbázis automatikusan generálhatja, hogy biztosítsa az egyediséget. Az idegen kulcs egy másik jelölt kulcs (nem az elsődleges kulcs), amelyet egy rekord és egy másik tábla adatainak összekapcsolására használnak.

Vegyük például ezt a két táblázatot, amelyek meghatározzák, hogy melyik tanár melyik kurzust tanítja. Itt a Courses tábla elsődleges kulcsa a Course_ID. Idegen kulcsa Teacher_ID:

Curse_ID Tanfolyam_neve Teacher_ID
Curse_001 Biológia Teacher_001
Tanfolyam_002 Matek Teacher_002
Tanfolyam_003 angol Teacher_003

Látható, hogy a kurzusok idegen kulcsa megegyezik a Tanárok elsődleges kulcsával:

Teacher_ID Tanár_neve
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Elmondhatjuk, hogy a Teacher_ID idegen kulcs segített kapcsolatot létesíteni a kurzusok és a tanárok táblák között.

Image
Image

Az adatbázis-kapcsolatok típusai

Idegen kulcsok vagy más jelölt kulcsok használatával háromféle kapcsolatot valósíthat meg a táblák között:

Egy-az-egyhez

Ez a típusú kapcsolat csak egy rekordot engedélyez a kapcsolat mindkét oldalán. Az elsődleges kulcs csak egy rekordhoz (vagy egyikhez sem) kapcsolódik egy másik táblában. Például egy házasságban minden házastársnak csak egy másik házastársa van. Ez a fajta kapcsolat egyetlen táblában is megvalósítható, ezért nem használ idegen kulcsot.

Egy a sokhoz

Az egy a többhez kapcsolat lehetővé teszi, hogy az egyik tábla egyetlen rekordja egy másik tábla több rekordjához kapcsolódjon. Vegyük fontolóra egy olyan vállalkozást, amelynek adatbázisa Ügyfelek és Megrendelések táblázatokkal rendelkezik.

Egy ügyfél több rendelést is vásárolhat, de egyetlen rendelést nem lehetett több vásárlóhoz kapcsolni. Ezért a Rendelések tábla tartalmazna egy idegen kulcsot, amely megegyezik a Vevők tábla elsődleges kulcsával, míg a Vevők tábla nem tartalmazna a Rendelések táblára mutató idegen kulcsot.

Sok a sokhoz

Ez egy összetett kapcsolat, amelyben egy tábla sok rekordja hivatkozhat egy másik tábla sok rekordjára. Vállalkozásunknak például valószínűleg szüksége van az Ügyfelek és a Megrendelések táblázatokra, és valószínűleg egy Termékek táblázatra is.

Ismét, a Vevők és Rendelések tábla közötti kapcsolat egy a többhez, de vegye figyelembe a Rendelések és Termékek tábla közötti kapcsolatot. Egy rendelés több terméket is tartalmazhat, és egy termék több megrendeléshez is kapcsolódhat, mivel több ügyfél is leadhat olyan rendelést, amely ugyanazokat a termékeket tartalmazza. Egy ilyen kapcsolathoz legalább három tábla szükséges.

Miért fontosak az adatbázis-kapcsolatok?

Az adatbázistáblák közötti következetes kapcsolatok kialakítása segít az adatok integritásának biztosításában, hozzájárulva az adatbázis normalizálásához. Például mi lenne, ha egyetlen táblát sem kapcsolnánk össze idegen kulcson keresztül, hanem a Kurzusok és a Tanárok táblák adatait kombinálnánk, így:

Teacher_ID Tanár_neve Tanfolyam
Teacher_001 Carmen Biológia, matematika
Teacher_002 Veronica Matek
Teacher_003 Jorge angol

Ez a kialakítás rugalmatlan, és sérti az adatbázis normalizálásának első elvét, a First Normal Form-ot, amely kimondja, hogy minden táblázatcellának egyetlen, különálló adatot kell tartalmaznia.

Vagy úgy döntöttünk, hogy hozzáadunk egy második rekordot Carmenhez, hogy érvényesítsük az 1NF:

Teacher_ID Tanár_neve Tanfolyam
Teacher_001 Carmen Biológia
Teacher_001 Carmen Matek
Teacher_002 Veronica Matek
Teacher_003 Jorge angol

Ez még mindig gyenge konstrukció, szükségtelen duplikációkat és úgynevezett adatbeillesztési anomáliákat okoz, ami azt jelenti, hogy hozzájárulhat az adatok következetlenségéhez. Például, ha egy tanárnak több rekordja van, mi van akkor, ha néhány adatot szerkeszteni kell, de az adatszerkesztést végző személy nem veszi észre, hogy több rekord létezik? A táblázat ekkor különböző adatokat tartalmazna ugyanarra a személyre vonatkozóan, anélkül, hogy egyértelműen azonosítani lehetne vagy elkerülni lehetne.

A táblázat két táblázatra, a Tanárok és a Tanfolyamok táblázatra bontása megfelelő kapcsolatot hoz létre az adatok között, és ezáltal elősegíti az adatok következetességét és pontosságát.

Ajánlott: