MODELLEZÉSI HIBÁK
Szó volt róla…
• az adatmodell szerkezete
– egyedszerkezet – szerepek
– szerkezeti korlátok – kapcsolatok
• szerkezeti finomságok
– szerepnév
MODELLEZÉSI HIBÁK GYÖKERE
• adatmodellezés ~ modellelemzés
– vö. „Oszd meg és uralkodj!”
– vö. „Vissza az ősökhöz”
• követelmények
– formai – tartalmi
• CÉL: a legjobb modell megalkotása
A LEGJOBB MODELL…
• érthető (kote_sorsz???)
• valósághű (legmagasabb iskola)
• egyértelmű
• teljes
• minimális
• ---
JELLEGZETES HIBÁK
• hibaforrás
– rossz program (korlátok) – rossz adatbevitel (korlátok)
– rossz adatmodell (redundáns)
JELLEGZETES HIBÁK
• tipikus adatmodellezési hibák
– nyílt logikai átfedés
– látszólagos logikai átfedés – rejtett logikai átfedés
– technikai homonimák és szinonimák – a logikai átfedés hiánya
– fizikai átfedés
NYÍLT LOGIKAI ÁTFEDÉS
Ha egy TT több ET-hoz is tartozik
– azonos névvel
– azonos tartalommal
– egyikben sem azonosító
logikai: megjelenik
– nemcsak a tartalomban, – a szerkezetben is
LÁTSZÓLAGOS LOGIKAI ÁTFEDÉS
Ha egy TT több ET-hoz is tartozik
– azonos névvel
– eltérő tartalommal
logikai: l. előbb; látszólagos, azaz homonima
„…tulajokról és kocsikról típus szerint…”
homonim kulcsok: tisztázatlan kapcsolatok
REJTETT LOGIKAI ÁTFEDÉS
Ha egy TT több ET-hoz is tartozik
– eltérő névvel
– azonos tartalommal
rejtett: TULAJ/Törzsszám ~ KÁR/Tulajkód Az adatmodell első változatából ki kell
küszöbölni!
TECHNIKAI HOMONIMÁK
Ha két azonos (nevű) TT értékkészlete különbözik
Az adatbázisban valósként viselkedik pl.: „Ápolónő 11” – „Ápolónő Á”
Feltétlenül elkerülni!
TECHNIKAI SZINONIMÁK
Ha két különböző nevű TT értékkészlete azonos
Az adatbázisban valósként viselkedik pl.: „Pályázat_az” – „Ályázat azonosító”
Feltétlenül elkerülni!
Két modellezési tényező
akkor és csak akkor azonos, ha –elvi értelmük,
–nevük és
–értékkészletük is
TELJESEN megegyezik!
A LOGIKAI ÁTFEDÉS HIÁNYA
Ha két elvileg összefüggő ET-a nem kap- csolható, mert nincs kapcsoló TT-uk
• szerkezeti hiba
• a kapcsolathiány lehet EF szintű is (integritási hiba)
Feltétlenül elkerülni!
FIZIKAI ÁTFEDÉS
Ha az EF-okban azonos TÉ-részsorok
jelennek meg egy további TT értékétől függően
a „további TT” nem feltétlenül kézzelfogható (pl.: Lada ~ 5 fő)
A fogalmi modellben feltétlenül elkerülni!
KIEGYENSÚLYOZATLANSÁG
Ha az elvileg egymás mellé rendelt ET-ok közül az egyik kezelése a másikénál
jobban támogatott, azaz alá-fölérendelt párokká válnak
pl.: KÁR (Kárszám, Dátum, Típus, Tulajkód, Rendszám) + ismétlődő csoport
A fogalmi modellben feltétlenül elkerülni!
INKORREKT NEVEK
A pontos, beszélő nevekhez (rövid)
értelmező magyarázatok is tartoznak!
különben nehezen fedezhetők fel a korábbiakban részletezett problémák
A MODELLEZÉSI HIBÁK GYÖKEREI
• Nézetvakság
• Szintkeverés
• Szerepkörtévesztés
• Bemenet/kimenet szemüveg
NÉZETVAKSÁG
Az adatmodell: 1
• a valóságot modellezzük, nem az egyéni nézetet
• kerüljük a párhuzamos fejlesztéseket
SZINTKEVERÉS
Az adatmodell mindig tisztán fogalmi szintű!
• kezelők korlátossága logikai/fizikai szinten gondolkodunk
– logikai/fizikai jellemzőket együtt kér – strukturálási képességei hiányosak
SZEREPKÖRTÉVESZTÉS
A modell közös termék: a vezetőé, a felhasználóé és a fejlesztőé.
• vezető: beleszól mindenbe
• felhasználó: saját hülyeségeihez(!) ragaszkodik
• fejlesztő: problémamegoldás helyett
BEMENET/KIMENET SZEMÜVEG
A modell szerkezete
„-menet”független kell legyen!
• fő oka a meglévő papírokban való gondolkodás
• a bizonylatokon lévő ismeretek (rejtett)
hierarchikus/hálós szerkezeteket alkotnak
FÜGGÉSEK,
NORMALIZÁLÁS
• cél: a legjobb modell megalkotása ez FOGALMI szintű!
• ismétlés: modell jósága
A LEGJOBB MODELL…
• érthető (kote_sorsz???)
• valósághű (legmagasabb iskola)
• egyértelmű
• teljes
• MINIMÁLIS
• ---
NORMALIZÁLÁS
• matematikai eljárás
• redundanciákat kiszűri a relációs táblákból
• ET átalakítható a TT-k viszonyai alapján
• a külső szerkezetet is vizsgálni kell
• ELŐFELTÉTEL:
az ismétlődő csoportok kiszűrése
NORMALIZÁLÁS
• NEM mechanikus tevékenység!
• többféle ismétlődés / esetleg nem látható
• szemantikai „trükkök”
• HELYES MODELLEZÉSI SZEMLÉLET,
„J. P. E.” eljárás
RELÁCIÓS ADB
• reláció: kétdimenziós tábla (relation)
• viszony: táblák közti (relationship)
• reláció: mennyiségi fogalom, nem minőségi
• ET (fogalmi) táblával valósítjuk meg (ha relációs kezelőt használunk)
FUNKCIONÁLIS FÜGGÉS
Az E ET-ban az A TT csakkor határozza meg funkcionálisan a B-t, ha az utóbbi minden EF-ban ugyanazt az értéket
veszi föl, amikor az A értéke is ugyanaz.
• KOCSI (Frsz, Kocsitípus, Szín, …)
FUNKCIONÁLIS FÜGGÉS
• A B (és B -/->A), M:1 hierarchikus (Frsz kocsitípus)
• kölcsönös függés, 1:1 lineáris (Alvázszám Motorszám)
• kölcsönös függetlenség, M:N fokú háló (Kocsitípus / Szín)
AZ FF LEHET…
• a meghatározó okán
– elemi
– összetett
• függéserő alapján
– erős (mindig van meghatározott)
– gyönge (nem feltétlenül van meghatározott)
• összetett meghatározó esetén
NEM-NORMALIZÁLT ET
Az ET ismétlődő ismeretet tartalmaz, ha van olyan TT-a, amely nem függ az
azonosítótól (0NF, N1NF)
• SZEMÉLY (Szám, Név, Nyelv, Év, Szint)
NEM-NORMALIZÁLT ET
• Rossz megoldás:
(…, Nyelv-1, …, Nyelv-2, Év-2,…)
– fölösleges helyfoglalás – kiegyensúlyozatlanság
NEM-NORMALIZÁLT ET
• Jó megoldás: a független TT-k kiemelése SZEMÉLY (Szám, Név)
NYELVTUDÁS (Szám+Nyelv, Év, Szint)
(vö.: kulcsrészként kapcsoló TT nem lehet üres!)
• A valóságot is jobban közelítjük!
NEM-NORMALIZÁLT ET
Néha gondolkodni is kell…
KÁR (Kárszám, Dátum, Típus, Tulajkód, Kárösszeg)
KÁR (Kárszám, Dátum),
EGYEDI KÁR (Kárszám+Tulajkód, Típus,
NEM-NORMALIZÁLT ET
…de…mi van, ha a tulaj egyik kocsijával nekimegy a másik kocsijának?
Gondolkodás: KOCSIK ütköztek és nem mások!
EGYEDI KÁR (Kárszám+Frsz, Típus, Tulajkód, Kárösszeg)
NEM-NORMALIZÁLT (?) ET
…de…
KIKÜLDETÉS (Szám, SzállásFt, KajaFt, DologiFt)
Azonos lényegek?
NEM-NORMALIZÁLT ET
Az ismétlődéseket tartalmazó (többdimenziós) tábla
NEM RELÁCIÓ!
• Az adatmodellezés tárgya:
a valós jelenségek (és nem a táblák)
1NF
…ha minden nemkulcs TT függ a kulcstól
RÉSZLEGES FÜGGÉS
RENDELÉS (Rendelésszám+Cikkszám, Cikknév, Mennyiség, …)
R.sz. C.sz. Cikknév Mennyi
1 001 bádog
fürdőnadrág 24
2 001 bádog 2
RÉSZLEGES FÜGGÉS
PROBLÉMÁK
• redundancia
• beviteli anomália
• törlési anomália
RÉSZLEGES FÜGGÉS
Jó megoldás: a rosszul függő TT-k kiemelése
CIKK (Cikkszám, Cikknév, …)
RENDELÉS (Rendelésszám+Cikkszám, Mennyiség, …)
2NF
…ha minden (nemkulcs) TT függ a teljes kulcstól
TRANZITÍV FÜGGÉS
RENDELÉS (Rendelésszám, …, Vevőkód, Vevőnév, …)
Problémák
– redundancia
– karbantartási nehézségek
TRANZITÍV FÜGGÉS
Jó megoldás: a rosszul függő TT-k kiemelése
RENDELÉS (Rendelésszám, …, Vevőkód) VEVŐ (Vevőkód, Vevőnév, Vevőcím)
3NF
…ha minden (nemkulcs) TT csak a kulcstól függ
1-3NF
…ha minden (leíró) TT függ:
1. a kulcstól,
2. a teljes kulcstól, 3. csak a kulcstól
ÉRTÉKTARTOMÁNY
Az adott jelentésű tulajdonság általánosan felvehető értékeinek halmaza (domain).
RENDELÉS (Rendelésszám, …) SZÁMLA (Számlaszám, …)
pl. mindkettő 9 jegyű szám
ÉRTÉKTARTOMÁNY
• helytelen felfogás
mindkettő 9 jegyű ==> „Sorszám” tartomány
• helyes felfogás
– „adott jelentésű” ==> nem lehetnek egy tartomány!
– Típuskód tartomány abszolút, ET-független
FÜGGÉSEK
• tulajdonságok
– ET-hoz kötötten (TT) FF (l. fentebb) – ET-függetlenül TF
TARTOMÁNYFÜGGÉS
• A => B csakkor, ha az A tartomány minden értékéhez minden
időpillanatban a B-nek 1 értéke társítható
TARTOMÁNYFÜGGÉS
Pl.: KÖZPONT (Kp.azon., …) ELADÓHELY (Eahely.azon, …)
RENDELÉS (Rendelésszám, kp.azon., eahely.azon)
FF: eahely.azon kp.azon (látszat!) TF: eahely.azon => kp.azon