Adatmodellezés normalizálással
(kidolgozott mintafeladat)
A relációs adatmodellezés áttekintése
- egyedtípus, -előfordulás, -halmaz
- az egyed tulajdonságai, attribútumok, értékkészlet
- az egyedtípus azonosítója
- az entitások közti alapveto kapcsolattípusok: egy-egy, egy-sok, sok-sok kapcsolatok (példa: dolgozó-iroda-projekt-kocsi kapcsolatai)
- Megjegyzés: Az UML osztálydiagram kapcsolata a logikai adatmodellel: a leképezés ebben az irányban egyértelmű, az UML fogalmilag gazdagabb. Az UML elemek: kapcsolat (asszociáció), aggregáció, kompozíció, leszármazás (specializáció). Ezek lefordíthatók az egy-egy, egy-sok, sok-sok kapcsolatokra.
- az adatmodell fogalmi, logikai és fizikai szintjei
- az elsodleges kulcs fogalma
- a kulcsok több attribútum kombinációjából is állhatnak: kétszeres, háromszoros stb. kulcs
- a relációs modell elemei: táblák, mezok, rekordok, kulcsok
- a kapcsolatok megvalósítása relációs technológiával: külso kulcsok és kapcsolótáblák
A normalizálás
-
cél a redundancia megszüntetése, az inkonzisztencia kizárása és a könnyű kezelhetőség
- funkcionális függés (pl. autó színe függ a rendszámtól)
- tranzitív függés (pl. iroda típusa közvetelenül függ az iroda számától, tranzitíven a dolgozó számától)
-
1NF: minden nem-kulcs tulajdonság funkcionálisan függ az
egyedtípus azonosítójától
-
2NF: (több tagból álló azonosítók esetén) minden nem-kulcs
tulajdonság teljes (nem csak részleges) függéssel függ az azonosítótól
-
3NF: mint 2NF, ...és csak attól függ.
-
a normalizálás végére kialakulnak az egyes egyedtípusok kulcsai
-
az alaplépés a függő mezők kivétele egy új táblába, a külső kulcs meghagyásával
Feladatok
-
A specifikáció megértése és a Relációs Adatelemzés (RDA)
elkészítése.
-
A Logikai Adatbázismodell (LDB) elkészítése.
A modellezési feladat szöveges specifikációja
Egy DVD-kölcsönző nyilvántartását vizsgáljuk. A DVD-kről nyilvántartást vezetnek,
mely nyilvántartás tartalmazza a film címét, főszereplőjét, rendezőjét.
A filmeknek egyedi azonosító száma van, a cím nem biztos, hogy egyedi.
Egy film több DVD-n is szerepelhet, a kölcsönző által készített másolatokban.
A DVD-knek szintén egyedi azonosítójuk van, valamint a típusát is nyilvántartják.
A kölcsönzőből kizárólag tagok kölcsönözhetnek. A tag
nevét, címét, valamint egyedi sorszámát nyilvántartják. A tagok filme(ke)t
kölcsönöznek, a kikölcsönzés dátumát és a visszahozás dátumát is pontosan
követni kell. A kölcsönző egy nagykereskedőtől vásárolja a filmeket, minden
rendelésnek van egy száma és a visszakeresés érdekében a rendelés dátumát
is nyilvántartják. Egy rendelésen több film is szerepelhet.
A kölcsönzőnél található dokumentumok a következő
adatokat tartalmazzák a különböző adatlapokon. Ezekből a dokumentumokból
kell megalkotni a logikai adatbázis-modellt:
-
DVD száma
-
DVD típusa
-
Film címe
-
Film száma
-
Rendelés száma
-
Rendelés dátuma
-
Kölcsönzés száma
-
Tag sorszáma
-
Tag neve
-
Tag címe
-
Kölcsönzés dátuma
-
Visszahozás dátuma
-
Film főszereplője
-
Film rendezője
1. A Relációs adatelemzés:
Normalizálatlan forma (0NF):
-
DVD száma
-
DVD típusa
-
Film címe
-
Film száma
-
Film főszereplője
-
Film rendezője
-
Rendelés száma
-
Rendelési dátum
-
Kölcsönzés száma
-
Kölcsönzés dátuma
-
Visszahozás dátuma
-
Tag sorszáma
-
Tag neve
-
Tag címe
A normalizálatlan forma a nyilvántartott adatok összességét
tartalmazza, átalakítás nélkül. Ha a DVD számát tekintjük azonosítónak,
akkor látszik, hogy ennek az azonosítónak egy adott értékéhez egyes tulajdonságoknak
(pl. visszahozás dátuma) több értéke is tartozik ("több érték is van egy
mezőben").
Első normál forma (1NF):
Elkülönítjük azokat a tulajdonságokat, amelyek többször
szerepelnek az adatlapon azoktól, melyek minden adatlapon csak egyszer
szerepelnek. Minden tulajdonságnak funkcionálisan függeni kell az azonosítótól
(aláhúzva).
DVD
-
DVD száma
-
DVD típusa
-
Film címe
-
Film száma
-
Rendelés száma
-
Rendelés dátuma
-
Film főszereplője
-
Film rendezője
Kölcsönzés
-
Kölcsönzés száma
-
DVD száma
-
Tag sorszáma
-
Tag neve
-
Tag címe
-
Kölcsönzés dátuma
-
Visszahozás dátuma
Például a DVD száma egy adatlapon csak egyszer szerepelhet,
mivel minden DVD-nek egyedi azonosítója van, de egy DVD-t többen
is kikölcsönözhetnek, ezért a kölcsönzés száma és a tag adatai ismétlődnek
egy adatlapon. A DVD számát mindkét reláció tartalmazza, mivel ez volt
a kulcs a normalizálatlan formában.
Most alakítsuk tovább a relációkat!
Második normál forma (2NF)
Elkülönítjük azokat az attribútumokat, melyek nem a teljes
kulcstól függenek azoktól, melyek teljes függőségben vannak a teljes kulccsal.
Mivel egyik kulcsunk sem összetett kulcs, ezért mindkét reláció változatlan
marad.
Harmadik normál forma (3NF)
Elkülönítjük azokat az attribútumokat, melyek a reláció
kulcsától csak közvetetten függnek. Pl. a film rendezője nem függ közvetlenül
a DVD számától, stb.
-
DVD tábla --> kiválik a film számától függő három mező
(Film tábla), és a rendelés számától függő egy mező (Rendelés tábla)
-
Kölcsönzés tábla --> kiválik a tag sorszámától függő két
mező
Film
-
Film száma
-
Rendelés száma (külső kulcs)
-
Film címe
-
Film rendezője
-
Film főszereplője
DVD
-
DVD száma
-
Film száma (külső kulcs)
-
DVD típusa
Rendelés
-
Rendelés száma
-
Rendelés dátuma
Kölcsönzés
-
Kölcsönzés száma
-
DVD száma (külső kulcs)
-
Tag sorszáma (külső kulcs)
-
Kölcsönzés dátuma
-
Visszahozás dátuma
Tag
-
Tag sorszáma
-
Tag neve
-
Tag címe
Az első három reláció a korábbi első relációból adódik, az
utolsó kettő pedig a korábbi másodikból. Ez az adatszerkezet már megfelelő
arra, hogy adatbáziskezelő programmal dolgozzuk fel.
2. A Logikai Adatbázis Modell elkészítése
Állapítsuk meg az entitások közötti kapcsolatokat! Például:
Egy DVD pontosan egy filmet tartalmaz, egy film megtalálható
egy vagy több DVD-n (másolatokban).
-
A rendelés és a film közötti kapcsolat egy-sok kapcsolat,
mivel egy rendeléshez több film is tartozhat, de egy filmet csak egy rendeléssel
szerezhetünk be (az utánrendelt, azonos című film már más sorszámot kap)
-
A film és a DVD közti kapcsolat egy-több kapcsolat,
mivel egy film több DVD-n is szerepelhet, de egy DVD-n csak egy film
lehet
-
A DVD-kölcsönzés kapcsolat egy-több kapcsolat, mivel
egy DVD-t több tag is kikölcsönözhet, de egy kölcsönzés csak egy
DVD-re vonatkozhat (ha egy tag kettőt kölcsönöz, az már más számot kap)
-
A tag-kölcsönzés kapcsolat egy-több kapcsolat, mivel egy
tag többet is kölcsönözhet, de egy bizonyos kölcsönzés csak egy tagra vonatkozhat.
Most már fel tudjuk rajzolni a logikai adatmodellt (LDB ábrát).
A
kulcsok vastagon írottak, a kapcsolómezők az azonos nevű mezők.
Tanulság: a táblák egy tranzakciós (OLTP) adatbázisban a szerepük szerint feloszthatók törzsállományokra és
tranziens állományokra (a szerep relatív),
jellemző a hópehely, illetve hógolyó szerkezet.
Lekérdezések készítése a normalizált formához
- Tudjuk meg azoknak a tagoknak az adatait, akik bár be vannak
iratkozva, még nem kölcsönöztek egyetlen filmet sem (lekérdezés neve: L1)!
-
Tudjuk meg az összes rendelkezésre álló filmünk főszereplőjét
(lekérdezés neve: L2)!
-
Állapítsuk meg az összes rendelkezésre álló film címét és
rendezőjét (lekérdezés neve: L3)!
-
Vizsgáljuk meg, hogy van-e esetleg két azonos nevő tagunk,
aki máshol lakik (lekérdezés neve: L4, ez nehezebb, kell hozzá egy kis
SQL...)!
-
Jelenítsük meg azon filmek és DVD-k számát és a film címét,
amelyeket még soha nem kölcsönöztek ki (lekérdezés neve: L5)!
Önállóan megoldandó feladat
A Stupido-Gigantic GmbH Ltd Kft S.A. főleg kereskedelemmel
foglalkozik. Ennek megfelelően rendelések futnak be hozzá vásárlóktól,
amelyeket a szállítók révén teljesít. Egy terméket csak egy szállító
szállít, és egy szállító csak egy terméket szállít. Nyilvántartjuk a vásárlók
pillanatnyi egyenlegét. Egy rendelésen több tétel is szerepelhet,
a tétel tartalma a termék megnevezése és a mennyiség. A szállítók, termékek
és városok neve egyedi, de a vásárlók neve csak egy városon belül
egyedi. Feltehetjük, hogy minden városnak csak egy irányítószáma van.
A tárolt adatok ömlesztve:
SzállítóIrányítóSzám, VásárlóIrányítóSzám, SzállítóNév,
RendelésSzáma, Mennyiség, RendelésDátuma, VásárlóVárosnév, Egyenleg, Egységár,
Terméknév, SzállítóVárosnév, Vásárlónév, Terméknév.
Feladatok:
-
Készítsük el a Stupido-Gigantic GmbH Ltd Kft. S.A. kereskedelmének
logikai adatbázis-modelljét (a 3NF alakig)! Javasolt eszköz: Notepad
-
Valósítsuk meg a logikai adatmodellt az Access segítségével,
és néhány tesztadatot írjunk be az adatbázis tábláiba!
-
Valósítsuk meg a következő lekérdezéseket:
-
a "gumimaci" nevű terméket szállító szállító városának az
irányítószáma
-
1998 évi vásárlóink neve
-
ajkai vásárlóink egyenlege
-
a legnagyobb egyenlegű vásárló neve és városa
-
a leghűségésebb vásárlónk melyik szállítótól vásárolt a legtöbbször?