Adatbázisok I. rész
Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás, törlés, rendezés (műveletek)
Nagy adathalmaz Mitől nagy? Nagy nehéz kezelni pl. nem fér el a memóriában, stb. Nagy adatbázisok: http://hu.wikipedia.org/wiki/adatbázis http://hvg.hu/tudomany/20070802_vilag_tíz_legnagyo bb_adatbazis
Jól szervezett Redundancia mentes Konzisztens (ellentmondás-mentes) Szervezett: valamilyen logika szerint épül fel (adatmodell, adatszerkezet) Adatintegritás érvényes-e az adat? pl. osztálya: 23A, Érvényesség: születési éve: 4321
Redundancia, inkonziszencia Felesleges (többszörös) információ/adat a minimálisan szükségeshez képest Pl: Én jól vagyok redundáns közlés Név, Szül. dátum, Lakcím, Kor, Kő Pál; 1981.01.01.; Bp. Fa u. 5; 11 Inkonzisztens, nem is tudhatjuk, hogy melyik a helyes.
Általában osztott Adatelérés osztott többen férnek hozzá az adatokhoz: jogok biztosítása Adattárolás osztott több számítógépen
Szervezettség (Adatmodellek) Egyed: közös tulajdonságokkal rendelkező halmaz (pl. emberek, járművek) Tulajdonság: egyed jellemzői (Név, Lakcím, vagy Rendszám, Alvázszám, stb.) Kapcsolat: egyedek közötti logikai viszony Adatmodell = Egyedek, tulajdonságaik és a köztük lévő kapcsolatok logikai sémája
Adatbázis felépítése Rekordokból áll egy egyed konkrét eleméhez tartozó adatok összessége (pl.: Nagy Béla, Miskolc, Kő u. 8. Érd 1945.12.02) Rekord felosztható mezőkre: pl. Vezetéknév mező, keresztnév mező, Lakcím mező, Szül hely mező, stb. Mező lehet összetett (pl.: lakcím, ezt szét tudjuk bontani: Irányítószám, Város, Cím) vagy elemi
Adatbázis felépítése (adattáblák/egyedek) Rekordok Vez. Név Mezők Keresztnév Lakcím Nagy Béla Miskolc, kő u. 8. Kiss Andrea Pécs, lom u. 7....
Relációs adatbázis (Relációs adatmodellre épül) Táblákból épül fel egyed Táblák között relációkat definiálunk Pl. Diákok tábla tanárok tábla, vagy diákok osztályok
Adatbázis létrehozása Tervezés: mezőszerkezet, típusok Normalizálás (jól szervezetté tesszük az adatokat) Kapcsolatok/relációk Tesztadatok Tesztelés Adatfeltöltés
Példa: diákok nyilvántartása Mezők: Név szöveg Születési dátum dátum Osztály szöveg OF neve szöveg Osztályterem szám Lakcím szöveg Ir. szám szám Telefonszám szám
Elsődleges kulcs Olyan mező (vagy mezők), mellyel egyértelműen azonosítani tudjuk a rekordokat Tulajdonságai: Egyedi, nem lehet két egyforma/azonos Nem lehet üres kötelező Olyan adatot érdemes választani, ami felett rendelkezünk Leggyakrabban saját magunk hozzuk létre Egész típust érdemes választani, mert azt lehet automatikus számozásúvá tenni
Normalizálás (kiegészítő anyag) 1. NF: Nincs 2 azonos oszlop v. sor, és van elsődleges kulcs a táblában 2. NF: A kulcs vagy egyszerű, vagy ha összetett, akkor nincs a kulcs egy részétől függő oszlop (pl. nem lehet összetett kulcs az osztály név+terem) 3. NF: A tábla minden oszlopa (tulajdonsága) csak a kulcstól függ....
Házi feladat FGy. 173. o. 2-4
Kapcsolatok/relációk Táblák közötti viszonyokat határozza meg Mezőket kapcsolunk össze A mezőknek azonos típusúaknak (kell)/ajánlott lenniük Pl.: diákok tábla osztályok tábla Általában az egyik tábla elsődleges kulcsát kapcsoljuk a másik tábla egy mezőjéhez HF: táblák közötti relációk / kapcsolatok Típusai (egy-egy, egy-több, több-több) Adatbáziseszközök / kapcsolatok (vagy Eszközök / relációk)
Feladat: autó nyilvántartás Típus Szín Rendszám Alvázszám Motorszám Teljesítmény Gyártás ideje Műszaki érvényesség Tulajdonos neve Tulajdonos lakcíme Tulajdonszerzés Melyik mező legyen az elsődleges kulcs? Melyik milyen típusú legyen? Milyen függőségeket látunk a táblában? Hogyan bontanánk szét az adatokat?
Feladat: árucikk nyilvántartás Áru neve EAN kód Árucsoport neve Árucsoport kódja Árucsoport ÁFA Tatós cikk Gyártás/készítés ideje Rendelés dátuma Mennyiségi egység Mennyiség Nettó ár Melyik mező legyen az elsődleges kulcs? Melyik milyen típusú legyen? Milyen függőségeket látunk a táblában? Hogyan bontanánk szét az adatokat?
Feladat: ügyfél nyilvántartás Ügyfél neve Ügyfélkód Ügyfél címe Ügyfél ir. Szám Ügyfél telefonszám Fogyasztási hely kódja Fogyasztási hely címe Fogy. mérő száma Lakoosági Tulajdonos neve Melyik mező legyen az elsődleges kulcs? Melyik milyen típusú legyen? Milyen függőségeket látunk a táblában? Hogyan bontanánk szét az adatokat?
Feladat: telefon nyilvántartás Telefon típusa Gyári száma SIM kártya száma Telefonszám Tulajdonos neve Tulajdonos címe Gyártás ideje Tulajdonos szig. sz. Telefon kategóriája Érintőképernyős Tulajdonszerzés dátuma Melyik milyen típusú legyen? Milyen függőségeket látunk a táblában? Hogyan bontanánk szét az adatokat? Melyik mező legyen az elsődleges kulcs?
Adattípusok, adatbevitel Adattípusok: 4 fő típus: Szöveg Szám Dátum Logikai Feladat: Töltsék fel adatokkal a telefon adatbázist! 5 SIM kártya 5 telefon 8 tulajdonos Altípusok pl.: Pénznem Hosszú dátum Feljegyzés Stb.
Kapcsolatok típusai (HF volt) 1-1 típusú: Egyik tábla egyik rekordjához a másik tábla egy rekordja tartozik, és viszont. Gyakorlatban: két egyedi mező kapcsolódik (pl. két elsődleges kulcs) 1-több típusú: Egyik tábla egyik rekordjához a másik tábla több rekordja tartozhat Gyakorlatban: egy egyedi mező kapcsolódik egy nem egyedi mezőhöz (pl.: elsődleges kulcs egy másik mezőhöz)
Több több kapcsolat Egyik tábla egyik rekordjához a másik tábla több rekordja tartozik, és viszont. Fontos! NEM: Az egyik tábla több rekordjához a másik tábla több rekordja tartozik! Gyakorlatban: 2 db 1-több kapcsolatot hoznak létre segédtáblával (kapcsolótábla)!!! Milyen típusú a kapcsolat, ha egyik mező sem egyedi???
Hivatkozási integritás A kapcsolódó rekordok ellenőrzése: Létezik-e a megadott rekord (adat) a kapcsolt táblában. Pl.: diákok osztály, létezik-e a diákokhoz beírt osztály az osztály táblában
Lekérdezés (választó lekérdezés) Az adatbázis adataiból listázunk valamilyen közös tulajdonsággal rendelkező rekordokat A rekordok összes ismert adatát vagy annak csak egy részét is listázhatjuk Az adatokat rendezhetjük is Lehetőség van több táblából is összeállítani a lekérdezést (egyesítés)
Lekérdezés létrehozása Beszúrás/Lekérdezés-tervező: 2 nézet: QBE rács (Query By Example) minta alapján SQL (Structured Query Language) lekérdező nyelv
SQL SELECT választó lekérdezés SELECT mező1, mező2 FROM tábla WHERE feltétel Pl.: SELECT neve, [tulajdonos címe] FROM tulajdonos WHERE címe like "Miskolc*"; Végül futtatás ( eredmények megjelennek)
Összefoglalás Elmélet: Adatbázis fogalma Elsődleges kulcs Mezők típusa Gyakorlat: Adatbázis létrehozása Mezők felvétele, típusa Adatok bevitele Táblák összekapcsolása SQL választó lekérdezés
Összefoglalás SQL választó (SELECT) lekérdezés: Szűrő feltétel (WHERE) Összetett szűrések (AND, OR) Szűrés dátumra, logikai mezőre ([szul_datum] <=#2001/01/01# AND [férfi] = TRUE) Szűrés számok illetve szöveg alapján Rendezés (ORDER BY) Növekvő (ASC) Csökennő (DESC) Nem lesz több táblás összekapcsolás