Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Kezdő: Az egyfelhasználós számítógépek felhasználói felületének ismerete szükséges. Ez a cikk csak Microsoft Access-adatbázisra (.mdb vagy .accdb) vonatkozik.
Összefoglalás
Ez a cikk bemutatja, hogyan definiálhat kapcsolatokat a Microsoft Access-adatbázisokban. A cikk a következőkre tér ki:
- Mik azok a táblakapcsolatok?
- Táblakapcsolatok típusai
- Egy-több kapcsolatok
- Többszörös kapcsolatok
- Egymáshoz rendelt kapcsolatok
- Táblák közötti kapcsolatok definiálása
- Egy-a-többhöz vagy egy-az-egyhez kapcsolat definiálása
- Hogyan határozzuk meg a több-több kapcsolatot
- Hivatkozási integritás
- Kaszkádolt frissítések és törlések
- Illesztéstípusok
Mik azok a táblakapcsolatok?
A relációs adatbázisokban a kapcsolatok lehetővé teszik a redundáns adatok megelőzését. Ha például olyan adatbázist tervez, amely nyomon követi a könyvek adatait, előfordulhat, hogy egy "Címek" nevű táblázat tárolja az egyes könyvek adatait, például a könyv címét, a kiadás dátumát és a kiadót. Vannak olyan információk is, amelyeket érdemes tárolni a közzétevőről, például a közzétevő telefonszámát, címét és irányítószámát/irányítószámát. Ha mindezeket az információkat a "Címek" táblában tárolja, a közzétevő telefonszáma duplikálva lesz minden olyan címhez, amelyet a közzétevő nyomtat.
Jobb megoldás, ha a közzétevő adatait csak egyszer, egy külön táblában tárolja, amelynek neve "Közzétevők". Ezután elhelyez egy mutatót a "Címek" táblában, amely a "Publishers" tábla egyik bejegyzésére hivatkozik.
Annak érdekében, hogy az adatok szinkronizálva maradnak, kényszerítheti a hivatkozási integritást a táblák között. A hivatkozási integritási kapcsolatok segítenek meggyőződni arról, hogy az egyik tábla információi megegyeznek a másikban lévő adatokéval. Például a "Címek" tábla minden címét egy adott közzétevőhöz kell társítani a "Közzétevők" táblában. Az adatbázisban nem létező közzétevők nem adhatnak hozzá címet az adatbázishoz.
Az adatbázisok logikai kapcsolatai lehetővé teszik az adatok hatékony lekérdezését és jelentések létrehozását.
Táblakapcsolatok típusai
A kapcsolatok úgy működnek, hogy a kulcsoszlopokban, általában olyan oszlopokban (vagy mezőkben) lévő adatokat egyeztetnek meg, amelyek mindkét táblában ugyanazzal a névvel rendelkeznek. A kapcsolat a legtöbb esetben az egyes sorok elsődleges kulcsát vagy egyedi azonosító oszlopát köti össze az egyik táblából egy másik tábla egyik mezőjébe. A másik táblázat oszlopát "idegen kulcsnak" nevezzük. Ha például nyomon szeretné követni az egyes könyvcímek értékesítéseit, akkor létre kell hoznia egy kapcsolatot a "Címek" tábla elsődleges kulcsoszlopa (nevezzük title_ID) és a "Sales" tábla title_ID nevű oszlopa között. A "Sales" táblázat title_ID oszlopa a külső kulcs.
A táblák között háromféle kapcsolat létezik. A létrehozott kapcsolat típusa a kapcsolódó oszlopok definiálásának módjától függ.
Egytöbb kapcsolatok
Az egy-a-többhöz kapcsolat a leggyakoribb kapcsolattípus. Ilyen típusú kapcsolat esetén az A tábla egy sora számos egyező sort tartalmazhat a B táblában. A B táblában azonban csak egy egyező sor lehet az A táblában. A "Közzétevők" és a "Címek" táblák például egy-a-többhöz kapcsolatban vannak. Vagyis minden közzétevő számos címet állít elő. De minden cím csak egy kiadótól származik.
Egy-több kapcsolata akkor jön létre, ha a kapcsolódó oszlopok közül csak az egyik rendelkezik elsődleges kulccsal vagy egyedi korlátozással.
Az Access kapcsolatablakában az egy-a-többhöz kapcsolat elsődleges kulcsoldalát egy 1-es szám jelöli. A kapcsolat idegen kulcsoldalát egy végtelen szimbólum jelöli.
Többszörös kapcsolatok
Sok-sokhoz kapcsolatokban az A tábla egyik sora számos egyező sorra vonatkozhat a B táblában, és fordítva. Ezt a kapcsolatot úgy hozhatja létre, hogy meghatároz egy harmadik táblát, amelyet elágazási táblának nevezünk. Az elágazási tábla elsődleges kulcsa az A és a B táblából származó idegen kulcsokból áll. A "Szerzők" tábla és a "Címek" tábla például egy több-a-többhöz kapcsolattal rendelkezik, amelyet az egyes tábláktól a "TitleAuthors" tábláig egy-a-többhöz kapcsolat határoz meg. A "TitleAuthors" tábla elsődleges kulcsa a au_ID oszlop (a "Szerzők" tábla elsődleges kulcsa) és a title_ID oszlop (a "Címek" tábla elsődleges kulcsa) kombinációja.
Egymáshoz rendelt kapcsolatok
Az egy-az-egyhez kapcsolatokban az A tábla egy sora legfeljebb egy egyező sort tartalmazhat a B táblában, és fordítva. Az egy-az-egyhez kapcsolat akkor jön létre, ha mindkét kapcsolódó oszlop elsődleges kulcs, vagy egyedi megkötések vannak érvényben.
Ez a fajta kapcsolat nem gyakori, mert a legtöbb ilyen kapcsolatban álló információ egy táblában található. Az alábbi műveletek végrehajtásához használhat egy-az-egyhez kapcsolatot:
- Több oszlopból álló táblázat felosztása.
- A tábla egy részének elkülönítése biztonsági okokból.
- A tábla törlésével rövid élettartamú, könnyen törölhető adatokat tárolhat.
- Tárolja azokat az információkat, amelyek csak a főtábla egy részhalmazára vonatkoznak.
Az Accessben az egy-az-egyhez kapcsolat elsődleges kulcs részét egy kulcsszimbólum jelöli. Az idegen kulcs oldalát egy kulcsszimbólum is jelzi.
Táblák közötti kapcsolatok definiálása
Ha táblák közötti kapcsolatot hoz létre, a kapcsolódó mezőknek nem kell ugyanazokkal a névvel rendelkezniük. A kapcsolódó mezőknek azonban ugyanazzal az adattípussal kell rendelkezniük, kivéve, ha az elsődleges kulcsmező AutoNumber mező. Csak akkor egyeztethet egy Számláló mezőt egy Szám mezővel, ha az egyező mezők Mezőmérete azonos. Egy automatikus sorszámozás mezőt például egy szám mezővel akkor hasonlíthatunk össze, ha mindkét mező Mezőméret tulajdonsága hosszú egész szám. Még ha mindkét egyező mező Szám mező, akkor is ugyanazzal aFieldSizeproperty beállítással kell rendelkezniük.
Egy-többhöz vagy egy-egyhez viszony meghatározása
Egy-többhöz vagy egy-az-egyhez kapcsolat létrehozásához kövesse az alábbi lépéseket:
Zárja be az összes táblát. A megnyitott táblák közötti kapcsolatok nem hozhatók létre és nem módosíthatók.
Az Access 2002-ben vagy az Access 2003-ban kövesse az alábbi lépéseket:
- Az F11 billentyű lenyomásával váltson az Adatbázis ablakra.
- Az Eszközök menüben kattintson a Kapcsolatok elemre.
Az Access 2007, az Access 2010 vagy az Access 2013 alkalmazásban kattintson a Kapcsolatok elemre az Adatbáziseszközök lap Megjelenítés/elrejtés csoportjában.
Ha még nem definiált kapcsolatokat az adatbázisban, a Tábla megjelenítése párbeszédpanel automatikusan megjelenik. Ha hozzá szeretné adni az összekapcsolni kívánt táblákat, de a Tábla megjelenítése párbeszédpanel nem jelenik meg, kattintson a Táblák megjelenítése parancsra a Kapcsolatok menüben.
Kattintson duplán az összekapcsolni kívánt táblák nevére, majd zárja be a Táblázat megjelenítése párbeszédpanelt. Ha egy táblával önmagával szeretne kapcsolatot létrehozni, adja hozzá kétszer a táblát.
Húzza az egyik táblából a másik tábla kapcsolódó mezőjébe hivatkozni kívánt mezőt. Több mező húzásához nyomja le a Ctrl billentyűt, kattintson az egyes mezőkre, majd húzza őket.
A legtöbb esetben az elsődleges kulcs mezőt (ez a mező félkövér szövegben jelenik meg) egy táblából egy hasonló mezőre húzza (ez a mező gyakran ugyanazzal a névvel rendelkezik), amelyet a másik táblában idegen kulcsnak neveznek.
Megjelenik a Kapcsolatok szerkesztése párbeszédpanel. Győződjön meg arról, hogy a két oszlopban megjelenő mezőnevek helyesek. Szükség esetén módosíthatja a neveket.
Szükség esetén adja meg a kapcsolat beállításait. Ha a Kapcsolatok szerkesztése párbeszédpanelen információval kell rendelkeznie egy adott elemről, kattintson a kérdőjel gombra, majd kattintson az elemre. (Ezeket a lehetőségeket a cikk későbbi részében részletesen ismertetjük.)
Kattintson a Létrehozás gombra a kapcsolat létrehozásához.
Ismételje meg a 4–7. lépést minden egyes összekapcsolni kívánt táblapár esetében.
Amikor bezárja a Kapcsolatok szerkesztése párbeszédpanelt, az Access megkérdezi, hogy menti-e az elrendezést. Akár menti az elrendezést, akár nem menti az elrendezést, a létrehozott kapcsolatok az adatbázisban lesznek mentve.
Megjegyzés:
Nemcsak táblákban, hanem lekérdezésekben is létrehozhat kapcsolatokat. A hivatkozási integritás azonban nem kényszeríthető ki lekérdezésekkel.
Többszörös kapcsolatok meghatározása
Több-többhöz kapcsolat létrehozásához kövesse az alábbi lépéseket:
Hozza létre a két táblát, amelyek sok-sok közötti kapcsolatban lesznek.
Hozzon létre egy harmadik táblát. Ez a kapcsolótábla. A csomóponttáblában adjon hozzá új mezőket, amelyek definíciói megegyeznek az 1. lépésben létrehozott táblák elsődleges kulcsmezőivel. A kapcsolótáblában az elsődleges kulcsmezők idegen kulcsként funkcionálnak. Más mezőket is hozzáadhat a csomóponttáblához, ugyanúgy, mint bármely más táblához.
Az elágazási táblában állítsa be az elsődleges kulcsot úgy, hogy a másik két tábla elsődleges kulcsmezőit is tartalmazza. Egy "TitleAuthors" elágaztatási táblában például az elsődleges kulcs az OrderID és a ProductID mezőkből áll.
Megjegyzés:
Elsődleges kulcs létrehozásához kövesse az alábbi lépéseket:
Nyisson meg egy táblát Tervező nézetben.
Jelölje ki az elsődleges kulcsként definiálni kívánt mezőt vagy mezőket. Egy mező kijelöléséhez kattintson a kívánt mező sorválasztójére. Több mező kijelöléséhez tartsa lenyomva a Ctrl billentyűt, majd kattintson az egyes mezők sorválasztójára.
Az Access 2002-ben vagy az Access 2003-ban kattintson az Elsődleges kulcs elemre az eszköztáron.
Az Access 2007-ben kattintson az Elsődleges kulcs elemre a Tervezés lap Eszközök csoportjában.
Megjegyzés:
Ha azt szeretné, hogy a többmezős elsődleges kulcs mezőinek sorrendje eltérjen a tábla mezőinek sorrendjétől, kattintson az eszköztár Indexek gombjára az Indexek párbeszédpanel megjelenítéséhez, majd rendezze újra a PrimaryKey nevű index mezőneveit.
Adjon meg egy több-a-többhöz kapcsolatot az elsődleges táblák és a kapcsolótábla között.
Hivatkozási integritás
A hivatkozási integritás olyan szabályrendszer, amelyet az Access használ annak ellenőrzésére, hogy a kapcsolódó táblák rekordjai közötti kapcsolatok érvényesek-e, és hogy véletlenül ne törölje vagy módosítsa a kapcsolódó adatokat. A hivatkozási integritást akkor állíthatja be, ha az alábbi feltételek teljesülnek:
- Az elsődleges táblázat egyeztethető mezője elsődleges kulcs, vagy egyedi indexszel rendelkezik.
- A kapcsolódó mezők adattípusa megegyezik. Két kivétel van. Az Számláló mező olyan Szám mezőhöz kapcsolható, amely hosszú egész szám tulajdonságbeállítással rendelkezik
FieldSize
, és egy Számláló mező, amely a Replikációazonosító tulajdonságbeállítással rendelkezik, kapcsolható egy olyan Szám mezőhöz, amely szintén Replikációazonosító tulajdonságbeállítással rendelkezikFieldSize
. - Mindkét tábla ugyanahhoz az Access-adatbázishoz tartozik. Ha a táblák csatolt táblák, akkor access formátumú tábláknak kell lenniük, és meg kell nyitnia azt az adatbázist, amelyben a rendszer tárolja őket a hivatkozási integritás beállításához. A hivatkozási integritás nem kényszeríthető más formátumú adatbázisokból származó csatolt táblákra.
A hivatkozási integritás használatakor a következő szabályok érvényesek:
- Nem adhat meg olyan értéket a kapcsolódó tábla idegenkulcs-mezőjébe, amely nem szerepel az elsődleges tábla elsődleges kulcsában. Az idegen kulcsban azonban megadhat null értéket. Ez azt határozza meg, hogy a rekordok nem kapcsolódnak egymáshoz. Nem rendelkezhet például olyan rendeléssel, amely nem létező ügyfélhez van rendelve. A CustomerID mezőbe beírt Null értékű rendeléssel azonban senkihez sem rendelhet rendelést.
- Nem törölhet rekordot az elsődleges táblából, ha egy kapcsolódó táblában egyező rekordok találhatók. Nem törölhet például egy alkalmazotti rekordot az "Alkalmazottak" táblából, ha az alkalmazotthoz rendelések vannak rendelve a "Rendelések" táblában.
- Az elsődleges tábla elsődleges kulcsértékét nem módosíthatja, ha a rekordhoz kapcsolódó rekordok vannak. Például nem módosíthatja egy alkalmazott azonosítóját az "Alkalmazottak" táblában, ha az adott alkalmazotthoz rendelések vannak rendelve a "Rendelések" táblában.
Kaszkádolt frissítések és törlések
Az olyan kapcsolatok esetében, amelyekben a hivatkozási integritás kényszerítve van, megadhatja, hogy az Access automatikusan kaszkádolt frissítést vagy a kapcsolódó rekordok kaszkádolt törlését szeretné-e. Ha ezeket a beállításokat adja meg, a hivatkozási integritási szabályokkal általában megakadályozható törlési és frissítési műveletek engedélyezve lesznek. Amikor rekordokat töröl, vagy módosítja az elsődleges kulcsértékeket egy elsődleges táblában, az Access végrehajtja a kapcsolódó táblák szükséges módosításait a hivatkozási integritás megőrzése érdekében.
Ha a kapcsolat definiálásakor bejelöli a Kaszkádolt frissítés kapcsolódó mezők jelölőnégyzetet, bármikor, amikor módosítja egy rekord elsődleges kulcsát az elsődleges táblában, a Microsoft Access automatikusan frissíti az elsődleges kulcsot az összes kapcsolódó rekord új értékére. Ha például egy ügyfél azonosítóját módosítja a "Vevők" táblában, a "Rendelések" tábla CustomerID mezője automatikusan frissül az adott ügyfél rendeléseihez, hogy a kapcsolat ne szakadjon meg. Az Access üzenet megjelenítése nélkül kaszkádolt frissítéseket jelenít meg.
Megjegyzés:
Ha az elsődleges tábla elsődleges kulcsa Számláló mező, a Kapcsolódó mezők kaszkádolt frissítése jelölőnégyzetének nincs hatása, mert nem módosíthatja a Számláló mező értékét.
Ha a kapcsolat definiálásakor bejelöli a Kaszkádolt kapcsolódó rekordok törlése jelölőnégyzetet, az Elsődleges tábla rekordjainak törlésekor az Access automatikusan törli a kapcsolódó táblában lévő kapcsolódó rekordokat. Ha például töröl egy ügyfélrekordot a "Vevők" táblából, a rendszer automatikusan törli az ügyfél összes rendelését a "Rendelések" táblából. (Ide tartoznak a "Rendelés részletei" táblában található rekordok, amelyek a "Rendelések" rekordokhoz kapcsolódnak. Amikor egy űrlapról vagy adatlapról töröl rekordokat, amikor a Kapcsolódó rekordok kaszkádolt törlése jelölőnégyzet be van jelölve, az Access figyelmezteti, hogy a kapcsolódó rekordok is törölhetők. Ha azonban törlési lekérdezéssel törli a rekordokat, az Access figyelmeztetés megjelenítése nélkül automatikusan törli a kapcsolódó táblák rekordjait.
Illesztéstípusok
Három illesztéstípus létezik. Ezeket az alábbi képernyőképen tekintheti meg:
Az 1. lehetőség egy belső illesztés definiálása. A belső illesztés olyan illesztés, amelyben két tábla rekordjai csak akkor lesznek kombinálva egy lekérdezés eredményében, ha az összekapcsolt mezők értékei megfelelnek egy megadott feltételnek. Egy lekérdezésben az alapértelmezett illesztés egy belső illesztés, amely csak akkor választja ki a rekordokat, ha az összekapcsolt mezők értékei egyeznek.
A 2. lehetőség bal oldali külső illesztést határoz meg. A bal oldali külső illesztés olyan illesztés, amelyben a lekérdezés SQL-utasításában a LEFT JOIN művelet bal oldalának összes rekordja hozzá lesz adva a lekérdezés eredményeihez, még akkor is, ha a jobb oldalon lévő táblázatból nem találhatók egyező értékek az illesztett mezőben.
A 3. lehetőség egy jobb oldali külső illesztést határoz meg. A jobb oldali külső illesztés olyan illesztés, amelyben a lekérdezés SQL-utasításában a RIGHT JOIN művelet jobb oldalán lévő összes rekord hozzá lesz adva a lekérdezés eredményeihez, még akkor is, ha a bal oldalon lévő táblából nem találhatók egyező értékek az illesztett mezőben.