370 likes | 463 Views
Adatbázisok használata. Zoltán Botond – zoltanbotond @ gmail.com. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!. Tudnivalók. kisZH-k minden egyes óra elején 7./12. héten nagy ZH
E N D
Adatbázisok használata Zoltán Botond – zoltanbotond@gmail.com
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
Tudnivalók • kisZH-k minden egyes óra elején • 7./12. héten nagy ZH • Féléves feladat • A gyakorlatok során használt virtuális gép elérhető a http://analog.nik.uni-obuda.hu:65111/címen
Ajánlott Irodalom • Oracle példatár (SQL, PL/SQL)(Kende Mária - Nagy István) • http://www.logana.com/orakulum/4_AdatbazisKezeles/41_AKT/413_Labor.zip
Féléves feladat • Félév során folyamatosan kell készíteni • A feladatkiírás, és a követelményei a www.orakulum.com weboldalról letölthető • 01-3_FF_Követelmény MM (12).doc • 01-4_FF_Feladatkiírás MM+MI (10).doc • A következő gyakorlatra mindenkinek hoznia kell a feladatkiírást (értelemszerűen kitöltve, aláírva) • FONTOS: Összetett kulcsok használata!!!
Bevezetés • Mi is az az adatbázis? • Első pillantásra: adatok rendezett gyűjteménye. • Mi a célja egy adatbázisnak? • Az adatok megbízható, hosszú távon tartós (idegen szóval: perzisztens) tárolása, és viszonylag gyors visszakereshetőségének biztosítása.
Relációs adatmodell • … relációs adatbázis? • Reláció → tábla • Egyedek (rekord: a táblázat egy sora) • Jellemzők (mezők), azaz a sorok egy oszlopa
Kapcsolat típusok • Nincs kapcsolat • 1:1 kapcsolat • Minden halmazból 1 elemnek csakis 1 elem felel meg, és viszont • 1:N kapcsolat • Egy halmazból 1 elemnek több elem is megfelel, fordítva viszont csakis egyetlen egy • M:N kapcsolat • Mindkét halmazból 1 elemhez tartozhat több elem, és fordítva
Kulcsok • Elsődleges kulcs • Minden rekordban egyedi!!! (Lehet összetett is) • Nem lehet ‚NULL’ • Idegen kulcs • Egy másik tábla elsődleges kulcsa • Összetett kulcs • Legalább két attribútumból áll
Adatbázis Anomáliák • Egy művelet nem kívánt mellékhatása, amely sokszor inkonzisztens állapotot eredményez. • Típusai: • Módosítási Anomália • Törlési Anomália • Beírási Anomália
Redundancia • Mi a redundancia • „Több jel felhasználása, mint amennyire adott információ közvetítéséhez feltétlenül szükség van.” • A redundancia adatbázis-kezelés szempontjából általában az adatok ismétlődését jelenti. • Jó- e a redundancia?
Normalizálás • Egyszerűen megfogalmazva: • Az az eljárás, mely segítségével az adatok ésszerű csoportosítása formálisan is elvégezhető • Mi a célja? • Redundancia csökkentése, megszűntetése. • A hozzá kapcsolódó anyag • az orakulum.com weboldalon a „labor”-on belül található SQL Bevezető feladatgyűjtemény (pdf, 3-10. old) • és a http://www.agt.bme.hu/szakm/adatb/db3.htmweboldalon található
1.NF • Minden attribútum egyszerű
2.NF • A reláció minden nem elsődleges attribútuma teljes funkcionális függőségben van az összes reláció kulccsal • Mi az a Funkcionális függőség? • Ha egy tulajdonság értékét, egy másik tulajdonság egyértelműen meghatározza • Mondjunk erre pár példát a hétköznapokból!
2.NF • Ismerjük föl a függőségeket! • A Terem meghatározza a férőhelyek számát • A Terem és az Óra kezdete pedig a Tárgyat
3.NF • A reláció nem tartalmaz funkcionális függőséget a nem elsődleges attribútumok között. • Jelen esetben a Tárgy egyértelműen meghatározza az oktatót, az oktató azonban az ő email címét. (Tárgy ->Oktatóm ->Email)
BCNF • Boyce-Codd normál forma • A kulcs attribútumoknak nincs olyan részhalmaza, mely más kulcs- vagy másodlagos attribútumoktól függene. (Azaz nincs kulcstörés) • Tulajdonképpen a 3.NF egy szigorúbb változata • FELTÉTEL: MINDEN TANÁR CSAK EGY TÁRGYAT OKTAT, DE TÖBB FÉLÉVBEN IS • Mi lehet a probléma? • Az Oktató és a Félév meghatározza a Tárgyat, de a Tárgy és a Félév pedig az Oktatót
1. példa • Tervezzünk tanulmányi adatbázist! A következőket tudjuk: • A tárgyak kódját, megnevezését, a felvétel javasolt félévét. • A hallgatók kódját, nevét, e-mail címét, a beiratkozás idejét. • A hallgatók adott félévre több tárgyat is felvehetnek, egy tárgyat több hallgató is felvehet. Tároljuk az eredményeket is.
1. példa • 1. lépés: az ősmodell sémája nyilvántartás <tárgykód, megnevezés, javasolt félév, hallgatói kód, név, e-mail, beiratkozás dátuma, felvétel féléve, eredmény> • A tárgykód egyértelműen azonosítja a tantárgyat, a hallgatói kód pedig a hallgatót. • Egy hallgató egy tárgyat többször is felvehet!
1. példa • 2. lépés: függőségek felírása ftárgy= {tárgykód} => {megnevezés, javasolt félév} fhallgató= {hallgatói kód} => {név, e-mail, beiratkozás dátuma} … és a tárgyfelvételek??? Mi lesz a kulcs? ffelvétel = {tárgykód, hallgatói kód, felvétel féléve} => {megnevezés, javasolt félév, név, e-mail, beiratkozás dátuma, eredmény}
1. példa • 3. lépés: normalizálás 1NF: oké, mert minden adatunk elemi. 2NF: nem oké! Az ffelvétel függőség sérti, mert a tárgy megnevezése és javasolt féléve csak a tárgykódtól függ, nem a teljes kulcstól, a hallgató személyes adatai is csak a hallgatói kódtól, tehát itt szétbontás (dekompozíció) következik:
1. példa {tárgykód, hallgatói kód, felvétel féléve} => {megnevezés, javasolt félév, név, e-mail, beiratkozás dátuma, eredmény} Dekompozíció után: {tárgykód, hallgatói kód, felvétel féléve} => {eredmény} {tárgykód} => {megnevezés, javasolt félév} {hallgatói kód} => {név, e-mail, beiratkozás dátuma}
1. példa • 3NF oké, mert ezekben már nincs tranzitív függés. • BCNF oké.
1. példa • Eredmény: tárgy <tárgykód, megnevezés, javasolt félév> hallgató <hallgatói kód, név, e-mail, beiratkozás dátuma> tárgyfelvételek <tárgykód, hallgatói kód, felvétel féléve, eredmény> • Elsődleges kulcsok, idegen kulcsok
2. példa • Jani bácsi, a székgyártó kisiparos szeretne adatbázist készíttetni. • Tárolnánk a székek megnevezését, típusát, színét, méretét, árát, a készlet nagyságot. • Tároljuk a vásárlók adatait is: név, cím, telefonszám, törzsvásárló-e. • Nyilvántartjuk a rendeléseket: a kiadott számla számát; ki, mikor, mit rendelt.
2. példa • 1. lépés: az ősmodell sémája székvásárlás <megnevezés, típus, szín, méret, ár, készlet, név, cím, telszám, törzsvásárló, számla száma, dátum, mennyiség> • A megnevezés, a szín és típus együtt azonosítja a széket, a név és a telszáma vásárlót. • Adott típusú szék többféle színben kapható, de ezek mérete és ára megegyezik. • Egy számlára csak egy fajta széket könyvelünk.
2. példa • 2. lépés: függőségek felírása fvásárló = {név, telszám} => {cím, törzsvásárló} fraktár = {megnevezés, típus, szín} => {méret, ár, készlet} DE: fszék = {megnevezés, típus} => {méret, ár} !!!!
2. példa • És a vásárlások? (Mi az ősreláció kulcsa?) fvásárlás = {számla száma} => {dátum, mennyiség, megnevezés, típus, szín, méret, ár, készlet, név, cím, telszám, törzsvásárló}
2. példa • 3. lépés: normalizálás 1NF: oké, mert minden adatunk elemi. 2NF: nem oké! A {megnevezés, típus, szín} => {méret, ár, készlet} függőség sérti, mert a méret és az ár csak a bal oldal egy részétől függ, nem az egésztől, tehát itt szétbontás (dekompozíció) következik: {megnevezés, típus} => {méret, ár} és {megnevezés, típus, szín} => {készlet}
2. példa • 3NF: ez sem oké! Az fvásárlás –ban tranzitív függés van! (Jobb oldalon szereplő jellemzők függnek egymástól.) {számla száma} => {dátum, mennyiség, megnevezés, típus, szín, méret, ár, készlet, név, cím, telszám, törzsvásárló}
2. példa • Dekompozíció után: {név, telszám} => {cím, törzsvásárló} {megnevezés, típus} => {méret, ár} {megnevezés, típus, szín} => {készlet} {számla száma} => {dátum, mennyiség, megnevezés, típus, szín, név, telszám} • BCNF oké.
2. példa • Eredmény: vásárlás<számla száma, dátum, mennyiség, megnevezés, típus, szín, név, telszám> szék<megnevezés, típus, méret, ár> készlet<megnevezés, típus, szín, készlet> vásárló<név, telszám, cím, törzsvásárló> • Elsődleges kulcsok, idegen kulcsok
Vége! • Mára ennyit, a következő órán: • kis zárthelyi, • feladatterv leadása!
Felhasznált irodalom: • Nagy Gabriella diasora • Rózsa Győző diasora • http://www.agt.bme.hu/szakm/adatb/db3.htm • Wikipedia