Professional Documents
Culture Documents
Adatmodellalap
Adatmodellalap
programozás alapjai
Adatmodellezés
Az adatmodellezés feladata:
a való világ vizsgálat alá vont részének
(az alkalmazásnak és környezetének)
információs (adatkapcsolati) struktúráját feltárni.
Az adatmodellezésről
Az adatbázisnak tükröznie kell a valós világot.
Csak így tudunk válaszolni a valós világ
kérdéseire.
Az adatmodellezés hangsúlya a valóság
reprezentációján van.
A cél azoknak a tényeknek az azonosítása,
amelyeket az adatbázisban tárolni akarunk.
Az adatmodellezésben felhasználók és
elemzők vesznek részt.
Független az adatbázis-kezelő rendszertől.
Az információs struktúra leírása
1. Az adatszótár az információs struktúrába
bevont adatokat írja le. Ez a leírás az
adatok szintaktikájára koncentrál, azaz,
hogyan néznek ki az adatok, milyen
jellemzőkkel rendelkeznek.
2. Az adatmodell az információs struktúrába
bevont adatok kapcsolatait írja le. Ez a
leírás az adatok szemantikájára, az adatok
jelentésére helyezi a hangsúlyt.
Az adatszótár funkciói
Az adatleírás dokumentálása.
Az információk kézben tartása az
adatbázis tervezése, telepítése és
üzemeltetése során.
Az adatokra vonatkozó információk
tárolása, módosítása, bemutatása.
A felhasználók segítése.
Adatszótár = metaadatbázis.
Az adatszótár jellemzői
Rendszerfejlesztési eszköz.
Konzisztens adatleírás.
Hatékonyság.
Hivatkozási lehetőségek.
Kommunikációs alap.
Módosítások karbantartása.
Alternatív elnevezések karbantartása.
Adatszótár összetevői
Adatleírások
Adatnevek, alternatív adatnevek.
Adatszerkezet, típus, méret, formátum.
Adatdefiníciók
Az adatok részletes leírása, funkciója.
Adatforrások
Adatok származási helye, származtatása (pl.
képlettel).
Adatok előfordulási helye.
Opcionális információk
Tulajdonosok, jogosultságok.
Egyed-kapcsolat diagram (ERD)
Az egyed-kapcsolat diagram egy olyan
adatmodellezési eszköz, amelynek feladata az
adatosztályok és a közöttük fennálló
kapcsolatok megmutatása. Nem foglalkozik
az adatok implementációjával, létrehozásával,
módosításával, használatával vagy törlésével.
Első változatát 1976-ban ismertette Chen.
Ma már a kibővített egyed-kapcsolat diagramot
(EER) használják.
Egyed-kapcsolat diagram összetevői
Egyed (egyedtípus, osztály, adatobjektum).
Kapcsolat (reláció, adatreláció, adatkapcsolat).
Tulajdonság (adat).
Az egyed-kapcsolat diagram összetevőit
típus és előfordulás szerint különböztetjük
meg.
Típus: egyedek, kapcsolatok és tulajdonságok
absztrakciója.
Előfordulás: konkrétan létező egyed, kapcsolat
vagy tulajdonság.
Az egyed definíciója és jelölése
Az egyed a valós világ
olyan objektuma,
amely tulajdonságai
alapján megfigyelhető EGYEDNÉV
és jellemezhető.
Lehet fizikailag
definiálható dolog, de
absztrakt módon is
meghatároz-ható.
A kapcsolat definíciója és jelölése
Az egy vagy több egyed között fennálló
termé-szetes összefüggést kapcsolatnak
nevez-zük. A kapcsolat szimbóluma
azokkal az egyedekkel van összekötve,
KAPCSOLATNÉV
amelyek az adott kapcsolatban vannak
egymással.
A tulajdonság definíciója és
jelölése
Az egyedekről megálla-pított tényeket,
jellemzőket (egyed)tulajdon-ságnak
nevezzük. A tulajdonság szimbó-luma
össze van kötve azzal az egyeddel,
TULAJDONSÁGNÉV
amelyikre vonatkozik.
Példa egyed-kapcsolat diagramra
TELEFON KATEGÓRIA
NÉV
AZONOSÍTÓ
CÍM ÉV
CÍM
SZERZŐK
SZDÁTUM
BELÉPÉS TARTALOM
Megjegyzések
1. Amit köznapi értelemben adatnak nevezünk, az
egyed-kapcsolat diagramban egy
tulajdonságtípus előfordulásának felel meg.
2. Az egyed-kapcsolat diagram mindig a típusok
viszonyait, jellemzőit sohasem az
előfordulásokéit ábrázolja.
3. Egy definiált kapcsolat az irány
megkülönböztetésével tulajdonképpen két
kapcsolat.
(Az ügyfél kölcsönzi a kazettát, a kazetta
kölcsönözve van az ügyfél által.)
Kapcsolattípus foka
Bináris kapcsolat DOLGOZÓ
DOLGOZÓ
Unáris v.
rekurzív
kapcsolat DOLGOZIK
FŐNÖKE
Hármas TERV
kapcsolat FELADAT
KÖLTSÉG
DOLGOZÓ KÉSZÍT VETÉS
Kapcsolatok ordinalitása és
kardinalitása
Az ordinalitás azt jelzi, hogy egy egyedek
közti kapcsolat kötelező vagy opcionális.
A kardinalitás egy egyedtípus
előfordulásainak maximumát jelzi egy
kapcsolatban.
Jelölése: ordinalitás: kardinalitás
Egyszerűsített szóhasználat: egy-az egyhez
(1:1), egy-a-többhöz (1:N), több-a-többhöz
(N:M) kapcsolat.
Átalakítás után:(N:1 - 1:M)
Ordinalitás és kardinalitás jelentése
I.
0:1 1:M
ÜGYFÉL KÖLCSÖNZI KÖNYV
szupertípus
altípu
s
Általánosítás Összetett tulajdonság
RENDEZŐ
SZDÁTUM
BELÉPÉS TARTALOM
Azonosítók definiálása
TELEFON KATEGÓRIA
NÉV
AZONOSÍTÓ
CÍM ÉV
CÍM
BELÉPÉS RENDEZŐ
SZDÁTUM
AZONOSÍTÓ TARTALOM
Kapcsolat-felbontás
Kapcsolat-felbontás
DÁTUM
0:1 IGÉNYBE 1:M KÖL-
ÜGYFÉL KIDŐ
_VESZ CSÖNZÉS
NÉV 0:1 KDÍJ
SZSZÁM
TELEFON IDŐPONT
VONAT-
KOZIK
SZDÁTUM
CÍM 1:N KATEGÓRIA
BELÉPÉS CÍM
KÖNYV
AZONOSÍTÓ
ÉV
AZONOSÍTÓ
RENDEZŐ TARTALOM
ADATTÁBLA
Az adatbázis táblákból épül fel.
A tábla sorai az egy egyedhez tartozó
adatokat tartalmazza
A tábla oszlopai az egyed tulajdonságait
tárolja
ADATTÁBLA
Tábla = EGYEDTÍPUS
Mező = TULAJDONSÁGTÍPUS
Rekord = EGYEDELŐFORDULÁS (EGYED)
Adat = TULAJDONSÁGÉRTÉK
ADATTÁBLA
Kulcs:
egyértelműen beazonosítja az egyedek többi
tulajdonságát
minden kulcsérték csak egyszer fordulhat elő
kötelező megadni, nem lehet üres
ADATTÁBLA
Összetett kulcs:
több tulajdonság együtt azonosítja be az egyed
többi tulajdonságát
Normalizálás
Az adatok optimális tárolási elvét
meghatározó módszer.
A hatékonyabb működés érdekében minél
magasabb számú normál forma (NF)
kialakítására van szükség.
Az adatokat úgy kell szervezni, hogy
legalább 3. NF-ban legyenek.
Normalizálás
Funkcionális függőség: ha egy
tulajdonságtípus bármely értékéhez egy
másik tulajdonságtípus csakis egy értéke
rendelhető hozzá. (Pl: személyi szám –
név; 1:többhöz kapcsolat)
Kölcsönös funkcionális függőség: ha
az előző feltétel mindkét irányba igaz. (Pl:
rendszám – motorszám; 1:1 kapcsolat)
Normalizálás
Funkcionális függetlenség: ha az
előzőekben ismertetett viszony egyike sem
áll fenn. (Pl: lakcím - testmagasság)
Tranzitív funkcionális függőség: ha
egy egyedtípuson belül egy
tulajdonságtípus értékei meghatároznak
egy másik tulajdonságtípus értékeit. (Pl:
FEOR kód - szakképzettség)
Normalizálás
1. NF
a tábla minden sorában a logikailag
összetartozó adatok állnak
Minden sorban oszloponként csak egy
érték szerepel
az értékek sorrendje minden sorban azonos
minden sor különböző (Kulcsmező(k))
van legalább egy vagy több tulajdonság,
amelyekkel a sorok egyértelműen
megkülönböztethetők egymástól
Normalizálás
Vizsgáljuk meg az alábbi táblát!
Tanuló - tábla
Tanárok – tábla
diákigazolvány száma
Neve
tanárikód
Születésidátum
Tanár.neve
Anyjaneve
tantárgykód
lakcím
Megjegyzés
Szülőemail 1:N
szülőtelefon
Évfolyam
Osztály N
N: 1 :
Neme
Tajszáma 1
Személyiigazolványszáma Napló – tábla
lakcimkártyaszáma Tantágyak – tábla
adószám Naplósorszám
Tanulóitevékenység.kezdete Diákigazolvány száma tantárgykód
Beiratkozásdátuma Osztályzat.értéke (érdemjegy) N : Tantárgy.neve
Nemzetisége Osztályzat.dátuma 1 Megjegyzés
Megjegyzes(pl:t.Krónikusbetegség, Tantárgykód
Ételintolerancia, allergiák, Tanárikód
anyanyelve, fogyatékossága) megjegyzés
Adatbázis létrehozása
› Példa:
CREATE DATABASE alma
CHARACTER SET utf8
COLLATE utf8_general_ci;
Adatmodell létrehozása
Adatmodell létrehozása
› A táblák létrehozása a Create utasítással történik:
Példa:
INSET INTO diak(Nev, Adoszam, Szak) VALUES('Kiss Jolán’, '1234FG’,
'Rendszerüzemeltető‚);
Példa:
DELETE FROM diak WHERE Nev LIKE 'Kiss Jolán';
Adatmanipuláció és lekérdezés
Példa:
UPDATE vizsgaeredmeny SET Erdemjegy = Erdemjegy+1 WHERE
Erdemjegy > 1 AND Erdemjegy <5;
Rekordok lekérdezése – Egy táblás
Példa:
SELECT * FROM diak WHERE Nev LIKE
´Orsós Jolás´;
Rekordok lekérdezése - Operátorok
› A WHERE feltételben használható legfontosabb
operátorok:
Rekordok lekérdezése - Operátorok
› A WHERE feltételben használható legfontosabb
operátorok:
Rekordok lekérdezése - Operátorok
› 200 és 300 Ft
közé eső
termékek listája:
SELECT *
FROM termek
WHERE ar
BETWEEN 200
AND 300;
Rekordok lekérdezése – Egyszerűbb példák
› Azon termékek listája, ahol az ár nincs megadva:
SELECT *
FROM termek
WHERE ar IS NULL;
SELECT *
FROM termek, gyarto
WHERE termek.gyartoid=gyarto.id;
SELECT*
FROM termek JOIN gyarto on termek.gyartoid=gyarto.id;
Rekordok lekérdezése –
Táblák összekapcsolása
› A JOIN művelet tulajdonsága, hogy a nem
párosítható rekordokat nem tartalmazza az
eredményhalmaz!
› Ha olyan lekérdezést szeretnénk megfogalmazni, amely a
párral nem rendelkező rekordokat is visszaadja, akkor
OUTER JOIN műveletet kell megfogalmazni.
Szeretnénk látni azokat a gyártókat is, akiknek nincs
termékük az adatbázisban:
SELECT*
FROM termek RIGHT OUTER JOIN gyarto on
termek.gyartoid=gyarto.id;
SELECT*
FROM gyarto LEFT OUTER JOIN termek on
gyarto.id=termek.gyartoid;
Rekordok lekérdezése –
Táblák összekapcsolása
› Ugyanaz mind a három, de…
SELECT *
FROM gyarto
WHERE NOT
EXIST (
SELECT
* FROM
termek
WHERE
gyarto.
id =
termek.
gyartoi
d);
SELECT *
FROM gyarto
WHERE id NOT
IN (
SELECT
gyartoi
d FROM
Rekordok lekérdezése–
Táblák összekapcsolása
› Az előző három lekérdezés egymással ekvivalens, viszont nem
feltétlenül egyforma a teljesítményük.
› A not exists operátort tartalmazó esetben minden egyes gyártó
rekordra
egyesével le kell futtatnia az allekérdezést a végrehajtó motornak
› A második esetben az allekérdezést elég egyszer lefuttatni
› A harmadik esetben tulajdonképpen az outer join operátor
párképző tulajdonságát használjuk ki, ráadásul a join művelet
végrehajtása rutinfeladat az adatbázis-kezelő rendszernek.
› A korszerű adatbáziskezelő-rendszerek ma már a fenti három
lekérdezéshez ugyanolyan végrehajtási tervet készítenek,
viszont komplexebb esetekben érdemes megfontolni, hogy
melyik lekérdezési formát válasszuk.
Rekordok lekérdezése - Oszlopfüggvények