Adatbázis-kezelés

A hétköznapokban számtalanszor használunk adatbázisokat akár nyomtatott, akár számítógépes formában. Ebben a fejezetben az adatbázisok felépítésével és kezelésével fogunk megismerkedni.

Az adatbázis

A szerkezete alapján lehet hálós (fa vagy gráf) vagy táblázatos. (Ebből a szempontból a lista is táblázat, aminek csak egy oszlopa van.) A hálós adatbázis alkalmas a hierarchikus (alá-felé rendeltségi) kapcsolatok tárolására, a táblázatos pedig inkább az objektumorientált szemléletet tükrözi.

Mivel a leggyakrabban a táblázatos, úgynevezett relációs adatmodellt használjuk, ezért a továbbiakban ezzel fogunk foglalkozni.

A táblázat felépítése

id: r1
név: Anna
kor: 24
nem:
Rekord 1
id: r2
név: Béla
kor: 23
nem: férfi
Rekord 2
id név kor nem
r1 Anna 24
r2 Béla 23 Férfi
Táblázat
Négy-négy mezőt tartalmazó rekordok külön-külön és táblázatba rendezve
  • A táblázat sorokból és oszlopokból áll.
    • A sorokat rekordoknak (magyarul bejegyzéseknek) hívjuk. Minden rekord egy személy, tárgy, dolog tulajdonságait tartalmazza.
    • A rekordokban lévő adatokat mezőknek hívjuk, amik táblázatos elrendezésben oszlopokat alkotnak. A mezők neve kerül az oszlopok tetejére fejlécnek.
  • Egy sor és egy oszlop metszéspontja a cella.
  • Több szomszédos cella együtt egy tartományt alkot.

Időnként a táblázatot 90 fokkal elforgatva használjuk, amikor a sorok kapnak fejlécet, és az oszlopok tartalmazzák az adatbázis elemeit.

Kereszttáblázatról akkor beszélünk, amikor a sorok és az oszlopok is szempontokat tartalmaznak. Az adatok tárolására ez kevésbé alkalmas, ezért már létező adatbázisokból készült kimutatásokra használjuk inkább.

Műveletek

Az adatbázisok természetesen nem maguktól születnek, létre kell őket hozni. A kész adatbázisok szerkezetét és tartalmát gyakran módosítjuk, a tárolt adatokból pedig információt nyerünk ki, és azokat megjelenítjük.

Tervezés

Az adatbázis kialakításánál több szempontot is figyelembe kell venni. Először is el kell dönteni, hogy milyen adatokat akarunk tárolni, azaz milyen oszlopokat fogunk használni. Például ha személyek adatait akarjuk nyilvántartani, akkor mindenképpen szükség lesz a névre, nemre, esetleg a születési dátumra, lakcímre.

Fontos szempont, hogy egy oszlopba csak egy adat kerüljön. Például ha lakcímet akarunk tárolni, akkor szerencsésebb egy "lakcím" oszlop helyett külön "irányítószám", "település", "utca" és "házszám" oszlopokat használni, mert így könnyebben meg tudjuk majd keresni az ugyanabban az utcában lakó embereket.

Elsődleges kulcs

Minél nagyobb egy adatbázis, annál nagyobb az esélye, hogy a táblázatnak lesz két olyan sora, ami azonos adatokat tartalmaz. Például ha apa és fia neve megegyezik, és ugyanott laknak, akkor előfordulhat ismétlődés. Természetesen ezt a problémát megoldhatjuk, ha eltároljuk például a születési dátumukat, de egyáltalán nem biztos, hogy azt ismerjük. Ha ilyen eset előfordul, az óriási problémát jelent, mert utólag nem fogjuk tudni, hogy ugyanaz a személy szerepel kétszer a táblázatban, vagy két különböző személyről van szó, akiknek minden adata megegyezik.

Ennek a problémának a megoldására szolgál az elsődleges kulcs (más néven azonosító), ami a táblázatnak egy olyan oszlopa, ami egyértelműen azonosítja a sorokat. Ez lehet egyébként is a táblázat része (pl.: személyi igazolvány szám), vagy egy olyan oszlop, amit kifejezetten erre a célra hozunk létre (pl.: sorszám). Ami fontos, hogy csak olyan oszlopot választhatunk elsődleges kulcsnak, amiben nincsenek üres cellák és ismétlődő értékek, hiszen az oszlop minden cellájában ismert és egyedi értéknek kell lenni.

Külső kulcs

Gyakran előfordul, hogy egy adatbázisban nem csak egyféle adatcsoportot tárolunk. A példánál maradva, ha a személyek mellett az általuk tulajdonolt járművek adatait is szeretnénk nyilvántartani, akkor azokat egy külön táblázatban célszerű elhelyezni.

Erre nemcsak azért van szükség, hogy a kétféle adatcsoportot logikailag szétválasszuk, hanem azért is, mert azok összevegyítése ismétlődéseket eredményezne a közös táblázatban. Ha egy személynek két járműve is van (pl.: egy autó és egy motor), akkor az ő saját adatait két sorban is tárolni kellene. Ez egyrészt feleslegesen növeli az adatbázis méretét, másrészt ugyanolyan bizonytalanságot szül, mint az elsődleges kulcs hiánya.

Célszerű tehát, ha az adatbázisunk két táblázatból áll. Az egyikben a személyek, a másikban a járművek adataival. Ekkor viszont felmerül az a probléma, hogy honnan fogjuk tudni, hogy melyik jármű kihez tartozik.

Erre találták ki a külső kulcsot, ami az egyik táblának egy olyan oszlopa, ami a másik táblának az elsődleges kulcsa. Jelen esetben a "jármű" táblába felvehetünk egy olyan oszlopot, ami a tulajdonos azonosítóját tartalmazza. Ez az azonosító a "személy" tábla elsődleges kulcsa. Ennek segítségével meg tudjuk keresni a két táblázatban egymáshoz tartozó sorokat.

Keresés, szűrés

Az adatbázisok létrehozásának egyik fő célja, hogy azokban minél könnyebben tudjunk adatokat megkeresni. Ilyenkor mindig azt kell először eldönteni, hogy a táblázat mely oszlopait szeretnénk viszontlátni, mert a felesleges oszlopok zavarhatják az adatok további feldolgozását vagy értelmezését.

Ez után jöhet a sorok kiválasztása valamilyen szűrőfeltétel segítségével. Nehézséget okozhat, hogy a keresett értéknek gyakran többféle feltételnek is meg kell felelni. Ilyen esetekben arra kell figyelni, hogy két kiválaszott feltétel között milyen logikai kapcsolat van. (Erről bővebben a Logikai műveletek című fejezetben olvashatsz.)

Például ha az adatbázisban tárolt személyeknek csak a nevére és az életkorára van szükségünk, akkor a lakcímhez tartozó oszlopokat ne jelenítsük meg! Ha ezen belül is csak a 18 évnél fiatalabbakat akarjuk kilistázni, akkor az életkort tartalmazó oszlopra szűrőfeltételt kell írni.

Statisztikai számítások

Gyakori eset, hogy olyan adatot szeretnénk megismerni, ami közvetlenül nem található meg az adatbázisban, hanem az ott tárolt adatokból lehet csak kiszámítani. Az ilyen problémákat két lépésre kell bontani. Először ki kell szűrni azkat az adatokat, amikre szükségünk van, majd el kell végezni rajtuk a kívánt számítást (darabszám, összeg, átlag, stb.).

Az előző példát folytatva, ha meg akarjuk számolni, hogy hány 18 évesnél fiatalabb személy van az adatbázisban, akkor először ki kell őket válogatni, majd megszámolni a darabszámukat.

Rendezés

Az adatbázis a benne lévő rekordokat abban a sorrendben tartalmazza, amiben a táblázatba bekerültek. Ezt a rendezés segítségével megváltoztathatjuk. Fontos, hogy a teljes táblázatot rendezzük át, ne csak a kiválasztott oszlopot, hiszen akkor az adatok összekeverednek.

Többszintű rendezés esetében fontos a sorrend. Például ha a táblázatban szereplő személyeket szeretnénk az életkoruk alapján sorba rendezni, és az azonos életkorúakon belül a nevük szerint ábécé sorrendbe, akkor először az életkor, majd a névv szerint kell rendezni.

Megjelenítés

Az adatbázis-kezelő programok az adatbázisból kinyert információt általában valamilyen táblázatos elrendezésben adják vissza, ami nem minden esetben átlátható. Az adatokat szövegesen formázott jelentés vagy pedig diagram formájában sokkal szemléletesebben is megjeleníthetjük.