Bevezetés
2 DVD kódDVD címTípus DbDb Tagsági szám Vezeték névNévVárosLakcím Telefonszá m Kölcs.dátu m 2212ZorroKaland21287TóthBélaZentaFő utca Született feleségekSorozat54312Németh Veronik aFelsőhegyPetőfi Sándor GettómilliomosDráma11287TóthBélaZentaFő utca MadagaszkárRajzfilm37290KovácsKrisztiánAdaPotiska Madagaszkár 2Rajzfilm31287TóthBélaZentaFő utca KacsamesékRajzfilm24312Németh Veronik aFelsőhegyPetőfi Sándor Született feleségekSorozat55555BarnaViolaZentaMadách Imre KacsamesékRajzfilm21123JuhászAnnaCsókaDózsa György Wall-EAnimációs11287TóthBélaZentaFő utca Egy Excel táblázat, mely tárolja egy DVD kölcsönző adatait
3 Mégis, miért zavaró egy Excel tábla? Hányan kölcsönöztek tavaly? Hány vidéki tag kölcsönzött az idén? Kik vették ki a Kacsamesék DVD-t, név szerint sorbarendezve? Hol laknak azok, aki tavaly vették ki a Született feleségek filmet? Erre egy megoldás van: Az Excel táblázat helyett adattáblákkal dolgozunk. Külön táblát hozunk létre a DVD-knek, külön a tagoknak és külön a kölcsönzésnek A következő módon:
4 DVD kódDVD címTípus DbDb 2212ZorroKaland2 1234Született feleségekSorozat5 5427GettómilliomosDráma1 1167MadagaszkárRajzfilm3 3518Madagaszkár 2Rajzfilm3 1235KacsamesékRajzfilm2 8231Wall-EAnimációs1 Tagsági szám Vezeték névNévVárosLakcím Telefonszá m 1287TóthBélaZentaFő utca NémethVeronikaFelsőhegyPetőfi Sándor JuhászAnnaCsókaDózsa György KovácsKrisztiánAdaPotiska BarnaViolaZentaMadách Imre DVD kód Tagsági szám Kölcs.dátu m DVD nevű tábla TAGOK nevű tábla KÖLCSÖNZÉS nevű tábla
ADATBÁZISOK Alapfogalmak
6 ~ok alatt egy bizonyos információ gyűjteményt (adatok halmaza) értünk, melyet egyének, csoportok, cégek, régiók, országok és az egész világ is használhat ~-okban szövegeket,képeket, hang és multimédiás file-okat,... használhatunk Pl.cégek:így őrzik az üzleti információkat, adatokat a vásárlókról,beszerzőkről és minden más dologról,ami nekik fontos pl.az állami adatbázisok a polgárok adatait tárolják... pl.az állami adatbázisok a polgárok adatait tárolják...
7 Hogy van ez a Delphiben? Mi relációs adatbázisokkal fogunk foglalkozni Relációs adatbázis=relational database Az ilyen adatbázis egy v.több táblából áll,melyek logikailag össze vannak kapcsolva Tábla=kétdim.tábla egy objektumhalmaz jellegzetességeivel A táblának van: neve(azonosító)- mellyel lehet rá hivatkozni
8 Tábla- DVD DVD kódDVD címTípusDb 2212ZorroKaland2 1234Született feleségekSorozat5 5427GettómilliomosDráma1 1167MadagaszkárRajzfilm3 3518Madagaszkár 2Rajzfilm3 1235KacsamesékRajzfilm2 8231Wall-EAnimációs1 rekord attribútimok
9 Tábla (table) Sorokból áll,melyekben azonos típusú objektumok adatait őrizzük Minden sor egy objektum adatait tartalmazza és rekordnak (record) hívjuk Egy tábla minden rekordja azonos szerkezetű és mezőkből(field) áll, melyekben az objektum attribútumait(tulajdonságait) őrizzük Minden rekord azonos mezőkkel rendelkezik és ezek minden rekordban ugyanabban a sorrendben vannak elhelyezve Ez azt jelenti, hogy egy oszlop mezőiben lévő adatok azonos típusúak kell, hogy legyenek
10 Típusok Numerikus String Pénzösszeg (Currency) Dátum (Date) Idő (Time) Logikai (Boolean) Szöveges (pl.egy film leírása) Grafikus (pl.egy dvd borítója)...
11 Elsődleges kulcs(primary key) Minden táblázatnak legalább egy tulajdonsága kell, hogy legyen (oszlop), amellyel egyértelműen meg tudunk különböztetni minden egyedet a többitől Az ilyen tulajdonság (oszlop) az elsődleges kulcs (primary key). Ez azt jelenti,hogy ha ebből az oszlopból kiveszünk egy elemet,akkor az az egyén már nem azonosítható, hiába szerepel a többi oszlopbeli adata az adattáblában Nagyon fontos, hogy az elsődleges kulcsként feltüntetett adat csak egy helyen fordulhat elő. (másik oszlopban sem lehet) Az egyszerű kulcs egy mezőből áll, az összetett pedig több mezőből Egy táblázaton belül csak egy elsődleges kulcs szerepelhet!!!
12 Példák Egy táblában a név nem lehet elsődleges kulcs, mert előfordulhat, hogy több ugyanolyan nevű egyén is szerepelhet. Ehelyett hasznosabb a tagsági számot vagy a DVD kódot (vagy az anyakönyvi számot választani elsődleges kulcsnak pl. egy iskolai példa esetében) választani
13 1.Példa-ösztöndíj TanuloAzonosito AdomanyozoOsszeg 100Köztársaság Város Község Város6000
14 Ebben a példában a tanuló neve nem lehet elsődleges klucs (nem is szerepel ilyen tulajdonság a táblában, de ha lenne is, nem lenne egyértelmű) Az elsődleges kulcs itt a TanuloAzonosito lesz
15 2.példa TanuloAzonosito AdomanyozoOsszeg 100Köztársaság Város Város Község Város Város Köztársaság9000
16 Mi lehet elsődleges kulcs, ha: 1.egy tanuló csak egy ösztöndíjra jogosult? az egyetlen elsődleges kulcs: TanuloAzonosito 2. ha több ösztöndíjat is kaphat? egyik tulajdonság sem lehet egyedül kulcs (TanuloAzonosito,Osszeg ) -nem lehet (TanuloAzonosito,Adomanyozo) -nem lehet (Adomanyozo,Osszeg) -nem lehet A megoldás a három attribútum együtt lesz a kulcs Az attribútumok a következők:TanuloAzonosito, Adomanyozo, Osszeg
17 Különböző táblákban: Kulcs lehet: -személyek azonosításában: JMBG -iskolákban: az anyakönyvi szám -egyetemeken:sorszám+íratkozás éve A kulcsról szóló információkat külön file-ban is és az adatokkal együtt is tárolhatjuk
18 Másodlagos index (~ kulcs) Egy adatbázis tábláinak rekordjai fizikailag egy disken is lehetnek,méghozzá rendezetlenek is lehetnek De ha használjuk a táblákat,akkor az adatoknak rendezetteknek kell lenniük(ábácé szerint,...) A rendezés során találkozhatunk az index(indexelés) fogalmával Az index azt mutatja meg, hogy milyen szempont szerint vizsgáljuk épp az adatainkat Az indexek a program gyorsabb végrehajtása miatt is nagyon hasznosak
19 Index létrehozása tulajdonképpen egy új tábla létrehozását jelenti, melyben egy oszlopot (tulajdonság) az eredeti tábla egy oszlopa alkot majd, csak itt rendezve szerepelnek, illetve van egy másik oszlop is, melyben a rekord eredeti táblabeli pozicíója szerepel
20 Vezetéknév Pozíció Almási1 Baji4 Kovács5 Mihók3 Mihók1000 Soós Szabó2PozícióTanAz Vez.név Név...Tel1100AlmásiMiklós SzabóAnna MihókGábor BajiIván KovácsIbolya SoósPéter MihókMárta A Vezetéknév indextáblája A Tanulók alaptábla
21 A másodlagos index (kulcs) egy mutatótáblázattal valósítható meg Ha több indexünk van, egy táblát több szempont alapján is rendezhetünk A másodlagos index abban különbözik az elsődlegestől, hogy az indexelt mezők nem fontos, hogy egyediek legyenek A Delphi mindenféle változást nyomon követ- az alaptábla minden módosítása után javítja az indextáblát (hozzáadás, törlés, javítás...)
22 Index típusok Egyszerű –csak egy oszlop,tulajdonság alapján Összetett-1 vagy több oszlop, tulajdonság alapján Egyedi (unique)-nem engedik meg, hogy a táblába azonos adatokat vigyünk be.Lehet egyszerű és összetett
23 Táblák közti kapcsolat Egy adatbázis általában több adattáblából áll, melyek össze vannak kötve (sokkal több információt kaphatunk összekapcsolt adattáblákból, mint egy-egy táblából) Fontos tehát a köztük fennálló kapcsolat (relationship)
24 TanAz Vez.név Név...Tel 100AlmásiMiklós SzabóAnna MihókGábor BajiIván KovácsIbolya SoósPéter MihókMárta TanAz AdomanyozoOsszeg100Köztársaság Város Város Község Város Város Köztársaság9000 Tanulók adattábla Ösztöndíjak adattábla
25 Külső kulcs (foreign key) Ez a kulcs a táblák közti kapcsolatoknál játszik fontos szerepet Egyik tábla mindig a főtábla (master) szerepében van, a másik pedig az alárendelt (detail) Magát a kapcsolatot szokták ”szülő –gyermek” kapcsolatnak nevezni Egy alárendelt tábla külső kulcsa valósítja meg a kapcsolatot a főtábla elsődleges kulcsával Pl.Az Ösztöndíjak táblából az TanAz lesz a külső kulcs,melynek segítségével kötjük majd össze a Tanulók tábla TanAz elsődleges kulcsával Maga a külső kulcs is állhat több tulajdonságból (attribútum) és mutathat arra a táblára is,amelyben ő is szerepel
26 Különbségek a táblák között a fő tábla minden rekordja elérhető, míg az alárendelt táblának csak azon rekordjai, amelyek külső kulcsa kapcsolódik a fő tábla adott rekordjával Más szóval a kurzor a fő tábla elsődleges kulcsa alapján mozog a rekordok között és mindig csak azokat a rekordokat (az alárendelt táblából) köti hozzá, ahova a kurzor mutat.
27 TanAz Vez.név Név...Tel 100AlmásiMiklós SzabóAnna MihókGábor BajiIván KovácsIbolya SoósPéter MihókMárta TanAz AdomanyozoOsszeg175Község Város6000 Kurzor ez alapján mozog a fő táblában Tanulók adattábla Ösztöndíj adattábla
28 Megjegyzés A gyakorlatban 2-nél több táblát kell összekötni Ebből kifolyólag egy tábla lehet egyidőben főtábla is és más oldalról vizsgálva alárendelt is Sőt egy táblának lehet több alárendelt táblája is Egy alárendelt táblát egyidőben nem használhat több főtábla => egy főtáblának lehet több alárendelt táblája, de egy alárendeltnek csak egy főtáblája lehet.
29 A kapcsolatok fajtái: 1:1- egy tábla minden rekordjának egy másik tábla egyetlen rekordja felel meg 1:többhöz (1:n)- a főtábla egy rekordjához az alárendelt tábla több rekordja is megfelel több:1 (n:1): a főtábla több rekordjához egy rekord felel meg az alárendelt táblából n:m (több:több)- egy rekord a főtáblából több rekorddal van kapcsolatban az alárendelt táblából és fordítva
30 Az adatbázisok integritása 2 fontos korlátozás van, hogy egy adatbázis biztonságos legyen, az adatok egyértelműek és ellentmondás nélküliek legyenek: Entitásbeli integritás és hivatkozási integritás
31 Entitásbeli integritás Egy adatbázis minden eleme egy rekord (egyed, entitás). Ahhoz, hogy azonosítani tudjunk minden egyedet, tudnunk kell, hogy mi a kulcs. Ez az integritás azt jelenti, hogy mindaddig nem vihetünk be az adatbázisba új adatokat, amíg nem írjuk le, hogy milyen attribútumokkal rendelkezik az adott tábla és, hogy mi lesz a kulcs Épp ezért az elsődleges kulcs nem lehet olyan tulajdonság (attribútum), amelyben van olyan egyed,melynek valamely értéke NULL érték (nem lehet üres mező a kulcs olszlopában)!!!!! Az entitásbeli integritás lehetővé teszi azt, hogy egy táblában sem legyen 2 olyan rekord, melyeknek ugyanaz az elsődleges kulcsuk
32 Hivatkozási integritás Ez a külső kulcsokra ad korlátozást Ha 2 tábla össze van egymás között kötve, akkor a külső kulcs az alárendelt táblában csak azokat az adatokat tartalmazhatja, mint amely adatok a főtábla elsődleges kulcsának oszlopában szerepelnek! Ha ez nem így van, az adatbázis nem tud helyesen működni
33 Normalizáció ~ alatt az adatok átszervezését értjük (abban az esetben, ha az adatok a táblában úgy fordulnak elő, hogy ellentmodáshoz jutnánk) Célja, hogy egy olyan adatbázis kapjunk, melyben minden adat csak egy helyen fordul elő, a redundancia elkerülése érdekében ( redundancia= adatok ismétlődése)
34 A normalizáció célja Főként azért használjuk, hogy az ellentmondásokat elkerüljük, és egyszerűbbé tegyük az adattáblák használatát. A köv.problémák merülhetnek fel egy nem- normalizált adattáblával: redundancia módosításbeli anomáliák (hiányosságok) törlési anomáliák beviteli anomáliák
35 Példa (OSZTONDIJ adattábla) TanuloAzonosito AdomanyozoOsszeg 100Köztársaság Város Város Község Város Város Köztársaság9000
36 Törlési anomália Ha kitöröljük a 100-as azonosítójú diákot, mi nemcsak azt az infót vesztjük el, hogy ez a tanuló közt.ösztöndías, hanem azt a tényt is, hogy a közt.ösztöndíj 9000 din. Ez nev.törlési anomáliának (deletion anomaly)- egy objektum egy adatának törlésével(a 100-sal jelzett tan.közt.ösztöndíjat kap), akaratlanul eltüntettük egy másik tényt is (hogy ez az ösztöndíj 9000 din) Ez azt jelenti, hogy egy törléssel 2 objektum információit is elvesztettük
37 Beviteli anomáliák Tfh.létezik még egy fajta ösztöndíj (pl.állami) Ezt az infót nem vihetjük be az OSZTONDIJAK táblába, mert még nem létezik egyetlen egy tanuló sem, aki ilyen ösztöndíjat kapott volna Probléma : a táblába nem vihető be semmiféle információ, míg egy másikról nem vittünk be infókat
38 Mi a megoldás? Az OSZTONDIJ táblát 2 részre bontjuk, úgy hogy mindkettő 1-1 objektumról tartalmazzon információkat A módszernek van egy hátránya: mi van akkor,ha hozzáadtunk egy olyan új tanulót, akinek olyan az ösztöndíja,hogy az nincs benne a másik táblában Meogoldás: Adományozo tuj.értékeinek halmaza a TANULO-OSZTONDIJ táblából részhalmaza kell, hogy legyen az Adomanyozo tuj-nak OSZTONDIJ-OSSZEG táblában TanuloAzonositoAdomanyozo 100Köztársaság 150Város 175Község 200Város AdomanyozoOsszegKöztársaság9000 Város6000 Község3000 TANULO-OSZTONDIJ tábla OSZTONDIJ-OSSZEG tábla
39 A problémák azért lépnek fel,mert egy tábla olyan tényeket tartalmaz, melyek 2 különböző dologra vonatkoznak: 1.melyik tanuló kap ösztöndíjat és milyet 2.egy-egy ösztöndíj mekkora értékű Épp ezért : minden olyan táblát, mely 2 v.több “dolgot” (“témát”) tartalmaz, 2 v.több táblára kell szétbontani, úgy, hogy mindegyik közülük csak egy dologgal(pl. csak ösztöndíj, csak pénzösszeg... ) foglalkozzon
40 A táblák alapvető műveletei Minden tábla legalább egy rekordból kell, hogy álljon Definiálni egy táblát a köv.áll: a mező leírása a kulcs definiálása az index definiálása a mező értékeinek korlátozásai a hivatkozási integritás megszorításai
41 Minden táblának a létrehozás pillanatában meg kell határozni a szerkezetét és nevet kell adni neki a Save to disk utasításnal minden, a táblával kacsolatos file is legenerálódik Egy tábla átnevezésével átnevezésre kerülnek az őt kísérő file-ok is Ha a diskről eltávolítunk egy adattáblát, akkor ez azt jelenti, hogy eltávolítottuk az összes kísérő file-t is
42 Az adatbázisok típusai: Ismert architektúrák: 1.helyi (lokális) architektúra 2. file-szerver architektúra 3. kliens-szerver architektúra 4.disztribuált architektúra 5.internet-architektúra
43 1.helyi (lokális) architektúra A program is és az adatbázis is egy szg-en hely.el A Delphi a kapcsolatot az adtbázissal egy közvetítőn keresztül tartja: BDE (Dorland Database Engine) AlkalmazásBDEAdatbázis A felhasználó számítógépe
44 2. file-szerver architektúra Az adatbázis egy elkülönített erős szg-en helyezkedik el, a személyi szg-ek (PC-k) pedig helyi hálózaton keresztül csatlakoznak a szerverhez Ebben az esetben: több felhasználónak van lehetősége egyidőben használni az adatbázist Hátrány:nagyon nagy információmennyiség áramlik a hélózaton keresztül
2. file-szerver architektúra 45 AlkalmazásBDE Adatbázis helyi másolata A felhasználó számítógépe AlkalmazásBDE Adatbázis helyi másolata A felhasználó számítógépe Adatbázis Hálózati szerver
46 3. kliens-szerver architektúra Ennél az architektúránál a szerveren nemcsak az adatbázist tároljuk, hanem az adatbázis-kezelő programot is, mely a hálózatban lévő felhasználók kéréseit végrehajtja, és visszaküldi nekik a kért adatokat (rekordokat) Így a felhasználók programjai nem közvetlenül az adatbázissal érintkeznek, hanem a szerveren lévő programhoz fordulnak, mely végrehajtja az utasításokat A kérést SQL nyelven kell megfogalmazni- Ez tulajdonképpen egy standard eszköz (Standard Query Language), mely segítségével kapcsolatot lehet létesíteni a szerveren lévő adatbázissal
3. kliens-szerver architektúra 47 AlkalmazásBDE SQL -Links A felhasználó számítógépe AlkalmazásBDE SQL-Links A felhasználó számítógépe Adatbázis Távoli hálózati szerver Az adatbázis szervere
48 4.disztribuált architektúra A hálózatban néhány server gép működik, az adattáblák köztük kerülnek szétosztásra, hogy így hatásosabb legyen az elérhetőségük Hátrány: bonyolult adminisztráció és igen jó paraméterekkel rendelkező serverekre (szg-ekre) van szükség
49 5.internet-architektúra Az adatbázisokat (melyek a hálózatban vannak) vmilyen böngésző segítségével (pl.Internet Explorer, Netscape Navigator, Opera,...) tudjuk elérni Ennél az architektúránál az adatbázisokat viszonylag szerényebb szg. segítségével is el tudjuk érni (és tudunk dolgozni velük)