Mi az a relációs séma? Hogyan hozhatunk létre hatékony adatbázist?

Nincs egyetlen olyan adatbázis-struktúra, amely mindig hatékonyabb lenne bármelyik másiknál. Ez azért van így, mert a tárolt adatok típusa és mennyisége megváltoztatja az adatbázis optimális szerkezetét.

Mégis nagy különbség van a teljesítményre optimalizált és az adatmennyiségre optimalizált adatbázis létrehozása között.

A MySQL relációs séma használatával létrehozhat egy adatmennyiségre optimalizált adatbázist. Ez ideális olyan helyzetekben, amikor a tárolás, a feldolgozás és a memória költségei megfizethetetlenül drágák.

Míg a szabványos elektronika esetében már nem ez a helyzet, még mindig rengeteg olyan helyzet van, amikor a programozók és a fejlesztők relációs sémát szeretnének használni. Bár a hagyományos számítógépek felhasználói számára a tárolás, a feldolgozási teljesítmény és a memória olcsó, a kvantumszámítógépek világában ezek a dolgok masszívan drágák.

A relációs séma fontos a MySQL-adatbázisokban is, amelyek a kapcsolatokra támaszkodnak a jelentés létrehozásához. A munkavállalói és egyetemi nyilvántartások például könnyen elképzelhetők kapcsolathálózatként, amelyeket jobban le lehet írni relációs sémával, mint például a kulcsérték- vagy gráfadatbázisokkal.

A relációs séma a relációs adatbázis elsődleges eleme. Ezeket az adatbázisokat az elsőrendű logikának megfelelő nyelv és struktúra segítségével kezelik. Ez lehetővé teszi az entitáskapcsolatokon alapuló adatbázis-kezelést, ami megkönnyíti a mennyiség szerinti rendszerezést.

A relációs séma az adatok szerkezetét egy adott tartományon belül leíró metaadatokra utal. Ez egy adatbázis tervrajza, amely felvázolja, hogy a struktúra hogyan szervezi az adatokat táblákba.

Ha például az adatbázis egy nagyvállalat alkalmazotti rekordjait tartalmazza, akkor lehetnek olyan entitáskapcsolatok, amelyek minden egyes alkalmazottat erős entitásként írnak le, például így:

  • Munkavállaló neve
  • ID szám
  • Adressz
  • Munkavállaló képzettsége
  • Felvételi dátum
  • Szolgálati évek

Ebben a példában a relációs séma adatainak két attribútuma lenne. Először is lenne az Employee attribútum, amely a táblázat elsődleges kulcsa (mivel minden az alkalmazottal kapcsolatos), és egy Address attribútum, amely egy különböző elemekből álló összetett attribútum.

A Cím attribútum a következő értékekből állna:

  • Város
  • Street
  • Adress number
  • Zip code

Ezek ismeretében készen áll az entitáskapcsolati diagram relációs sémára való leképezésére. Ez így szeretne kinézni:

  • Alkalmazott (név, azonosítószám, címszám, utca, város, irányítószám, felvételi dátum)
  • Alkalmazott készségcsoport (azonosítószám, készségcsoport)

Észre kell vennie, hogy a szolgálati évek nem szerepelnek ebben a listában. Ez azért van, mert ez egy származtatott attribútum, amelyet úgy lehet kiszámítani, hogy a felvételi dátumot kivonjuk az aktuális dátumból. Az Employee Skillset azért rendelkezik saját sémával, mert ez egy többértékű attribútum.

Relációs séma esetén minden entitás típus saját táblává válik, és minden egyes értékű attribútum egy oszlop ebben a táblában. A származtatott attribútumokat nyugodtan figyelmen kívül lehet hagyni, míg a többértékű attribútumok külön táblákká válnak.

A gyenge entitástípusok relációs sémába való átalakításának módszere hasonló a fent leírt folyamathoz, azzal a különbséggel, hogy a gyenge entitástípusok saját táblákká válnak, és az erős entitás elsődleges kulcsa idegen kulcsként működik a táblában.

Ez azt jelenti, hogy az Alkalmazott erős entitáshoz egy összetett elsődleges kulcsot kell létrehozni, amely a Függő idegen kulcsból és magának a gyenge entitásnak a kulcsából áll. Így a séma így nézne ki:

  • Alkalmazott (Név, azonosítószám, címszám, utca, város, irányítószám, felvételi dátum)
  • Függő (Alkalmazott, függő azonosító, név, cím)

Az összefüggés itt az Alkalmazott tábla azonosítószáma és a Függő tábla Alkalmazott eleme között áll fenn.

Ezzel a munkával készen áll a kapcsolatok átalakítására. Ehhez meg kell érteni az egyes kapcsolatok kardinalitását és fokát.

  • Három lehetséges kardinalitás van – 1:1, 1:M, 1:N
  • Három lehetséges fokozat van – unáris, bináris és terner.

A fenti példát továbbvéve, az Employee-t egy új Department táblával kombinálva bináris 1:1 kapcsolatot hozhat létre. Ha az alkalmazott egy adott osztályt irányít, akkor őt részleges résztvevőként, míg az osztályt teljes résztvevőként lehetne leírni.

A relációs séma így nézne ki:

  • Alkalmazott (név, azonosítószám, címszám, utca, város, irányítószám, felvételi dátum)
  • Részleg (vezetői azonosítószám, részleg azonosítója, név, cím)

Ebben az esetben a részleges résztvevő elsődleges kulcsa lesz a teljes résztvevő idegen kulcsa. A menedzser azonosító száma korrelál a megfelelő alkalmazott azonosító számával.

Ez a relációs séma létrehozásának egy fontos részét mutatja be. Egy bináris 1:1 relációban bármelyik résztvevő elsődleges kulcsa idegen kulccsá válhat a másikban. A fenti kapcsolat leírásának egy másik módja az lenne, hogy az Alkalmazott alatt idegen kulcsként használnánk a Menedzsmentet, amely korrelál az elsődleges kulcs Osztály azonosítójával az Osztály alatt.

A bináris 1:N kapcsolatra példa lenne a Tantárgyat tanító tanár közötti kapcsolat. Egy adott osztályteremben a tanárok egynél több Tantárgyat taníthatnak különböző diákoknak, mégis minden Tantárgynak ugyanaz a kapcsolata a tanárral.

A fenti bináris 1:1 kapcsolatban minden osztálynak volt egy egyedi vezetője. Ezzel a bináris 1:N kapcsolattal változó számú diák osztozhat ugyanazon a tanáron. A tanár elsődleges kulcsa a tanár azonosítója lenne, amely korrelálna a tárgy idegen kulcsával a tanár alatt.

A bináris M:N kapcsolat leírásához képzeljünk el egy diákot, aki beiratkozik egy kurzusra. Hozzon létre egy új táblát a Diák és egy másikat a Tanfolyam leírására. Mindkét tábla a beiratkozáson keresztül kapcsolódik egymáshoz, és mindkettő idegen kulcsokkal rendelkezik.

  • A Hallgató idegen kulcsa a Hallgató azonosítója.
  • A Tanfolyam idegen kulcsa a Tanfolyam azonosítója.

Az új tábla elsődleges kulcsa az egyes entitások idegen kulcsainak kombinációja. Ezt a következőképpen írná le: (hallgatói azonosító, kurzus azonosító). Ez egy egyedi bináris M:N relációs séma, amely összekapcsolja az egyes hallgatókat a kurzusokkal.

Ez azért működik, mert az azonosítók természetüknél fogva azért jönnek létre, hogy relációs adatbázisokban idegen kulcsok legyenek.

Relációs sémát használhat önhivatkozó kapcsolatok leírására. Például két alkalmazott, akik házasok egymással, rendelkezhet a Házastárs idegen kulccsal. Mindkét alkalmazott idegen kulcsa esetében a hivatkozás a másik alkalmazott alkalmazotti azonosítójára fog vonatkozni, amely az egyes alkalmazottak megfelelő táblájának elsődleges kulcsa.

Ez 1:N kardinalitású kapcsolati sémában is működik. Maga az elsődleges kulcsmező ebben az esetben ugyanannak a táblának az idegen kulcsává válna. Ez ugyanaz, mint egy unáris 1:1 séma.

Egy Alkalmazott, aki egy Alárendelt vezetője, idegen kulcsként például a vezetővel rendelkezhet. Ebben az esetben az Alkalmazott azonosítója lenne az elsődleges kulcs ugyanabban a táblában.

Az M:N kapcsolat önhivatkozásához két táblára van szükség. Az egyiknek a szóban forgó entitást kell ábrázolnia, a másiknak pedig az M:N kapcsolatot.

Képzeljünk el egy alkalmazottat, aki egy bizonyos termék vagy szolgáltatás minőségének garantálásáért felelős. Ennek a kapcsolatnak mind a Garanciavállalót, mind a Kedvezményezettet idegen kulcsként kellene tartalmaznia, amelyek kombinálva korrelálnak az Alkalmazott tábla Alkalmazott azonosítójával. Mind a Kezes, mind a Kedvezményezett elsődleges és idegen kulcsként működne az újonnan létrehozott relációs séma táblán belül.

Míg a bináris és unáris kapcsolatok egyszerűen leírhatók a relációs séma segítségével egy vagy két táblával. A terner táblákhoz egy harmadik, új táblára van szükség.

Az új tábla elsődleges kulcsa minden résztvevő entitás idegen kulcsának összeadásából áll. Ez azt jelenti, hogy az új táblának három idegen kulcsot kell tartalmaznia a korrelációhoz.

Egy orvos és betege közötti kapcsolat például valójában három entitásból áll: Az orvos, a beteg és a gyógyszer. Ahhoz, hogy ezt a kapcsolatot megfelelően leírhassuk relációs sémaként, minden egyes ilyen entitáshoz idegen kulcsokat kell rendelnünk, és ezeket egy új, Recept című táblával kell korrelálnunk.

Ez egy egyszerű módja annak, hogy szemléltessük a hármas tábla működését. Az újonnan létrehozott Prescription tábla elsődleges kulcsa (orvos azonosítója, beteg azonosítója, gyógyszer azonosítója). Minden olyan séma, amely nem tartalmazza ezt a három fontos adatot, kihagyja a kirakós játék egy fontos részét.

Ez a megközelítés lehetővé tenné az adatbázis-kezelő számára, hogy a receptek szervezett archívumát hozza létre, amely számon tartja az egyes gyógyszerfajtákat, azonnal korrelál az azokat használó betegek nevével, és felajánlja az azokat felíró orvosok nevét.

A teljesség kedvéért érdemes a gyógyszer táblát kiegészíteni a lejárati idővel, hogy ez az adat is elérhető legyen a főmátrixon belül. A következő időpont vagy az újraváltás dátuma hozzáadható a receptek táblához. A Beteg táblához logikusan hozzá szeretné adni a Születési dátumot, a címet és más fontos relációs adatokat.

Mindezek az eszközök együttesen lehetővé teszik a MySQL-ben a kapcsolatorientált adatbázisok létrehozását. Az SQLDBM segítségével bármilyen böngészővel online gyakorolhatja saját MySQL adatbázisok létrehozását.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.