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
Rekordok
Adatbázis felépítése (adattáblák/egyedek) Vez. Név Nagy Kiss . . .
Mezők Keresztnév Béla Andrea
Lakcím Miskolc, kő u. 8. 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 Altípusok pl.: – Pénznem – Hosszú dátum – Feljegyzés – Stb.
●
●
Feladat: – Töltsék fel adatokkal a telefon adatbázist! – 5 SIM kártya – 5 telefon – 8 tulajdonos
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