490 likes | 646 Views
Bevezetés. Egy Excel táblázat, mely tárolja egy DVD kölcsönző adatait. 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?
E N D
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:
DVD nevű tábla TAGOK nevű tábla KÖLCSÖNZÉS nevű tábla
ADATBÁZISOK Alapfogalmak
~ok alattegy bizonyosinformá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 ...
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
Tábla- DVD attribútimok rekord
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
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)...
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!!!
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
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
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
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
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
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
A Vezetéknév indextáblája A Tanulók alaptábla
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...)
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
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)
Tanulók adattábla Ösztöndíjak adattábla
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
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.
Kurzor ez alapján mozog a fő táblában Ösztöndíj adattábla Tanulók adattábla
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.
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
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
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
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
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)
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
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
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
Mi a megoldás? TANULO-OSZTONDIJ tábla • 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 OSZTONDIJ-OSSZEG tábla
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
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
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
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
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ás BDE Adatbázis A felhasználó számítógépe
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
Alkalmazás BDE Adatbázis helyi másolata A felhasználó számítógépe Alkalmazás BDE Adatbázis helyi másolata A felhasználó számítógépe 2. file-szerver architektúra Adatbázis Hálózati szerver
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
Alkalmazás BDE SQL -Links A felhasználó számítógépe Alkalmazás BDE SQL-Links A felhasználó számítógépe 3. kliens-szerver architektúra Az adatbázis szervere Adatbázis Távoli hálózati szerver
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
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)