Ugrás a tartalomhoz Lépj a menübe

2.5 Adatbázisok

Adatbázis-kezelés alapfogalmai (adatbázis, relációs adatbázis, redundancia, kulcsok, indexek, mezőtípusok).

 

Adatbázis (DATABASE, DB)

Adatbázison köznapi értelemben adatok valamely célszerűen rendezett, valamilyen szisztéma szerinti tárolását értjük. Az adatok melyek nem feltétlenül számítógépen kerülnek tárolásra, gondoljunk csak a korábban használt könyvtári kartoték rendszerekre. Az adatbázis esetén nem az adatok nagy számán van a hangsúly, hanem a célszerű rendezettségen. Képzeljük el, hogy egy céghez naponta átlagban 20 levél érkezik. A cég irattárosa kellő adattárolási tapasztalat híján a leveleket az irattár ajtajára vágott lyukon keresztül bedobja. Elképzelhető, hogy pár év eltelte után milyen reménytelen vállalkozás egy levelet megtalálni az irattárban. Ez az adathalmaz nem tekinthető adatbázisnak, ahhoz hogy adatbázis legyen nem elegendő a nagyszámú adat. Az adathalmaz csak akkor válik adatbázissá, ha az valamilyen rend szerint épül fel, mely lehetővé teszi az adatok értelmes kezelését. Természetesen ugyanazon adathalmazból többféle rendszerezés alapján alakíthatunk ki adatbázist. Például egy könyvtárban a könyveket rendezhetnénk a könyvek mérete vagy akár a szerző vagy szerzők testsúlya alapján. Ez már egy rendszert ad az adatok tárolásához. Íly módon minden könyv helye meghatározott. De bizonyára nehéz helyzetben lennénk, ha szerző és cím alapján próbálnánk meg előkeresni egy könyvet. Az adatok tárolásába bevitt rendszernek alkalmasnak kell lennie a leggyakrabban előforduló igények hatékony kielégítésére. Az adatbázisok mellé egy adatbáziskezelő rendszer (DBMS) is járul, mely az adatbázis vagy adatbázisok üzemeltetését biztosítja. Hagyományos adatbázis esetén ez a kezelő személyzet intelligenciájának része, elektronikus adatbázisok esetén pedig valamilyen szoftver.

A számítógépes adatbázisok esetén egy egységnek tekintjük az adatbázisban tárolt adatokat és az azok visszakeresését, aktualizálását, kezelését biztosító szotfvert, ez az adatbázis-kezelő rendszer (DBMS).

Relációs adatbázis modell

A relációs az egyik legáttekinthetőbb és a 80-as évektől kezdve a legelterjedtebb adatmodell. Kidolgozása E. F. Codd (1923-2003) nevéhez fűződik, 1970-ben jelent meg alapvető műve a ""A Relational Model Data Large Shared Data Banks". A relációs modellben az adatokat táblázatok soraiban képezzük le. A legfontosabb eltérés az előzőekben bemutatott két modellhez képest az, hogy itt nincsenek előre definiált kapcsolatok az egyes adategységek között, hanem a kapcsolatok létrehozásához szükséges adatokat tároljuk többszörösen. Ezzel egy sokkal rugalmasabb és általánosabb szerkezetet kapunk. A relációs modellt részletesen tárgyaljuk a következőkben.

Redundancia fogalma

A logikai adatbázis tervezés egyik fő célja a redundanciák megszüntetése. Redundanciáról akkor beszélünk, ha valamely tényt vagy a többi adatból levezethető mennyiséget ismételten (többszörösen) tároljuk az adatbázisban. A redundancia, a szükségtelen tároló terület lefoglalása mellett, komplikált adatbázis frissítési és karbantartási műveletekhez vezet, melyek könnyen az adatbázis inkonzisztenciáját okozhatják. Egy adatbázis akkor inkonzisztens, ha egymásnak ellentmondó tényeket tartalmaz. Megjegyezzük, hogy a fizikai tervezés során az adatbázis műveletek gyorsítása érdekében esetleg redundáns attribútumokat is bevezetünk.

Index

A relációkban tárolt információk visszakeresését az indexek nagymértékben meggyorsíthatják, így a tervezés során nagy hangsúlyt kell fektetni a helyes indexek kiválasztására, szem előtt tartva azt is, hogy az indexek számának növelésével az adatok beviteléhez illetve módosításához szükséges idő megnövekszik az indexek frissítése miatt. A relációkhoz kapcsolt indexek segítségével az index kulcs ismeretében közvetlenül megkaphatjuk a kulcsot tartalmazó sor fizikai helyét az adatbázisban. Az indexek képzésére két módszer terjedt el, a hash kódok és a bináris fák.

 

 

Numerikus mezőtípusok

TINYINT 8 bites egész szám tárolására.

Értéktartomány: -128 és +127 közötti egész számok.

UNSIGNED meghatározással: 0 és 255 között.

SMALLINT 16 bites egész szám tárolására.

Értéktartomány: -32768 és 32767 közötti egész számok.

UNSIGNED meghatározással: 0 és 65535 között.

MEDIUMINT 24 bites egész szám tárolására.

Értéktartomány: -8388608 és 8388607 közötti egész számok.

UNSIGNED meghatározással: 0 és 16777215 között.

INT 32 bites egész szám tárolására.

Értéktartomány: -2147483648 és 2147483647 közötti egész számok.

UNSIGNED meghatározással: 0 és 4294967295 között.

BIGINT 64 bites egész szám tárolására.

Értéktartomány: -9.22*1018 és 9.22*1018+1 közötti egész számok.

UNSIGNED meghatározással: 0 és 1020 között.

DECIMAL Pontosság + 2 bájt lebegőpontos szám tárolására.

Minden egyes karaktere 1 bájtot foglal, ezen felül 2 bájtot vesz igénybe a tizedespont és az előjel tarolását. Alapértelmezésben 10 karakteres megjelenítés és 0 karakteres pontosság. Ezzel a mezőtípussal elkerülhetjük a lebegőpontos számoknál előforduló nemkívánatos kerekítéseket.

UNSIGNED meghatározással: nem veszi igénybe az előjelnek fenntartott bájtot.

FLOAT 4 bájt egyszeres pontosságú lebegőpontos szám tárolására.

Értéktartomány: -3.4*1038 és 3.4*1038 közötti számok.

DOUBLE / REAL 8 bájt kétszeres pontosságú lebegőpontos szám tárolására.

Értéktartomány: -1.8*10308 és 1.8*10308 közötti számok.

 

Szöveges mezőtípusok

CHAR 1-255 bájt, rögzített hosszúságú szöveges mező.

Max. 255 karakter lehet. Attribútum hossza állandó.

BINARY meghatározással az adatbázis kis- és nagybetű között különbséget tesz.

VARCHAR 1-265 bájt, változó hosszúságú szöveges mező.

Max. 65535 karakter lehet.

BINARY meghatározással az adatbázis kis- és nagybetű között különbséget tesz.

TINYTEXT Változó hosszúságú szöveges mező.

Max. 255 karakter lehet.

TEXT Változó hosszúságú szöveges mező.

Max. 216-1, 65535 karakter lehet.

MEDIUMTEXT Változó hosszúságú szöveges mező.

Max. 224-1, 16777215 karakter lehet.

LONGTEXT Változó hosszúságú szöveges mező.

Max. 232-1, 4294967295 karakter lehet.

ENUM A megjelenítendő értékeket zárójelek között, vesszővel elválasztva, előre meg kell adni. Csak a felsorolásban szereplő értékek közül lehet választani. Csak egy érték szerepelhet ezek közül a mezőben.

Max. 65535 tagja lehet a mezőnek.

SET A megjelenítendő értékeket zárójelek között, vesszővel elválasztva, előre meg kell adni. Csak a felsorolásban szereplő értékek közül lehet választani. Nemcsak egy érték szerepelhet ezek közül a mezőben.

Max. 64 tagja lehet a mezőnek.

 

Dátum és idő mezőtípusok

DATE 3 bájton tárolt dátum.

Formátum: YYYY-MM-DD. 1000.01.01-9999.12.31-ig.

TIME 3 bájton tárolt időpont.

Formátum: hh:mm:ss. 00:00:00-23:59:59-ig.

DATETIME 8 bájton tárolt dátum és időpont.

Formátum: YYYY-MM-DD hh:mm:ss. 1000.01.01 00:00:00-9999.12.31 23:59:59-ig.

YEAR 1 bájton tárolt évszám.

Formátum: YYYY. 1901-2155-ig.

TIMESTAMP 4 bájton tárolt dátum és időpont.

Formátum: YYYY-MM-DD hh:mm:ss. 1070.01.01 00:00:00-2037.12.31 23:59:59-ig.

Soha sem vehet fel NULL értéket a mező.

 

 

Relációs adatmodell szerepe, tulajdonságai, fogalmai.

Reláció

  • Adott n darab halmaz. Reláción e halmazok direktszorzatának a részhalmazát értjük.
  • Az R relációt ábrázolhatjuk egy táblával, melynek n oszlopa és m sora van. A reláció és a tábla szinonim fogalom, amennyiben a tábla rendelkezik azokkal a tulajdonságokkal, amelyek a relációt is jellemzik.

A tábla (reláció) tulajdonságai

  1. Minden táblának (relációnak) egyedi neve van. pl. DIAK, DOLGOZO
  2. A tábla oszlopainak (attribútumainak) neve van, és ezek a nevek egy táblán belül egyediek.
  3. Az oszlopok száma (a reláció foka) az adott táblában állandó.
  4. Az oszlopok sorrendje tetszőleges, azonosításuk a nevük alapján és nem a helyük alapján történik.
  5. Az egyes oszlopok csak meghatározott értékeket vehetnek fel egy adott értéktartományból (Di halmazból), ezt az értéktartományt domain-nek nevezzük. Minden sor minden oszlopában egy és csakis egy elemi érték szerepelhet, és egy értéknek szerepelnie is kell. (A gyakorlatban megengedett, hogy egy attribútum valamelyik előfordulásán ne vegyen fel értéket a domainből, ekkor ez az előfordulás definiálatl2an lesz, és NULL értéknek nevezzük.)
  6. A sorok sorrendje tetszőleges, azonosításuk az értékük, tartalmuk alapján és nem a sorszámukkal történik. A sorok száma változhat, adott pillanatban a sorok száma megadja a reláció számosságát.
  7. A táblában minden sor különböző. Nem létezhet két teljesen megegyező sor a táblában, mint ahogy nem létezik két azonos elem a relációban, mint halmazban sem.
  8. A 7. tulajdonságból következik, hogy minden táblában (relációban) létezik az oszlopoknak egy olyan halmaza, mely a tábla (reláció) bármely sorát egyértelműen meghatározza. Ezt az oszlop kombinációt hívjuk a tábla (reláció) kulcsának

A kulcs fogalma

Azt az attribútumot vagy attribútum halmazt, melynek értékei egyértelműen azonosítják a

relációt, a reláció kulcsának nevezzük.

Kulcsok fajtái:

  • Egyszerű kulcs: a kulcs egyetlen attribútumból áll.
  • Összetett kulcs: a kulcsot kettő vagy több oszlop kombinációja alkotja, előfordulhat az is, hogy a összes oszlop szerepel a kulcsban.
  • Minimális kulcs: ha összetett kulcs esetén bármely attribútumot elhagyjuk a kulcsból, és az így megmaradt oszlopok kombinációja már nem rendelkezik kulcs tulajdonsággal, akkor az összetett kulcsot minimálisnak nevezzük. Az egyszerű kulcs mindig minimális.
  • Elsődleges kulcs (primary key): az a kulcs, melyet kiválasztunk a kulcsjelöltek közül, és kulcsként használunk. A ki nem választott kulcsjelölteket alternatív kulcsnak nevezzük. Az elsődleges kulcsnak nem lehet NULL az értéke.
  • Idegen kulcs (foreign key): olyan attribútum vagy attribútum halmaz egy adott relációban, amelyik egy másik relációban elsődleges kulcsként szerepel. Az idegen kulcsot tartalmazó relációt hivatkozó relációnak, a másikat, melyben ez a kulcs elsődleges, hivatkozott relációnak nevezzük.

 

Egyed-kapcsolat modell jelölésrendszere, egyszerű modell értelmezése.

Az egyedhalmazok közötti kapcsolatok

Az egyed-kapcsolat modellben a kapcsolatok két vagy több egyedhalmazt kapcsolnak össze, mindig kétirányúak és mindkét irányban névvel írjuk le őket. Ezeket a kapcsolatokat többféle szempontból vizsgálhatjuk.

  • Ha modellezni akarjuk a valós világot, akkor gyakran szükséges, aszerint osztályozni a kapcsolatokat, hogy a kapcsolatban álló egyedhalmazok egyes egyedeinek hány egyed felel meg a másik egyedhalmazból. A lehetséges kapcsolattípusok: nincs kapcsolat az egyedhalmazok között.
    • egy-egy (1:1) kapcsolat. Az egyik egyedhalmaz minden egyes elemének egy és csak egy elem felel meg a másik halmazból, és viszont.
    • egy-sok (1:N) vagy a másik irányból sok-egy (N:1) kapcsolat. Az egyik halmaz elemeinek több elem is megfelelhet a másik halmazból, a másik halmaz minden eleméhez viszont csak egy elem tartozik az első halmazból.
    • sok-sok (M:N) kapcsolat. Mindkét egyedhalmaz bármely eleméhez több elem tartozhat a másik egyedhalmazból
  • Az egyedhalmazok közötti kapcsolatban résztvevő egyedek számát vizsgáljuk, azt nézzük, hogy minimum hány egyede az A halmaznak tartozhat egy egyedéhez a B halmaznak. Értéke “nulla“ vagy “egy“ lehet. A “nulla“ azt fejezi ki, hogy nem kötelező, hogy A minden egyedéhez tartozzon legalább egy egyed a B-ből, azaz a kapcsolat tetszőleges (optional). Az “egy“ azt jelenti, hogy A minden egyedéhez tartozik legalább egy egyed B-ből, azaz a kapcsolat kötelező (mandatory).
  • A kapcsolatok csoportosítása aszerint történik, hogy hány egyedhalmaz vesz részt a kapcsolatban:
    • Egy egyedhalmaz: az egyedhalmaz saját magával áll kapcsolatban, rekurzív kapcsolat.
    • Két egyedhalmaz közötti kapcsolat, ez a leggyakoribb.
    • Kettőnél több egyedhalmaz áll egymással kapcsolatban