2010.02.15.
Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév
Egyed: minden olyan dolog, amit minden más dologtól jól meg tudunk különböztetni és amiről adatokat akarunk tárolni. (pl. egyetemi adatbázis: a ABC123 Neptun-kódú személy) Lásd még: objektum, rekord, egyedtípus-előfordulás Egyedtípus: a konkrét egyedeket közös vonásaik alapján magukba foglaló kategóriák (pl. egyetemi adatbázis: hallgatók) Lásd még: (adat)tábla Tulajdonság: azok a fontos jellegzetességek, amelyekkel az egyedeket le akarjuk írni (pl. egyetemi adatbázis : név, születési dátum, anyja neve, képzés) Lásd még: attribútum Tulajdonság-érték: egy tulajdonságnak az adott objektumra vonatkozó értéke (pl. egyetemi adatbázis : név → Kiss Andrea) Lásd még: mező 2
1
2010.02.15.
3
Kulcs: Olyan tulajdonság (vagy tulajdonsághalmaz), amely segítségével az egyedek egyértelműen azonosíthatók (pl. egyetemi adatbázis: Neptun-kód)
Egyszerű kulcs: Hallgató → Neptun-kód Összetett kulcs: Vizsga → Neptun-kód, Kurzuskód, Dátum
Kapcsolatok: Az egyedek közötti viszonyok (az egyetemi adatbázis példáján)
1:1 (egy-egy): Szervezeti egységek – Tisztségviselők 1:N (egy-sok): Szervezeti egységek – Tantárgyak N:M (sok-sok): Hallgatók – Tantárgyak
4
2
2010.02.15.
Van neki
Felvétel Van neki
Szül. idő
Név
Neptun
5
Feladat: Készítsük el azt a adat-struktúrát, amiben nyilvántartható a tantárgyakkal kapcsolatos adatok (tantárgy, hallgató, oktató, helyszín időpont stb.) Tantárgyi adatok Tantárgy
Oktató
Neptun-kód
Név
Szül.dátum
Képzés
…
GINF 2
P.I
ABC123
Kiss Andrea
1991.10.02
BSC GVAM
…
GINF 2
P.I.
BCD234
Nagy Péter
1990.08.21.
BSC GVAM
…
…
…
…
…
…
…
…
Mi ezzel a probléma??? 6
3
2010.02.15.
Problémák:
Több jelenséget (egyedtípust) mosunk egybe: tárgy, hallgató, képzés, oktató stb. – elvi hiba Többszörösen tároljuk ugyanazokat az adatokat (redundancia), ami több okból is problémás: A többszörös tárolás fizikailag is többletkapacitást igényel A többszörös rögzítés során többszöröződik a hibázás
lehetősége is A karbantartás szinte lehetetlen, ha egy változást nem javítunk ki minden előfordulásnál, inkonzisztens állapot jön létre.
Kulcs: tulajdonképpen a teljes rekord szolgál azonosítóként, hiányzik egy ID-oszlop 7
Tantárgy
Oktató
Neptun kód
Név
Szül dátum
Képzés
…
GINF2
Pető István
ABC123
Kiss Andrea
1991.10.02
BSC GVAM
…
GINF2
Pető István
BCD234
Nagy Péter
1990.08.21
BSC GVAM
…
…
…
…
…
…
…
…
8
4
2010.02.15.
Hallgato
Kapcs_hallg
Neptun_kód
Név
Szül_dátum
…
ABC123
Kiss Andrea
1991.10.02
…
BCD234
Nagy Péter
1990.08.21
…
…
…
…
…
Kapcs_id1
Kurzus_id
Hallg_id
1
K0002
ABC123
2
K0002
BCD234
…
…
…
Tantargy
Kurzus
Neptun_kód
Név
Óraszám
…
SGTGS006N
GINF1
1+2
…
SGTGS011N
GINF2
1+2
…
…
…
…
…
Kurzuskód
Tantárgy
…
K0001
SGTGS011N
…
K0002
SGTGS011N
…
…
…
…
Kapcs_okt
Oktato Neptun_kód
Név
Szül_dátum
…
Kapcs_id
Kurzus_id
Okt_id
NBV987
Pető István
1977.12.09
…
1
K0001
NBV987
2
K0001
NBV987
3
K0002
KJL654
…
…
…
KJL654
Pitlik László
1966.07.08
…
…
…
…
…
9
SELECT Tantargy.Név, Oktato.Név, Hallgato.Neptun_kód, Hallgato.Név, Hallgato.Szül_dátum FROM Tantargy INNER JOIN Kurzus ON Tantargy.Neptun_kód = Kurzus.Tantárgy INNER JOIN Kapcs_hallg ON Kurzus.Kurzuskód = Kapcs_hallg.Kurzus_id INNER JOIN Kapcs_okt ON Kurzus.Kurzuskód = Kapcs_okt.Kurzus_id
Tantárgy
Oktató
Neptun kód
Név
Szül dátum
GINF 2
Pető István
ABC123
Kiss Andrea
1991.10.02
GINF 2
Pető István
BCD234
Nagy Péter
1990.08.21
…
…
…
…
…
10
5
2010.02.15.
Célja: Az adatbázis ne tartalmazzon ismétlődő, redundáns adatokat, mert ez a feltöltést, módosítást, törlést jelentősen megnehezíti, inkonzisztens adatbázis eredményezhet. Normalizálási szintek:
1. normálforma: Minden mező csak egyetlen adatot tartalmaz, nincsenek ismétlődő tartalmú sorok (létezik egyedi azonosító) 2. normálforma: 1.NF+ minden nem-kulcs tulajdonság a kulcs egészétől függ (egyszerű kulcs esetében 1.NF=2.NF) 3. normálforma: 2.NF+ minden nem-kulcs tulajdonság kizárólag csak a kulcstól függ 4.NF: … 5.NF: … 11
Elsődleges kulcs 1.NF 2.NF 3.NF
Tárgy_ID
Félév
Férőhely Tanár_ID Tanár Tárgy Tanár_ID
Tanár
TKI_01
0910_1
80
NBV987 GINF1
P.I. NBV987
P.I.
TKI_02
0910_2
70
KJL654 GINF2
P.L. KJL654
P.L.
TKI_01
1011_1
90
NBV987 GINF1
P.I. NBV987
P.I.
Tanár_ID
Tanár
Tárgy_ID
Tárgy
NBV987
P.I.
TKI_01
GINF 1
KJL654
P.L.
TKI_02
GINF 2
6
2010.02.15.
A szó szoros értelmében nem, mert
Az előzőekben leírt adatmodellezés (egyedtípusok, egyedek, kapcsolatok stb.) nem valósítható meg. A tárolt adatok homogenitását, ellenőrzöttségét, formátummának helyességét semmi sem biztosítja.
Azonban sok olyan eszközt tartalmaz, amelyek adatbázis-szerű műveleteket tesznek lehetővé:
Adatbázis-szerű formában tárolt adatok Adatbázisfüggvények Szűrés és kimutatás-készítés Adatrögzítés űrlapokkal (Adatok > Űrlap) 13
A táblázat oszlopai: Azonosító, Objektum, Tulajdonság, Érték, Mértékegység, Dátum, Forrás, Rögzítő, Rögzítés ideje. Egy sor (rekord) így tartalmazza egyetlen adat minden leíró jellemzőjét. Ebből következik, hogy minden cellát ki kell tölteni.
14
7
2010.02.15.
Az eddigiek alapján tehát a feladatban:
Egy 1.NF-nak megfelelő „adatbázis” jön létre. Ez sok „fölöslegesen” ismétlődő, redundáns adatot tartalmaz. Ügyelni kell arra, hogy pontosan rögzítsük az adatainkat, mivel az elgépelésekből új és új mezőértékek (pl. új objektumok vagy tulajdonságok) keletkeznek.
Ugyanakkor ez a megközelítés sem szakmaiatlan, mivel
Egy „komoly” adatbázis lekérdezése után is egy ilyen adattábla jön létre Pontos adatfeltöltés esetén így egy jól használható adattáblát kapunk, ami megfelel a tantárgy céljainak.
15
Halassy Béla: Információmenedzselés (sorozat), Marketing & Management, 1997 Siki Zoltán: Adatbáziskezelés és szervezés, Műegyetemi Kiadó 1995
16
8