2.2. Kulcsok

iDevice ikon

Ebben a fejezetben a relációs adatbázisban fennálló kapcsolatokat kell tisztázni az egyes táblák elméleti kulcsának és külső kulcsának segítségével. Meg kell tanulni az SQL nyelv használata céljából, hogy két tábla csak akkor áll kapcsolatban, ha az egyik külső kulcsként tartalmazza a másik kulcsát. Az adatbázisban való jártasság érdekében jól kell használni az egyszerű és összetett kulcs, illetve a kulcsszerepű és másodlagos tulajdonság fogalmát.


iDevice ikon

Az általános alapfogalmak bevezetésénél már volt szó a különleges tulajdonságról vagy tulajdonságcsoportról, mely egyértelműen meghatározza az egyed-előfordulást. Relációs adatmodell esetén is (amikor az egyed tábla), annak valamely tulajdonsága, vagy tulajdonságcsoportja képes lehet a tábla sorát beazonosítani.

A reláció kulcsa

Az A attribútumhalmaz egy K részhalmaza kulcs, ha

  1. a K értékei az R reláció mindegyik sorát egyértelműen meghatározzák,
  2. de ha egyetlen attribútumot is elhagyunk K-ból, az 1. már nem teljesül. 

Aláhúzással jelöljük a reláció kulcsát.

Pl.: A rendelési bizonylatok egyetlen táblájának, a RENDELÉSnek a kulcsa: {rendszám, cikkszám} halmaz; valószínűleg azért, mert egy bizonylat egyetlen tételét a rendelésszám és cikkszám egyértelműen meghatározza.

Figyelem, az ilyen információt a rendszerfejlesztés megbízójától szerezheti meg a fejlesztő, de legalább tőle kap megerősítést, amikor tapasztalatból ezt megsejti.

Nézzük csak meg: ha ismerjük a rendszám és a cikkszám értékét, akkor az összes többi tulajdonság értékét ismerjük. Ez a kettő egyértelműen meghatározza a tábla többi oszlopának értékét, beleértve a rendelt mennyiséget is.

Az is nyilvánvaló, hogy a kulcsértéknek ezek után csak egyszer szabad előfordulnia a relációban. Ebből az is következik, hogy a kulcsot kötelezően ki kell tölteni.

 

A kulcsok csoportosítása:

  • egyszerű kulcs: egyetlen attribútumból áll
  • összetett kulcs: egyébként

kulcsszerepű attribútum: a kulcsnak a része
másodlagos attribútum vagy leíró: egyébként 

Például:

A {személyiszám} egyszerű kulcs
a DOLGOZÓ {személyszám, név, fizetés} relációban,

A {személyiszám, hónap} összetett kulcs
a TÖRLESZTÉS {személyszám, hónap, összeg}-ben.

Az összetett kulcs (halmazelméleti indokból) tagjainak sorrendje nem számít. Tehát az elméleti kulcs fogalmát ne keverjük a technikai kulcskifejezés fogalmával, ahol már fontos a sorrend, mert rendezési szempont. (A Törlesztés kulcskifejezése lehet személyszám és azon belül hónap, vagy fordítva, hónapon belül személyszám. De az egyik mellett döntve biztos létrehoznánk egy duplikált, nem egyedi kulcsot is a hónapra vagy a személyszámra, mert arra is kell majd keresni.)

 

A táblák közti kapcsolat szempontjából lényeges fogalom a külső vagy idegen kulcs.

Külső/idegen kulcs : az a tulajdonság (vagy több tulajdonság együttese), amely egy másik relációnak a kulcsa.

Pl. a személyszám a Törlesztésben külső kulcs.

A külső kulcs

  • lehet kulcsszerepű, de lehet másodlagos tulajdonság is
  • a kapcsolat hordozója

 

Fogadjuk el, hogy relációs modellben:

Két reláció csak akkor áll kapcsolatban egymással, ha az egyik külső kulcsként tartalmazza a másik kulcsát.

Ez azt jelenti, hogy relációs modellben, amikor a redundancia megszüntetése miatt több kisebb táblára fogjuk bontani az adatbázisunkat, az egyes táblák közt fennálló kapcsolatokat csak logikai redundanciával érjük el, azaz az egyik tábla kulcsát bevisszük a másik tábla oszlopai közé. Azt is mondhatnánk, hogy a külső kulcs értékei egyértelműen fognak rámutatni egy másik tábla alamely sorára a kulcs alapján.

Gyakran hívjuk gyerektáblának azt, ahol külső kulcsként szerepel egy másik tábla - az ő szülőtáblájának - kulcsa.

Amikor a kulcs és külső kulcs elnevezése azonos és egyértelműen kell megfogalmazni, melyikről beszélünk, legrövidebben a táblanév.mezőnév alakban tehetjük meg.

Az adatbázis épségének biztosítása miatt a külső kulcsba írt érték csak olyan lehet, ami kulcsként már létezik abban a táblában, amire hivatkozik.

 


iDevice ikon Kulcsszavak a fejezetben:
a reláció kulcsa, egyszerű és összetett kulcs, kulcsszerepű és leíró tulajdonság, külső kulcs, táblák közti kapcsolat