Adatbázis rendszerek Molnár Bence
Szerkesztette: Koppányi Zoltán és Berényi Attila
A tárgyról
A tárgyról —1
házi feladat
— http://web.fmt.bme.hu/abr — http://www.fmt.bme.hu/fmt/htdocs/oktat
as/tantargy.php?tantargy_azon=BMEEOFTM KT3 — Molnár Bence
[email protected]
A tárgy célja — Az
adatbázisok elméletével kapcsolatos alapvető fogalmak megismertetése
— Az
adatbázisok használatának bemutatása mérnöki alkalmazásokban
— MS
Access alapjainak használatának elsajátítása
— Az
bemutatása,
ún. objektum relációs téradatbázisok alapjainak és használatának elsajátítása PostgreSQL + PostGIS eszközökkel
Tematika (lite) — Adatbázisok
elmélete
—
alapfogalmak
—
relációs algebra
—
adatbázis-tervezés
— Adatbázisok
gyakorlati alkalmazása
—
SQL
—
térinformatikai adatbázisok
Házi feladat (földmérő) — Adatbázis —
tervezés: gyakorlati adatbázis tervezése
—
megvalósítás: —
—
térinformatikai
megtervezett adatbázis létrehozása, feltöltése, és térbeli lekérdezések (PostgreSQL + PostGIS, ehhez szervert biztosítunk) megjelenítés QGIS-ben
Miből tanulhattok?
Jeffrey D. Ullmann - Jennifer Widom : Adatbázisrendszerek, Alapvetés, PANEM, 2008
Miből tanulhattok? —A
diasorokat folyamatosan (előadás után) feltöltöm a honlapra
— Segédlet
és video)
a házi feladatokhoz (dokumentum
— PostgreSQL: — PostGIS: — Google...
http://www.postgresql.org/
http://postgis.refractions.net/
Adatbázisok a mindennapokban
Adatbázisok a hétköznapokban — Hol
használjuk őket?
—
mindenhol...
—
vásárlás, utazás, telefonálás, internetezés, sportolás, stb...
— Jelentőségük —
Knight Capital Group
—
...
Adatbázisok a hétköznapokban
Adatbázisok a hétköznapokban A világ legnagyobb adatbázisai Helyezés Név
Cél
1
Max Planck Intézet
Tudományos kutatás
2
NERSC
Tudományos kutatás
3
AT&T
Távközlés
4
Google
Internetes keresés
5
Sprint
Távközlés
6
ChoicePoint
Kormányzati, közösségi és üzleti jellegű információk megosztása
7
YouTube
Videomegosztás
8
Amazon
Kiskereskedelem
9
CIA
Titkosszolgálat
10
USA Kongresszusi Könyvtár Könyvtári szolgáltatások
Adatbázisok az építőmérnöki gyakorlatban —
Folyóiratok, cikkek adatbázisai: —
ASCE: http://cedb.asce.org/
—
Szabványok (IEEE, ISO, EN, MSz, ...)
—
Szakági adatbázisok:
—
Talajtani: http://mta-taki.hu/hu/osztalyok/kornyezetin formatikai-osztaly/terkepi-adatszolgaltatas http://www.geoshop.hu
—
kutatás
—
Táblázatkezelőktől az adatbázisokig
Hogyan néz ki egy táblázat? Név
Lakcím
Telefonszám
Holnap Péter
Budapest 999-9999
Gépészmérnök Szerszámgyártó Zrt.
Tóth István
Cegléd
Építőmérnök
Út kivitelező Nyrt.
Nagy Ferenc
Budapest 999-9954
Közgazdász
Elszámolok Kft.
Kiss Pista
Budapest 999-5864
Érettségi
Út kivitelező Nyrt.
999-9928
Végzettség
Munkahely
Hogyan nézz ki egy táblázat? Oszlop=Attribútum
Név
Lakcím
Holnap Péter
Telefonszá m
Végzettség
Munkahely
Budapest 999-9999
Gépészmérnök
Szerszámgyártó Zrt.
Tóth István
Cegléd
Építőmérnök
Út kivitelező Nyrt.
Nagy Ferenc
Budapest 999-9954
Közgazdász
Elszámolok Kft.
Kiss Pista
Budapest 999-5864
Érettségi
Út kivitelező Nyrt.
999-9928
Sor=Rekord
Cella=Mező
Mit könnyű benne csinálni? (azaz előnyök :) — Kitölteni — Oszlopot — Sort
törölni, hozzáadni
törölni, hozzáadni
— Származtatott
cellákat számítani
— Keresni,
bonyolult számításokat végezni, speciális adatok levezetni?
— Nagy
adathalmazokat kezelni?
Problémák a táblázatokkal — Nagyméretű —
sok oszlop
—
sok sor
— Nehézkes
tábla nehezen kezelhető
keresés a táblában
— Különböző
táblák összekapcsolása
— Konzisztencia — Speciális
keresések (lekérdezések)
Adatbázis? — Az
adatbázisok használata indokolt, ha:
—
nagy mennyiségű adatunk van,
—
az adatoknak sok attribútuma definiált,
—
fontos a konzisztencia,
—
inhomogén típusú adatok,
—
összetett lekérdezéseket végrehajtani.
—A
kívánunk
gyakorlatban nem csak nagy adattömegek esetén alkalmazzák.
Alapfogalmak
Alapfogalmak —
—
Adat: (adatbázisban tárolt) érték. —
statikus: kézi vagy automatikus beavatkozásig változatlan (pl. bankszámla-egyenleg).
—
önmagában nincs jelentése.
Információ: olyan adat, amely a feldolgozás során értelmet nyer. —
—
Dinamikus: a tárolt adatok függvényében és a feldolgozás, megjelenítés (képernyő/nyomtatott jelentés) hatására is változik/változhat.
Összefoglalva: az adat az, amit tárolunk, az információ pedig, amit kinyerünk (GIS – új adat levezetése).
Alapfogalmak —
Metaadat: adat az adatról. —
„A metaadat koncepció általában az elektronikusan archivált vagy megjelenített adatra vonatkozik és leírja az adat fájlok definícióját, struktúráját és kezelésének módját, hogy a rögzített és archivált adatok használatát megkönnyítse”.
—
Adatbázisok esetén pl.: az adatbázisban található összes tábla nevét, méretét és sorainak számát tartalmazó tábla.
Alapfogalmak —
Adatmodell: tulajdonképpen szerkezetének a leírása
az
adatok
logikai
—
Az adatmodell a logikai adatbázis szerkezeti leírását foglalja magában, nevezetesen azonos jellemzőjű információk logikai modellezését a rajtuk végezhető logikai műveletek meghatározását tartalmazza. Az adatmodell tehát mindig szerkezeti és műveleti részből tevődik össze. Az adatmodell feladata, hogy a világban található dolgokról, individuumokról számítógéppel könnyen feldolgozható formálisan leírható adatok tárolásához megfelelő szerkezetet, keretet adjon, illetve ezek lekérdezhetőségét, visszakeresését is biztosítani tudja zárt matematikai alakban. (Wikipédia)
Adatmodellek — Hierarchikus — Hálós — Relációs — Objektum
orientált
Adatbázis vs. Adatbázis kezelő — Adatbázis
(AB, vagy Database, DB): az adatok és azok rendszere. —
németül adatbank: Datenbank
— Adatbázis
kezelő rendszer (ABKR vagy Database Managment System, DBMS): az adatok manipulálást, tárolását, létrehozását, stb... végző programok.
— Gyakorlatban
az adatbázisokat ABKR-rel hozzuk létre. Az egyes ABKR-ek bizonyos adatmodelleket támogatnak, így az ABKR meghatározza az adatbázis adatmodelljét is.
Példák —
Adatbázisok: világ legnagyobb adatbázisai dia
— Adatbázis
kezelő rendszerek:
—
MS Access, SQL Server (Microsoft)
—
PostgreSQL (Open Source, közösségi)
—
MySQL (GPL, kereskedelmi, Oracle)
—
Oracle (kereskedelmi, Oracle)
—
CouchDB (Open Source, Apache)
—
SQLite (Open Source, Richard Hipp)
Adatbázis szintjei - fizikai
A fizikai szinten az adatok tényleges tárolása és elérése történik hagyományosan a háttértáron (merevlemezen).
Adatbázis szintjei - fogalmi
A fogalmi (logikai) szinten írjuk le a az adatok típusát, kapcsolódási módját, stb..., melyeket az adatmodell határoz meg. Vagyis az adatmodell segítségével írjuk le az adatbázis fogalmi modelljét (értsd: ami a táblák tulajdonságai, oszlopnév, típusok, kapcsolatok, stb...).
Adatbázis szintjei - nézet
A megalkotott adatmodellen keresztül az adatokat különböző módon tudjuk megjeleníteni; ezek a nézetek. A nézetek megválasztásának a módját a konkrét alkalmazás dönti el ill. az igények specifikálják.
Adatbázis!
„No widely accepted exact definition exists for DBMS” (Wikipedia)
Adatbázisok története
Adatbázisok története — Mikortól? — 1960-as
évek eleje (első „hivatalos” említés 1962, Oxford szótár: data-base)
— Az
adatbázisok történetét a hozzájuk kapcsolódó adatmodellekkel mutatjuk be.
Korai adatbázismodellek — hierarchikus
modell
Korai adatbázismodellek — hálós
adatmodell
Relációs adatmodell — 1969
(1980-)
— rugalmas, — széles
könnyen bővíthető
körben elterjedt
— áttekinthető —a
kapcsolatok nem definiáltak a modellben
— matematikailag
jól definiált (relációs algebra), halmazelméletből levezetett
Objektum orientált adatmodell —A
gyakorlati adatbázis kezelő rendszerekben (ABKR) az adatok tárolására félig, vagy ritkán alkalmazott paradigma (nem elég hatékony – tárolás, keresés)
—A
programozási gyakorlatban terjedt el
NoSQL adatbázisok —
—
„Not only SQL” —
napjainkban indultak hódító útjukra
—
eltérő tárolási módszerek
—
nem SQL alapú lekérdezések
Példák: —
dokumentum adatbázisok: félig strukturált adatok tárolására, a web (2.0) inspirálta;
—
gráf adatbázisok.
Gráf adatbázisok
CouchDB — „Apache
CouchDB has started. Time to relax.”
— dokumentum
alapú
— web-es
környezetben alkalmazott — curl http://127.0.0.1:5984/ —{
"couchdb": "Welcome", "version":"1.1.0" }
Forrás —
Wikipedia —
http://hu.wikipedia.org/wiki/Adatb%C3%A1zis
—
http://en.wikipedia.org/wiki/Graph_database
—
http://en.wikipedia.org/wiki/Database
—
http://guide.couchdb.org
—
J. D. Ullman – J. Widom: Adatbázisrendszerek
—
M. J. Hernandez: Adatbázis-tervezés
—
Gajdos Sándor: Adatbázisok
—
Dominich Sándor: Adatbáziskezelő rendszerek
—
http://www.bigonehost.com
Relációs algebra általában A relációs algebra néhány tulajdonsága: —
Matematikailag jól definiált —
Halmazelméletből építkezik
—
Bevezethető az Armstrong axiómákon keresztül
— Gyakorlati
—
jelentősége:
—
RDBMSek lekérdező nyelvének alapja
—
Adatbázis tervezés
Didaktikai jelentősége: sokkal könnyebb lesz megérteni az SQL nyelvet
Relációs séma
Relációs séma Adott a következő táblázat: Jegyek reláció Azonosító
Név
Jegy
1
Kiss Pista
3
2
Nagy Péter
4
3
Varga Ferenc
5
4
Kiss Pista
1
Reláció sémája: Jegyek(Azonosító, Név, Jegy) Miért nevezzük relációnak?
Relációs séma - elnevezések A táblázat a reláció egy előfordulása! Jegyek reláció Azonosító Név 1 Kiss Pista 2 Nagy Péter 3 Varga Ferenc 4 Kiss Pista
Reláció sémája: Jegyek(Azonosító, Név, Jegy) Reláció neve
Attribútumok, együtt attribútumok halmaza
Jegy 3 4 5 1
Relációs séma - tulajdonságok —
A reláció és előfordulásának tulajdonságai —
Az attribútumok (oszlopok) sorrendje nem számít, tetszőlegesen felcserélhetőek
—
A rekordok sorrendje nem számít, tetszőlegesen felcserélhetőek
—
Egy attribútumhoz, és egy adott sorhoz egy és csak egy komponens tartozhat
—
A mi esetünkben megengedjük, hogy egy adott sor ugyanazon attribútum értékekkel többször is előforduljon (halmaz vs. multihalmaz)
Néhány séma példa — Idom(Azonosító,
Elnevezés, Keresztmetszet, Inercia, Ár)
— Gömb(Azonosító, — Közút(Azonosító,
X, Y, Z, R) Elnevezés, Rendűség)
— Földrészlet(Azonosító,
Helyrajziszám, Tulajdonos, Terület, AK_érték)
— Adjunk
meg hozzájuk előfordulásokat (azaz készítsünk hozzá táblázatot)
Attribútumok típusa
Attribútumok típusa — Az
attribútumok esetén meghatározhatjuk, hogy azok milyen halmazból vehetnek fel értékeket, azaz megadhatjuk azok típusát
— Egyszerű —
típusok (példák):
Szám
Egész — Valós — Szöveg —
—
Logikai
—
Számláló
Attribútumok típusa — Összetett
típusok (példák):
—
Maszk: 000-000-000, XXXXX
—
Vonallánc, gömb, geometriai elemek
—
Binary Large Object (BLOB)
Kép, MP3, stb... — Ezeket beépíthetjük leírásába: —
a
relációs
Jegyek(Azonosító : Felsoroló, Név : Szöveg, Jegy: Egész szám)
séma
További példák — Idom(Azonosító
: Számláló, Elnevezés: Szöveg, Keresztmetszet : Valós, Inercia : Valós, Ár : Egész)
— Gömb(ID
: Számláló, X : Valós, Valós, Z : Valós, R : Valós)
— Közút(Azonosító,
Y
:
Elnevezés, Rendűség)
— Földrészlet(Azonosító,
Helyrajziszám, Tulajdonos, Terület, AK_érték)
— Az
utolsó két séma esetén is adjuk meg az attribútumok típusát!
— Több
fajta jó megoldás is létezhet!
Kulcs, szuperkulcs
Szuperkulcs — Szuperkulcs:
azon attribútumok halmaza, mely egyértelműen meghatároz egy rekordot
Név Szemig Kiss Pista 123
Kor 18
Kiss Pista 124
18
SzK2=SzK1 U {{kor}, {kor, név}}
SzK1={{szemig}, {szemig, név}, {szemig, kor}, {szemig, név, kor}} Név Szemig Kiss Pista 123 Kiss Pista 124
Kor 18 19
Kulcs — Kulcs:
a szuperkulcsok közül a minimális
Név
Szemig
Életkor
Kiss Pista
123
18
Kiss Pista
124
18
K2={{szemig}, {életkor}}
K1={{szemig}}
Név
Szemig
Életkor
Kiss Pista
123
18
Kiss Pista
124
19
Kulcs – még egy példa Név
Szemig Tantárgy
Jegy
Kiss Pista Kiss Pista Kiss Pista
123 123 124
5 5 5
Matek Biosz Matek
SzK={{szemig, tantárgy}, {név, szemig, tantárgy}, …} K={szemig, tantárgy} Összetett kulcs
Kulcsok a relációs sémában — Eddig
a szuperkulcs vizsgálatát egy vagy esetén vizsgáltuk.
illetve a kulcs több előfordulás
— De
ezt elő is írhatjuk, így biztosítjuk, hogy egy adott attribútumra a kulcs tulajdonság mindig igaz legyen!
— Ezt
a következő relációs sémában
módon
Jegyek(Azonosító, Név, Jegy)
jelölhetjük
a
További példák — Idom(Elnevezés:Szöveg,
Keresztmetszet : Valós, Ár : Egész)
Valós,
Inercia
:
— Gömb(X
: Valós, Y : Valós, Z : Valós, R : Valós)
— Közút(Elnevezés,
Rendűség)
— Földrészlet(Helyrajziszám,
Terület, AK_érték)
— Az
Tulajdonos,
utolsó két séma esetén határozza meg a szuperkulcs és kulcs halmazokat!
— Miért
nincs azonosító?
Műveletek
Műveletek két változós halmaz műveletekhez a következőeknek kell teljesülni mindkét (R, és S) relációra
—A
—
Az R és S relációknak attribútumhalmazt kell tárolnia
ugyanazt
az
—
Az attribútumokat rendezni kell úgy, hogy az R i-ik oszlopa megegyezzen S i-ik oszlopával
Halmazművelet 1 - Unió — Jele:
S∪R
Név
Jegy
Kiss Pista
2
Nagy Péter 3 Vál Péter
5
Nagy Ákos
3
U
Név
Jegy
Kiss Lajos
2
Nagy Lajos 3
=
Név
Jegy
Kiss Pista
2
Nagy Péter 3 Vál Péter
5
Nagy Ákos
3
Kiss Lajos
2
Nagy Lajos 3
Halmazművelet 2 - Metszet — Jele:
S∩R
Név
Jegy
Kiss Pista
2
Nagy Péter 3 Vál Péter
5
Nagy Ákos
3
Név
Jegy
Kiss Pista
2
S ∩R \
=
Nagy Lajos 3 Név
Jegy
Kiss Pista
2
Halmazművelet 3 - Különbség — Jele:
S\R
Név
Jegy
Kiss Pista
2
Nagy Péter 3 Vál Péter
5
Nagy Ákos
3
\
Név
Jegy
Kiss Pista
2
Nagy Lajos 3 Név
= Jegy
Nagy Péter 3 Vál Péter
5
Nagy Ákos
3
Vetítés (Projekció) — Jele:
π név (
π név , jegy(
π attr1 , attr2 , ... (S ) Név
Jegy
Kiss Pista
2
Név
)=
Nagy Péter 3
Kiss Pista Nagy Péter
Vál Péter
5
Vál Péter
Nagy Ákos
3
Nagy Ákos
Név
Jegy Jelenlét
Név
Jegy
Kiss Pista
2
14
Kiss Pista
2
Nagy Péter 3
14
Nagy Péter
3
Vál Péter
5
13
Vál Péter
5
Nagy Ákos
3
10
Nagy Ákos
3
)=
Kiválasztás (Szelekció) — Jele:
σ attr1 R value R attr2 R value R ... (S )
R∈('=' ,' <' ,' >' ,'≠' ,'≤' ,'≥' ,'∧' ,'∨')
σ jegy=3
(
Név
Jegy
Kiss Pista
2
Név
) = Nagy Péter
Nagy Péter 3 Vál Péter
5
Kiss Pista
3
σ jegy>1∧ jelenlét >10 (
Kiss Pista
Név
Jegy Jelenlét
Kiss Pista
1
14
Nagy Péter 3
14
Vál Péter
5
13
Nagy Ákos
3
10
Jegy 3 3
) = Táblán
Descartes-szorzat — Jele:
A×B
Név
Jegy
Kiss Pista
2
Nagy Péter 3
Név
Jelenlét
Kiss Pista
10
A×B
Nagy Péter 14
=
R.Név
Jegy
S.Név
Jelenlét
Kiss Pista
2
Kiss Pista
10
Kiss Pista
2
Nagy Péter 14
Nagy Péter 3
Kiss Pista
10
Nagy Péter 3
Nagy Péter 14
Természetes összekapcsolás — Jele:
A
B
Név
Jegy
Név
Jelenlét
Kiss Pista
2
Kiss Pista
10
Nagy Péter 3
Nagy Péter 14 Nagy Lajos 5
Név
Jegy
Jelenlét
Kiss Pista
2
10
Nagy Péter 3
14
=
Théta összekapcsolás — Jele:
A
B
attr1 R attr2 R ...
R∈('=' ,'<' ,' >' ,'≠' ,'≤' ,'≥' ,'∧' ,'∨') Név
Jegy
Kiss Pista
2
Jelenlét> 10
Nagy Péter 3
Név
Jelenlét
Kiss Pista
10
Nagy Péter 14 Nagy Lajos 5
Név
Jegy
Nagy Péter 3
Jelenlét 14
=
Példa 1 S Név
Jegy
Jelenlét
Kiss Pista
3
8
Kiss István 2
14
Nagy Irán
5
10
Nagy Péter 1
14
— Adjuk
meg relációs algebrai műveletekkel, azon hallgatók neveit, akik átmentek a tárgyból.
π név (σ jegy >1∧ jelenlét >10 (S ))
Példa 2 A Név
Tantárgy
Kiss Pista
Matek
50
8
Kiss Pista
Rajz
60
14
Nagy Iván
Statika
45
10
15
14
Nagy Péter Matek
Pontszám
Jelenlét
B Név
Évfolyam
Kiss Pista
1
C Tantárgy
MinPont
Kiss István 2
Matek
40
Nagy Iván
Rajz
60
Statika
50
1
Nagy Péter 1
Példa 2 1) Adjuk meg, azon hallgatókat, akik Rajzra járnak! 2) Adjuk meg az elsős hallgatók neveit! 3) Adjuk meg azon tárgyakat, amelyek teljesítéséhez több mint 45 pont kell! 4) Adjuk meg azon hallgatókat, és évfolyamukat, akik Matekra járnak! 5) Adjuk meg, hogy mely hallgatóknak milyen tantárgyuk sikerült! 6) Adjuk meg, hogy az elsős hallgatóknak milyen tantárgyak sikerültek!
Példa 2 1) π név (σ Tantárgy=' Rajz ' ( A)) 2) π név (σ Évfolyam=1 ( B)) 3) πtantárgy (σ MinPont >45 (C )) 4) π név , évfolyam (σ Tantárgy=' Matek ' ( B) 5) π név , tantárgy ( A
A)
C ) PontSzám> MinPont
6)
π név , tantárgy (σ Évfolyam=1 ( B)
(A
PontSzám> MinPont
C ))
Ismétlés - Adatbázis szintjei
A fogalmi (logikai) szinten írjuk le a az adatok típusát, kapcsolódási módját, stb..., melyeket az adatmodell határoz meg. Vagyis az adatmodell segítségével írjuk le az adatbázis fogalmi modelljét (értsd: ami a táblák tulajdonságai, oszlopnév, típusok, kapcsolatok, stb...). Itt történik az adatbázis tervezés!
Tervezés A tervezés mindig olyan jövőre irányuló cselekvés, amely valamilyen szempont szerint kívánatosnak tartott jövőbeni állapot felvázolását, valamint az elérését lehetővé tevő út és feltételek meghatározását jelenti. A tervezés során mindig több lehetőség közül kell választani, így a tervezés sajátos döntésnek fogható fel. — A tervezés időben megelőzi a cselekvést, azaz a döntés nem vonja maga után az azonnali végrehajtást. — A tervezési problémák nem bonthatók szét, egymástól jól elkülöníthető, egymástól független részekre. — Ebből következően a tervezés egységes döntési folyamat, amely a döntések egymásra épülő sorozatként fogható fel.
—
Tervezés — Mivel
a tervezés a jövőbe mutat, ezért a megfelelő döntéshez ismerünk kéne a jövőt!
— Ez
viszont nyilvánvalóan nem ismert!
— Mit
tehetünk? Mivel igazolunk egy-egy döntést?
— Vagy
korábbi ismereteinkre támaszkodunk: saját tapasztalataink, mások tapasztalatai → szabványok, előírások, tervezési minták, stb...
— Mérnöki
tervezés során a természettudományokhoz fordulunk: matematika, fizika, statisztika, stb..., mely során absztrakciókat alkalmazunk!
Absztrakció — Ahhoz
hogy a bonyolult világ leírható legyen egyszerűsítjük azt, absztraháljuk.
Világ
Absztrakció 1.
Föld
Geoid
Talaj
Diszkrét modell
Szerkezet Valóság
Absztrakció 2.
Ellipszis
Kontinuum
VEM modell Tábla
Absztrakció 3.
Gömb Szerkesztés Szerkesztési szabályok
10010011
Absztrakció —E
folyamat során dolgok (tárgyak, fogalmak) egy összességét tekintve elvonatkoztatunk azon tulajdonságoktól, melyek a vizsgálat szempontjából lényegtelenek, és csak bizonyos kiemelt tulajdonságokat veszünk figyelembe.
— Három
legfontosabb absztrakció:
—
Dolog (objektum, tárgyak, fogalmak)
—
Tulajdonság
—
Viszony
Világ → Tábla —
Tehát van a probléma amit meg akarok oldani!
—
Szeretném tárolni a kölcsönzött könyveket a könyvtárból.
—
Szeretném nyomon követni a kiadásaimat egy hónapban.
—
Szeretném tárolni a katalógusban lévő termékek adatait.
—
Szeretném tudni, mikor milyen munkát végeztem.
—
Szeretném tudni mekkora egy híd lehajlása egy adott időpontban egy adott helyen.
—
Ehhez egy táblázatot (táblázatokat) készítek. Jó de hogyan?
—
Azt az absztrakciós folyamatot ahogyan a valóságos világot táblára leképezzük adatmodellezésnek hívjuk az adatbázis tervezés során!
Relációs adatbázis tervezés egy lehetséges folyamata — Célok,
követelmények összeírása (követelmény specifikáció)
— Egyed-kapcsolat — Relációs
(E/K) diagram
adatbázis séma
Adat modellezés
— Megvalósítás — Adatfeltöltés — Finomítás,
Valóság
tesztelés
E/K diagram
Relációs adatbázis séma Megvalósítás
Követelmény specifikáció
Követelmény specifikáció —A
feladat pontos megfogalmazása
—
Egyrészről a megrendelői, felhasználói igények
—
másrészről a technika által adott lehetőségek figyelembevételével érdemes a feladatot kitűzni
—
Célok megértése, megfogalmazása: milyen űrlap, milyen jelentések kellenek, milyen kérdésekre kell választ adnia az adatbázisnak
—
Mi az input (bemenő adatok), mi az output (funkcionális kérdések)?
—
Módszertanok kiválasztása
—
Többnyire szükséges az alkalmazandó eszközök kiválasztása is már ezen a szinten (milyen eszközöket fogok használni?)
A példa — Feladat:
Kiépítésre kerül egy olyan monitoring rendszer, mely egy híd lehajlásait figyeli, és az adatokat adatbázisba tölti.
— Célok:
Amennyiben valamilyen előre meghatározott határértéket túl lép a lehajlás a rendszernek figyelmeztetnie kell. Ezen kívül az értékek kerüljenek eltárolásra korábbi elemzés céljára.
A példa — Input —
A szenzoroktól érkező jelek, már a tényleges értékekkel
—
Határállapotok szakértők által meghatározva
—
A határállapotokat osztályokba lehet sorolni, és a figyelmeztető jelzés ennek megfelelő
— Output —
Jelentés az épp aktuális állapotról
—
Figyelmeztető jelzés
—
Múltbeli események visszakeresése
E/K diagram
Egyed-kapcsolat diagram — Egyed-kapcsolat
E/R)
— Absztrakt
diagram (Entity-Relationship,
leírás, így is kezeljük
— Részei: —
Egyed: Valami, amit modellezek, a valós világ egy körülhatárolt része
—
Tulajdonság (Attribútum): Az egyedre vonatkozó valamilyen adat, információ
—
Kapcsolat: Az egyedek közötti viszonyok
Egyed — Egyed
Híd
Szenzor
Mérések
Tulajdonság, attribútum — Tulajdonság,
attribútum
—
Egyszerű
—
Összetett attribútum: a tulajdonság további attribútumokra bontható. Név
Érték
Kereszt Vezeték — Többértékű attribútum: halmaz, vagy lista Nem
Tulajdonság — Tulajdonság
Név
ID
Híd
Szenzor Hely
ID Mérések Érték
Típus
HatárÉr. Osztály
Érték
Kapcsolatok (1:1) — Kapcsolatok:
leírása. —
az egyedek közötti viszony
Egy-egy kapcsolat (1:1): Egy nyak csak egy fejet tarthat, és fordítva egy fejet egy nyak tart
Nyak
Tart
Fej
Kapcsolatok (1:N) — Kapcsolatok:
leírása. —
az egyedek közötti viszony
Egy-több kapcsolat (1:N): Egy apának több fia lehet, de egy fiúnak csak egy apja
Apa
Rokon
Fiú
Kapcsolatok (N:M) — Kapcsolatok:
leírása. —
az egyedek közötti viszony
Több-több kapcsolat (N:M): Egy személy több ingatlannal is rendelkezhet, és egy ingatlant több személy is birtokolhat
Személy
Birtokol
Ingatlan
Többágú kapcsolat — Több
ágú kapcsolat: A hallgatók több vizsgaalkalmakat vehetnek fel egy kurzus esetén. Helyettesíthető kétágú kapcsolatokkal. Vizsgaalkalom
Hallgató
Felvesz
Kurzus
Kapcsolatok és attribútumaik Név Híd
Mióta? Tartalmaz
ID
Mikor?
Típus
Szenzor Hely
Végez Mérések
Érték
ID
HatárÉr. Osztály
Érték
Mivel rajzolhatom meg? — Microsoft
PowerPoint
— LibreOffice — yEd — Dia
Impress
(Ajánlott, Palette → Entity Relationship)
Relációs adatbázis séma
Relációs adatbázis séma — Relációs
séma: Tábla(ID: Felsoroló, Név: Szöveg, Kor: Szám)
— Relációs
adatbázis séma: Tábla ID: Felsoroló Név: Szöveg Kor: Szám ...
Kiindulás az E/K diagramból Név Híd
Mióta? Tartalmaz
ID
Mikor?
Típus
Szenzor Hely
Végez Mérések
Érték
ID
HatárÉr. Osztály
Érték
Attribútumok leképezése ID
Lakcím
Személy Név Kereszt
Vezeték
Személy ID: Felsoroló Lakcím: Szöveg KeresztNév:Szöveg VezetékNév:Szöveg
Attribútumok leképezése ID
Típus
Szenzor Hely
Szenzor ID: Felsoroló Típus: Szöveg Hely: Pont(X,Y) Osztály: Szöveg HatárEr.: Valós
HatárÉr. Osztály
Érték
Többszörös tárolás
Attribútumok leképezése Szenzor ID
Típus
ID: Felsoroló Típus: Szöveg Hely: Pont(X,Y) NHatárÉr.: Egész (IK)
Szenzor Hely HatárÉr. Osztály
Érték
Határérték
1 Osztály: Fels. Érték: Valós Kapcsolat muliplicítása
Attribútumok leképezése ID
Típus
Hely
HatárÉr
1
Bélyeg
P(0,0)
1
2
Bélyeg
O(0,100)
1
3
Gyorsulás
P(100,0)
2
Osztály
Érték
1
100
2
200
3
300
Szenzor ID: Felsoroló Típus: Szöveg Hely: Pont(X,Y) NHatárÉr.: Egész (IK)
Határérték
1 Osztály: Fels. Érték: Valós
Kapcsolatok leképezése (1:1) — 1:1
kapcsolat leképezése ID
Férfi Név Házastárs
Mikortól?
ID Nő Név
Házastársak ID: Felsoroló FérjNév:Szöveg FeleségNév:Szöveg Időpont: Dátum
Kapcsolatok leképezése (1:1) — 1:1
kapcsolat leképezése ID
ID: Felsoroló 1 Név: Szöveg
Személy Név Birtokol Mikortól?
Szem.Ig. Szám
Személyek
1
Szem.Ig. Szám: Szöveg Birtokol
1 1 Szám:Szöveg (IK) SzemélyID:Szám (IK) Időpont: Dátum
Kapcsolatok leképezése (1:1) — 1:1
kapcsolat leképezése ID
Férfi Név Házastárs
1
Személyek ID: Felsoroló Név: Szöveg Házastársak
Mikortól?
ID Nő Név
1 FérjID:Szám (IK) 1 FeleségID:Szám (IK) Időpont: Dátum
Kapcsolatok leképezése (1:1) — 1:1
kapcsolat leképezése ID
Személyek Név Házastárs Mikortól?
1
Személyek
ID: Felsoroló Név: Szöveg 1 HázastársId: Szám
Kapcsolatok leképezése (1:N) — 1:N
kapcsolat leképezése ID
Személy Név Birtokol
ID: Felsoroló N Név:Szöveg AutóRsz: Szöveg(IK) Mikortól?: Dátum
Mikortól?
1 Rsz. Autó Típus
Személy
Autó Rsz: Szöveg Név:Szöveg
Kapcsolatok leképezése (1:N) — 1:N
kapcsolat leképezése ID
1
Személy Név Birtokol
N Autó Típus
ID: Felsoroló Név:Szöveg
Birtokol
1 Mikortól? Rsz.
Személy
1
ID: Felsoroló SzemélyID: Szám (IK) Rsz:Szöveg (IK) Mikortól? : Dátum
Autó Rsz: Szöveg Név:Szöveg
Kapcsolatok leképezése (N:M) — N:M
kapcsolat leképezése ID
1
Személy Név Birtokol
Mikortól?
ID: Felsoroló N SzemélyID: Szám (IK) Hrsz:Szöveg (IK) N Mikortól? : Dátum
1 Terület
ID: Felsoroló Név:Szöveg
Birtokol
Hrsz.
Ingatlan
Személy
Ingatlan Hrsz: Szöveg Terület:Szám
A példa Mérés ID: Felsoroló Érték: Valós Időpont: Dátum+Idő N SzenzorID: Szám
Híd Név: Szöveg
1
1
Szenzor
ID: Felsoroló Típus: Szöveg N Hely: Pont(X,Y) HídID:Szám (IK) TelepítésIdő:Dátum N HatárÉr.: Egész (IK)
Határérték 1 Osztály: Felsoroló Érték: Valós
A példa ID 1 2 3 4
Érték 10 11 15 10
Mérés Időpont 2009.02.10 09:10:01 2009.02.10 09:10:03 2009.02.10 09:10:06 2009.02.10 09:10:01
SzenzorID 1 1 1 2
Szenzor ID
Típus
Hely
HídID
TelepítésIdő
HatárÉr.
1
Bélyeg
P(100,100)
Megyeri
2009.01.10
1
2
Gyorsulás
P(0,0)
Megyeri
2009.01.10
2
Híd ID Megyeri
Határérték Osztály 1 2
Érték 13 15
A relációs adatbázis séma kérdései
Egy rossz tábla! érvénytelen érték
(nincs kulcs)
Név
Utónév
Életkor
ID
Szem.Ig
Gipsz Jakab
Jakab
23
1
101
Hallgató Bálint
Béla
-1
2
102
Gipsz Jakab
Jakab
23
1
101
redundancia
(ha kulcs lenne, akkor is dupla kulcs szerepel)
Egy rossz tábla! duplikált sor
inkonzisztencia
Név
Utónév
Életkor
ID
Szem.Ig
Gipsz Jakab
Jakab
23
1
101
Hallgató Bálint
Béla
-1
2
102
Gipsz Jakab
Jakab
23
1
101
Vezeték névre nem tudunk keresni
Mikre kell odafigyelni? —
Konzisztencia biztosítása: az adatbázis ne tartalmazzon egymásnak ellentmondó tényeket
—
Adatok érvényességének biztosítása: az adatok csak a megfelelő halmazból vehetnek fel értékeket
—
Redundancia csökkentése, megszüntetése: valamely tényt vagy a többi adatból levezethető mennyiséget többszörösen tároljuk —
Többszörösen tároljuk az adatokat
—
Nehéz az adatokat konzisztensen tartani
—
Duplikált sorok tárolásának elkerülése (ha ez szükséges)
—
Duplikált adatok szükséges)
tárolásának
elkerülése
(ha
ez
Hogyan küszöbölhető ki? — Konzisztencia
biztosítása: normalizálás
— Adatok
érvényességének biztosítása: attribútumok típusának kiválasztása
— Redundancia
normalizálás
— Duplikált
előírása
— Duplikált
csökkentése, megszüntetése:
sorok tárolásának elkerülése: kulcs
adatok tárolásának elkerülése: megfelelő tervezés, normalizálás
Források —
Wikipedia —
http://hu.wikipedia.org/wiki/Adatb%C3%A1zis-tervez%C3%A 9s
—
http://gorbem.uw.hu/Access/Adatbazis1/sld002.htm
—
http://penzugy.erettsegi.org/2010/03/a-penzugyi-tervezes-fogalma -forgalmi-es-allomanyi-szemleletu-penzugyi-tervezes-folyamatos-l ikviditasi-terv-osszeallitasa/ http://www.itb.hu/ajanlasok/a4/html/a4_3-4.htm
—
http://www.bigonehost.com
—
Redundancia, adatbázis anomáliák
Redundancia —A
redundancia a következőeket okozhatja
—
Módosítási anomália
—
Beszúrási anomália
—
Törlési anomália
Módosítási anomália Név Kiss Pista Kiss Pista Nagy Péter
Életkor 23 23 21
MitVett? Csoki Sör Sör
Kiss Pista nevét meg akarom változtatni, és azt az összes előforduló helyen meg kell tennem!
Beszúrási anomália Név Kiss Pista Kiss Pista Nagy Péter
Életkor 23 22 21
MitVett? Csoki Sör Sör
Kiss Pista felvételénél elrontjuk a bevitelt és véletlenül 22-t viszünk be életkornak. Ekkor nem tudhatjuk biztosan hány éves Pista.
Törlési anomália Név Kiss Pista Kiss Pista Nagy Péter
Életkor 23 23 21
MitVett? Csoki Sör Sör
Ha valami okból kitöröljük Kiss Pista sorait, akkor az eddig már felvitt adatokat (pl. életkor) elveszítjük!
Redundancia elkerülése —A
redundancia elkerülésére a tervezés során a táblákat normalizálni kell.
— Az
egyes normalizálási lépések esetén azt mondjuk, hogy akkor az adatbázis egy meghatározott normál formán van.
— Előtte
azonban ismerkedjünk meg a funkcionális függőségekkel!
Funkcionális függőségek
Funkcionális függőség — Ha
a reláció valamely 2 sora megegyezik valamilyen attribútum(ok)-on (A), és abból következnek (egyértelműen meghatároz) más attribútum(ok) (B) akkor azt mondjuk hogy B funkcionálisan függ A-tól. Név Kiss Pista Kiss Pista
Életkor 23 23
Név → Életkor Jelölés
Vétel Csoki Sör
Funkcionális függőség - Kulcs — Vegyük
észre, hogy a funkcionális függőség a kulcs fogalom általánosítása: —
Amennyiben egy vagy több attribútum funkcionálisan meghatározza az összes többi attribútumot, akkor az szuperkulcs
—
Ha ez a halmaz minimális, akkor kulcsról beszélünk
Funkcionális függőség - Példa — Adjuk
meg a következő relációk függőségi halmazait! —
Dolgozók(SzemIg., Név, Jövedelem, Beosztás)
Funkcionális függőség - Példa — Adjuk
meg a következő relációk függőségi halmazait! —
Dolgozók(SzemIg., Név, Jövedelem, Beosztás) —
SzemIg. → Név, Jövedelem, Beosztás
Funkcionális függőség - Példa — Adjuk
meg a következő relációk függőségi halmazait! —
Dolgozók(SzemIg., Név, Jövedelem, Beosztás)
SzemIg. → Név, Jövedelem, Beosztás — Beosztás → Jövedelem (?) — Eredmények(TantárgyNév, Neptun-kód, Név, Osztályzat) —
Funkcionális függőség - Példa — Adjuk
meg a következő relációk függőségi halmazait! —
Dolgozók(SzemIg., Név, Jövedelem, Beosztás)
SzemIg. → Név, Jövedelem, Beosztás — Beosztás → Jövedelem (?) — Eredmények(TantárgyNév, Neptun-kód, Név, Osztályzat) —
—
TantárgyNév, Neptun-kód → Osztályzat
Normál formák
Első normál forma (1NF) — Minden
sora különböző (van kulcs)
—
Van egy kulcs, amitől az összes többi attribútum funkcionálisan függ
—
Ekkor a kulcs lehet a reláció összes attribútuma is
— Oszlopok — Minden
száma és sorrendje minden sorban azonos
oszlopnak csak egy attribútuma lehet
—
Minden attribútum egyszerű
—
Ennek eldöntése tervezési kérdés
nem
mindig
egyértelmű
→
Második normál forma (2NF) — Második
normál forma definíciója:
—
Első normál formán vagyunk +
—
Minden nem kulcs attribútum teljesen függ a kulcstól, de nem függ a kulcs bármely részhalmazától
—
Teljesen függ: az attribútum a egyetlen részhalmazától sem függ
— Ha
egy attribútumú a összetett) akkor rendben
kulcs
(azaz
kulcs nem
Dekompozíció (2NF) Neptun ABCD1 ABCD2 ABCD1
Neptun ABCD1 ABCD2
SzemIg. 100AA 101AA 100AA
ZH 1 1 2
Eredmény 4 5 3
SzemIg. 100AA 101AA Neptun ABCD1 ABCD2 ABCD1
ZH 1 1 2
Eredmény 4 5 3
Harmadik normál forma (3NF) — Harmadik
normál forma definíciója:
—
Második normál formán vagyunk +
—
Minden olyan attribútuma, mely nem része a kulcsnak, funkcionálisan teljesen függ a kulcstól, és csak attól. (Nincs tranzitív függőség)
Dekompozíció (3NF) VételID 1 2
VételID 1 2
Vétel Csoki Sör
Vétel Csoki Sör
Ár 100 300
Termék Csoki Sör
Ár 100 300
Magasabb normál formák —A
gyakorlatban a 3NF már elegendő
—A
legtöbb esetben ez már redundancia mentességet biztosít
— BCNF, —A
4NF, 5NF
magasabb normál formák hátrányai:
—
Nehezen átlátható az adatbázis szerkezete
—
Bonyolult lekérdezések
—
Csökkenti a lekérdezések hatékonyságát
A gyakorlat „A teljesség kedvéért megemlíthető, hogy bizonyos műveletek hatékonyabb végrehajtása érdekében egyes esetekben a tervezők inkább lemondanak a tisztaságról, áttekinthetőségről, s összevonnak egy relációba olyan adatokat is, amelyek a normalizálás elmélete szerint külön relációkban kellene helyet foglalniuk.”
Esettanulmány
WebDLT — Web
alapú fotogrammetria
—
Ha egy pontot két képen azonosítani tudok, annak térbeli koordinátája számítható
—
Képkoordináták és egyéb adatok tárolása adatbázisban
—
MySQL adatbázis + PHP + HTML + CSS
—
DBMS: PhpMyAdmin
—
—
Input: —
Felhasználói adatok
—
Képkoordináták (2D)
—
Számítási eredmények
Output: —
Képenkénti pontok adott projekten belül
—
3D pontok adott projekten belül
—
Minősítő számok megjelenítése
E/K diagramm
Relációs adatbázis séma
Teljes séma
Ötletek
Források —
Wikipedia
—
http://www.kobakbt.hu/jegyzet/AdatbazisElmelet/ora4_index.htm l
—
http://support.microsoft.com/kb/283878/hu
—
http://www.fuvesi.com/adatbazisok/normalformak.html
Köszönöm a figyelmet! Adatbázis rendszerek