Az adatbázis "relációs" vagy "kapcsolat" kifejezés azt a módot írja le, ahogyan a táblázatokban lévő adatok kapcsolódnak.
Az adatbázisok világába újonnan érkezők gyakran nehézségekbe ütköznek az adatbázis és a táblázat közötti különbségtételt. Az adatokat táblázatok láthatók, és felismerik, hogy az adatbázisok lehetővé teszik az adatok új módon történő megszervezését és lekérdezését , de nem ismerik fel a relációs adatbázis-technológiát alkalmazó adatok közötti kapcsolatok jelentőségét.
A kapcsolatok lehetővé teszik a különböző adatbázis-táblák közötti kapcsolatok hatékony leírását. Ezeket a kapcsolatokat akkor lehet kihasználni, hogy hatalmas, kereszttáblás lekérdezéseket lehessen végrehajtani.
Adatbázis-kapcsolatok típusai
Három különböző típusú adatkapcsolat létezik, amelyek mindegyikét a táblázatba sorolt táblák sorszáma szerint nevezik el. Mindhárom kapcsolattípus létezik két táblázat között.
- Egyedülálló kapcsolatok akkor jelentkeznek, ha az első táblázatban szereplő minden egyes bejegyzésnek van egy, és csak egy, a második táblázatban szereplő azonosítója. A "one-to-one" kapcsolatokat ritkán használják, mivel gyakran hatékonyabb az összes információt egyetlen táblában elhelyezni. Egyes adatbázis-tervezők kihasználják ezt a kapcsolatot olyan táblák létrehozásával, amelyek egy másik táblázat tábla adatait tartalmazzák.
- Az adatbázis-kapcsolat leggyakoribb típusa az egy-sok kapcsolatok. Ezek akkor jelentkeznek, amikor az A táblázatban szereplő minden rekord egy vagy több rekordot a B. táblázatban foglal magában, de a B. táblázatban szereplő minden rekord az A. táblázatban szereplő egyetlen rekordnak felel meg. Például a tanárok és egy diákok tábla közötti kapcsolat egy általános iskolában az adatbázis valószínűleg egy-sok kapcsolatot jelent, mivel minden diáknak csak egy tanára van, de minden tanárnak több diákja van. Ez a sokoldalú tervezés segít elkerülni a duplikált adatokat.
- Sok-sok kapcsolat akkor fordul elő, amikor az A táblázatban szereplő minden rekord egy vagy több rekordot tartalmaz a B. táblázatban, és a B táblában minden rekord egy vagy több rekordot tartalmaz az A. táblázatban. Például a tanárok és a tanfolyamok közötti kapcsolat táblázat valószínűleg sok-sok-sok, mert minden tanár többet is taníthat egy tanfolyamon, és minden tanfolyamnak több oktatója is lehet.
Önhivatkozó kapcsolatok: különleges eset
Önreferencia kapcsolatok akkor jelentkeznek, ha csak egy táblázat van. Az egyik gyakori példa az alkalmazottak táblája, amely információkat tartalmaz minden alkalmazott felügyeletéről. Minden felügyelő egyben munkavállaló, és saját felügyelője. Ebben az esetben létezik egy-több önreferencia-kapcsolat, mivel minden alkalmazottnak van egy felügyelője, de minden felügyelőnek több alkalmazottja lehet.
Külföldi kulcsokkal való kapcsolatok létrehozása
A táblák közötti kapcsolatokat külföldi kulcs megadásával hozza létre. Ez a kulcs a relációs adatbázisban megmutatja, hogyan viszonyulnak az asztalok. Sok esetben az A. táblázat egy oszlopa tartalmazza a B táblázatban említett elsődleges kulcsokat.
Tekintsük újra a tanárok és a diákok tábláit. A Tanárok táblázat csak egy azonosítót, egy nevet és egy kurzus oszlopot tartalmaz:
InstructorID | Tanár neve | Tanfolyam |
---|---|---|
001 | gipsz Jakab | angol |
002 | Jane Schmoe | Math |
A diákok táblája tartalmaz egy azonosítót, nevet és egy idegen kulcs oszlopot:
Diákigazolvány | Tanuló név | Teacher_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
A diákok táblázatában a Teacher_FK oszlop hivatkozik az oktató elsődleges kulcsértékére a Tanárok táblában.
Az adatbázis-tervezők gyakran használják a "PK" vagy az "FK" nevet az oszlop nevében, hogy könnyen azonosítsák az elsődleges kulcsot vagy az idegen kulcs oszlopot.
Ne feledje, hogy ez a két táblázat a tanárok és a diákok közötti egy-sok kapcsolatot szemlélteti.
Kapcsolatok és referenciális integritás
Miután hozzáadott egy idegen kulcsot egy táblához, létrehozhat egy adatbázis-kényszert, amely a két táblázat közötti referenciális integritást érvényesíti. Ez biztosítja, hogy az asztalok közötti kapcsolatok konzisztensek maradjanak. Ha egy táblázatnak van egy idegen kulcs másik táblázathoz, a referenciális integritás fogalma azt mondja ki, hogy a B táblázatban szereplő bármely külföldi kulcsértéknek az A táblázatban szereplő meglévő rekordra kell hivatkoznia.
A kapcsolatok megvalósítása
Az adatbázisától függően különbözõ módon hajthatja végre a táblák közötti kapcsolatokat. A Microsoft Access varázslót biztosít, amely könnyen összekapcsolja a táblázatokat és a referenciális integritást.
Ha közvetlenül írsz SQL-t, akkor először hozd létre a Teachers táblát, és az elsődleges kulcsnak egy azonosító oszlop deklarálása:
CREATE TABLE Tanárok (
InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Tanári név VARCHAR (100),
Tanfolyam VARCHAR (100)
);
Amikor létrehozza a diákok tábláját, kijelenti, hogy a Teacher_FK oszlop egy idegen kulcs, amely a Teachers' táblában az InstructorID oszlopra hivatkozik:
CREATE TABLE A diákok (
StudentID INT AUTO_INCREMENT PRIMARY KEY,
Student_Name VARCHAR (100), Teacher_FK INT,
KÜLFÖLDI KEY (Teacher_FK) REFERENCIÁK Tanárok (InstructorID)
);
A Csatlakozási Táblákkal való kapcsolatok használata
Miután létrehoztál egy vagy több kapcsolatot az adatbázisában, az SQL JOIN lekérdezések segítségével kihasználhatod az erődet, hogy több táblából származó adatokat egyesítsünk. A leggyakoribb csatlakozás típusa az SQL INNER JOIN, vagy egy egyszerű csatlakozás. Ez a fajta csatlakozás visszaadja azokat a rekordokat, amelyek megfelelnek a csatlakozási feltételeknek több táblázatból. Például, ez a JOIN feltétel visszaadja a Student_Name, Teacher_Name és Course kurzust, ahol a diákok táblázatában lévő idegen kulcs megegyezik a Teachers tábla elsődleges kulcsával:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
A diákoktól
INNER JOIN Tanárok
ON Students.Teacher_FK = Teachers.InstructorID;
Ez a kijelentés valami hasonló táblát állít elő:
Visszatérő táblázat az SQL Join utasításból
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish