Táblák közötti kapcsolatok definiálása Access-adatbázisban

Eredeti tudásbáziscikk száma: 304466

Megjegyzés:

Kezdő: A felhasználói felület ismeretét igényli az egyfelhasználós számítógépeken. Ez a cikk csak a Microsoft Access-adatbázisokra vonatkozik (.mdb vagy .accdb).

Összefoglalás

Ez a cikk bemutatja, hogyan definiálhat kapcsolatokat a Microsoft Access-adatbázisokban. A cikk a következő témaköröket tartalmazza:

  • Mik azok a táblakapcsolatok?
  • Táblakapcsolatok típusai
    • Egy-a-többhöz kapcsolatok
    • Több-a-többhöz kapcsolatok
    • Egy-az-egyhez kapcsolatok
  • Táblák közötti kapcsolatok definiálása
    • Egy-a-többhöz vagy egy-az-egyhez kapcsolat definiálása
    • Több-a-többhöz kapcsolat definiálása
  • 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önyvekkel kapcsolatos információkat, előfordulhat, hogy egy "Címek" nevű táblázat tárolja az egyes könyvekkel kapcsolatos információkat, például a könyv címét, a közzététel dátumát és a kiadót. A közzétevőről további információkat is tárolhat, például a közzétevő telefonszámát, címét és irányítószámát. Ha ezeket az adatokat a "Címek" táblában tárolná, 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, amelyet "Közzétevőknek" hívunk. Ezután helyezzen egy mutatót a "Címek" táblába, amely a "Közzétevők" tábla egyik bejegyzésére hivatkozik.

Az adatok szinkronizálásának biztosítása érdekében kényszerítheti a hivatkozási integritást a táblák között. A hivatkozási integritási kapcsolatok segítenek biztosítani, hogy az egyik tábla adatai egyezzenek a másikban lévő információkkal. A "Címek" táblában szereplő címeket például egy adott közzétevőhöz kell társítani a "Közzétevők" táblában. Nem adható hozzá cím az adatbázishoz olyan közzétevő számára, amely nem létezik az adatbázisban.

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ő adatok egyeznek, amelyek mindkét táblában azonos nevűek. A legtöbb esetben a kapcsolat összeköti az elsődleges kulcsot vagy az egyes sorok egyedi azonosító oszlopát az egyik táblából egy másik tábla egyik mezőjébe. A másik tábla oszlopát "idegen kulcsnak" nevezzük. Ha például az egyes könyvcímek értékesítéseit szeretné nyomon követni, akkor kapcsolatot hoz létre az elsődleges kulcs oszlopa (nevezzük title_ID) a "Címek" tábla és a "Sales" tábla title_ID nevű oszlopa között. A " Sales" tábla title_ID oszlopa az idegen 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.

Egy-a-többhöz kapcsolatok

Az egy-a-többhöz kapcsolat a leggyakoribb kapcsolattípus. Ilyen kapcsolat esetén az A tábla egy sorának számos egyező sora lehet a B táblában. A B tábla egy sora azonban csak egy egyező sort tartalmazhat az A táblázatban. A "Közzétevők" és a "Címek" táblák például egy-a-többhöz kapcsolatban vannak. Ez azt jelzi, hogy minden közzétevő számos címet állít elő. De minden cím csak egy kiadótól származik.

Egy-a-többhöz kapcsolat akkor jön létre, ha a kapcsolódó oszlopok közül csak az egyik elsődleges kulcs, vagy egyedi korlátozással rendelkezik.

Az Access kapcsolatablakában az egy-a-többhöz kapcsolat elsődleges kulcsoldalát egy 1-es szám jelöli. A kapcsolat külső kulcsoldalát egy végtelen szimbólum jelöli.

Képernyőkép egy egy-a-többhöz kapcsolatokról az Access Kapcsolatok ablakában.

Több-a-többhöz kapcsolatok

A több-a-többhöz kapcsolatokban az A tábla egy sorának számos egyező sora lehet a B táblában, és fordítva. Ilyen kapcsolatot egy harmadik tábla definiálásával hozhat létre, amelyet elágazási táblának nevezünk. Az elágazási tábla elsődleges kulcsa az A és a B tábla idegen kulcsaibó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ák és a "TitleAuthors" tábla egy-a-többhöz kapcsolata 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.

Képernyőkép egy több-a-többhöz kapcsolatokról az Access Kapcsolatok ablakában.

Egy-az-egyhez kapcsolatok

Egy-az-egyhez kapcsolatban az A tábla egy sora nem tartalmazhat egynél több egyező sort 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 korlátozásokkal rendelkezik.

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áblázat egy részének elkülönítése biztonsági okokból.
  • Tárolja a rövid élettartamú adatokat, amelyeket a tábla törlésével könnyen törölhet.
  • 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 kulcsoldalát egy kulcsszimbólum jelöli. Az idegen kulcs oldalát egy kulcsszimbólum is jelöli.

Táblák közötti kapcsolatok definiálása

A táblák közötti kapcsolat létrehozásakor 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 kulcs mezője Számláló típusú. A Számláló mezőt csak akkor egyeztetheti Szám mezővel, ha mindkét egyező mező Mezőmérettulajdonsága megegyezik. Egy Számláló és egy Szám mezőnek például akkor lehet megfeleltethető, ha mindkét mező MezőMérettulajdonsá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 rendelkeznie.

Egy-a-többhöz vagy egy-az-egyhez kapcsolat definiálása

Egy-a-többhöz vagy egy-az-egyhez kapcsolat létrehozásához kövesse az alábbi lépéseket:

  1. Zárja be az összes táblát. Nyitott táblák között nem hozható létre és nem módosítható kapcsolat.

  2. Az Access 2002-ben vagy az Access 2003-ban kövesse az alábbi lépéseket:

    1. Az F11 billentyű lenyomásával váltson az Adatbázis ablakra.
    2. 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.

  3. Ha még nem definiált kapcsolatokat az adatbázisban, automatikusan megjelenik a Tábla megjelenítése párbeszédpanel. 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 elemre a Kapcsolatok menüben.

  4. Kattintson duplán az összekapcsolni kívánt táblák nevére, majd zárja be a Tábla megjelenítése párbeszédpanelt. Ha egy tábla és maga között szeretne kapcsolatot létrehozni, kétszer adja hozzá a táblát.

  5. Húzza az egyik táblából a másik tábla kapcsolódó mezőjébe az összekapcsolni 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 kulcsmezőt (ez a mező félkövér szöveggel jelenik meg) húzza az egyik táblából egy hasonló mezőre (ez a mező gyakran ugyanazzal a névvel rendelkezik), amelyet a másik táblában idegen kulcsnak neveznek.

  6. 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 az elemre. (Ezeket a lehetőségeket a cikk későbbi részében ismertetjük részletesen.)

  7. Kattintson a Létrehozás gombra a kapcsolat létrehozásához.

  8. Ismételje meg a 4–7. lépést minden összekapcsolni kívánt táblapár esetében.

    Amikor bezárja a Kapcsolatok szerkesztése párbeszédpanelt , az Access megkérdezi, hogy szeretné-e menteni 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ást azonban a lekérdezések nem kényszerítik ki.

Több-a-többhöz kapcsolat definiálása

Több-a-többhöz kapcsolat létrehozásához kövesse az alábbi lépéseket:

  1. Hozza létre azt a két táblát, amelyek több-a-többhöz kapcsolatban fognak állni.

  2. Hozzon létre egy harmadik táblát. Ez az elágazási 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. Az elágazási táblában az elsődleges kulcsmezők idegen kulcsokként működnek. Az elágazási táblához ugyanúgy adhat hozzá más mezőket, mint bármely más táblát.

  3. Az elágazási táblában állítsa be úgy az elsődleges kulcsot, hogy tartalmazza a másik két tábla elsődleges kulcsmezőit. Például egy "TitleAuthors" elágaztatási táblában 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:

    1. Nyisson meg egy táblát Tervező nézetben.

    2. 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ára. Több mező kijelöléséhez tartsa lenyomva a Ctrl billentyűt, majd kattintson az egyes mezők sorválasztójára.

    3. Az Access 2002-ben vagy az Access 2003-ban kattintson az eszköztár Elsődleges kulcs elemére.

      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 ezen mezőinek sorrendjétől, kattintson az eszköztár Indexek elemére az Indexek párbeszédpanel megjelenítéséhez, majd rendezze újra a PrimaryKey nevű index mezőneveit.

  4. Egy-a-többhöz kapcsolat definiálása az egyes elsődleges táblák és a csomóponttáblák között.

Hivatkozási integritás

A hivatkozási integritás olyan szabályrendszer, amellyel az Access ellenőrzi, hogy a kapcsolódó táblák rekordjai közötti kapcsolatok érvényesek-e, és hogy nem törli vagy módosítja véletlenül a kapcsolódó adatokat. A hivatkozási integritást akkor állíthatja be, ha az alábbi feltételek mindegyike teljesül:

  • Az elsődleges tábla egyező mezője egy elsődleges kulcs, vagy egyedi indexet tartalmaz.
  • A kapcsolódó mezők adattípusa megegyezik. Két kivétel van. A Számláló mező olyan Szám mezőhöz kapcsolódhat, amelynek FieldSize tulajdonságbeállítása Hosszú egész, a Számláló mező FieldSize pedig a Replikációazonosító tulajdonságbeállítással rendelkezik.FieldSize
  • 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. Hivatkozási integritás nem kényszeríthető más formátumú adatbázisokból származó csatolt táblák esetében.

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ében, amely nem létezik 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. Azonban a CustomerID (Ügyfélazonosító ) mezőben egy Null érték beírásával senkihez nem rendelhető rendelés.
  • Nem törölhet rekordot az elsődleges táblából, ha egyező rekordok találhatók egy kapcsolódó táblában. 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

Olyan kapcsolatok esetén, 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 elsődleges kulcsértékeket módosít 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 kapcsolat definiálásakor bejelöli a Kapcsolt mezők kaszkádolt frissítése jelölőnégyzetet, valahányszor 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 új értékre az összes kapcsolódó rekordban. Ha például módosítja egy ügyfél azonosítóját 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 üzenetek 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 Kapcsolt mezők kaszkádolt frissítése jelölőnégyzet bejelölése nincs hatással, mert a Számláló mező értékét nem módosíthatja.

Ha kapcsolat definiálásakor bejelöli a Kapcsolt rekordok kaszkádolt törlése jelölőnégyzetet, az Access minden alkalommal, amikor rekordokat töröl az elsődleges táblában, az Access automatikusan törli a kapcsolódó tábla kapcsolódó rekordjait. Ha például töröl egy ügyfélrekordot a "Vevők" táblából, a vevő összes rendelése automatikusan törlődik a "Rendelések" táblából. (Ide tartoznak a "Rendelés részletei" tábla azon rekordjai, amelyek a "Rendelések" rekordokhoz kapcsolódnak. Ha egy űrlapról vagy adatlapról töröl rekordokat, amikor a Kapcsolt 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ő lekérdezéssel töröl 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 a következő képernyőképen tekintheti meg:

Képernyőkép az Illesztés tulajdonságairól, amelyen három illesztéstípus látható.

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 egyesítve a lekérdezés eredményeiben, ha az illesztett mezők értékei megfelelnek egy megadott feltételnek. A lekérdezésekben az alapértelmezett illesztés egy belső illesztés, amely csak akkor választja ki a rekordokat, ha az illesztett 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án található összes rekord hozzá lesz adva a lekérdezés eredményeihez, még akkor is, ha a jobb oldali tábla illesztett mezőjében nincsenek egyező értékek.

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 található összes rekord hozzá lesz adva a lekérdezés eredményeihez, még akkor is, ha a bal oldali tábla illesztett mezőjében nincsenek egyező értékek.