
CÍMLAP
Halassy Béla
Az adatbázistervezés alapjai és titkai
TARTALOM, ELŐSZÓ
Tartalom
ELŐZMÉNYEK
ELŐSZÓ
BEVEZETÉS - I.
1. ADAT ÉS INFORMÁCIÓ
1.1 Az alapfogalmak szemléletmódja
1.2 Az adat - első megközelítésben
1.3 Az ismeretszerzés momentumai
1.4 Az adat és az információ lényege illetve viszonya
1.5 Szintaktika, szemaktika, pragmatika
1.6 Miért hibádzik a kommunikáció?
1.7 Mit lehet megtudni?
Ellenőrző kérdések - 1
2. AZ ISMERETKEZELÉS KÉT MÓDJA
2.1 Az ismeret hordozó közegei
2.2 Az ismeret négy dimenziója
2.3 Történeti kitérő: A "szemantikai adatbázis"
2.4 Kétféle mondat
2.5 Adatszerű ismeretkezelés
2.6 Szövegszerű ismeretkezelés
2.7 A kétféle ismeretkezelés viszonya
Ellenőrző kérdések - 2
3. AZ ADATBÁZIS LÉNYEGE
3.1 Állomány, adatbank, adatbázis
3.2 Egyedtípus, -előfordulás, -halmaz
3.3 Tulajdonságtípus, -érték, -értékhalmaz
3.4 Két relativitás
3.5 A bináris relációk modellje
3.6 Az azonosítás problémaköre
3.7 Kapcsolattípus, -előfordulás, -(al)halmaz
3.8 Az adatbázis
3.9 Három további kérdés
Ellenőrző kérdések - 3
4. AZ ADATBÁZIS HÁROM SZINTJE
4.1 Egy alapvető probléma: az eszközorientáltság
4.2 Az adatok két aspektusa
4.3 Az adatbázis kétféle tartalma
4.4 Az adatbázis fogalmi és logikai szerkezete
4.5 Két lényeg határán
4.6 Az adatbázis fizikai szerkezete
4.7 A fizikai függetlenség
4.8 A vertikális leképezés
Ellenőrző kérdések - 4
5. AZ ADATBÁZIS VETÜLETEI
5.1 Egy alapvető probléma: a nézetorientáltság
5.2 A nézetorientáltság káros következményei
5.3 Globális és parciális adatbázisszemlélet
5.4 Az "adatmodell" jelentése és tartalma
5.5 Az ANSI-SPARC architektúra
5.6 A szintek megfeleltetése, modellek és sémák
5.7 Adatmodell-elmélet és adatbázis-gyakorlat
5.8 Adatmodell-reprezentációk
Ellenőrző kérdések - 5
6. A MODELL ALAPVETŐ SZERKEZETE
6.1 Az adatmodell, mint rendszer
6.2 Az egyedek kétféle struktúrája
6.3 A tulajdonságok alapvető szerepei
6.4 Abszolút és relatív szerep
6.5 Hierarchikus inhomogén kapcsolatok
6.6 Hálós egyedviszonyok - 1
6.7 Hálós egyedviszonyok - 2
6.8 Újabb tulajdonság szerepek
6.9 A kölcsönös egyedviszony
6.10 Gyorsmérleg az adatszerkezetről
Ellenőrző kérdések - 6
7. SZERKEZETI FINOMSÁGOK
7.1 Az adatmodell sokszínűsége
7.2 A "száz-százalékos elv"
7.3 Az értéktartomány
7.4 A szerepnév
7.5 Ismétlődés és szerepnév
7.6 A visszamutató egyedviszony
7.7 A hierarchikus homogén viszonyok
7.8 Családfa és házastárs viszonyok
7.9 Háromféle "üres" érték
7.10 Egyedaltípusok
7.11 Szerkezeti összefoglalás
Ellenőrző kérdések - 7
8. ADATBÁZISKEZELÉS
8.1 Az ismeretek természete
8.2 Az adatkezelés szintjei
8.3 Történeti kitekintés: Az adatbázisgépek
8.4 Adatkezelés és adatfeldolgozás
8.5 Szabad-e ...?
8.6 Állomány- és adatbáziskezelés
8.7 A természetes adatfeldolgozási lánc
8.8 Technikai adatok
8.9 Az adatbázis alapvető titka
Ellenőrző kérdések - 8
9. A METAADATBÁZIS
9.1 Az adatbázisok két szemléleti síkja
9.2 A metaadatbázis lényege
9.3 Történeti kitekintés: Az adatszótár
9.4 A metarendszerek természete
9.5 A metaismeretek fajtái
9.6 Passzív, félaktív és aktív adatszótár
9.7 Tervezés ábra alapján
10. ADATBÁZIS-MENEDZSELÉS
10.1 Mitől lehet rossz az adatbázis?
10.2 Hány az adatbázis?
10.3 Alkalmazási adatszabványok
10.4 Fejlesztési adatszabványok
10.5 Fejlesztési eljárászabványok
10.6 Menedzselési szabványok
10.7 Változásmenedzselés
10.8 Szervezeti feltételek
11. AZ ÚT
11.1 Előrehozott zárszó
11.2 Fogalom születik
11.3 Több szem ...
11.4 Adat születik
11.5 Az ismeretek szerkesztése és első betöltése
11.6 Bizonylatok
11.7 Adatbevitel
11.8 "Új" ismeret születik
11.9 Adatkimenet és behangolás
11.10 A hosszú és kanyargós út
BEVEZETÉS - II.
12. AZ ADATMODELLEK HIBÁI
12.1 Az adatbázis hibáinak a forrásai
12.2 Az adatmodell lényege
12.3 Ábrázolási konvencióink
12.4 Tipikus adatmodellezési hibák
12.4.1 Nyílt logikai átfedés
12.4.2 Látszólagos logikai átfedés
12.4.3 Rejtett logikai átfedés
12.4.4 Jelsor-ellentmondások
12.4.5 A logikai átfedés hiánya
12.4.6 Fizikai átfedés
12.4.7 Kiegyensúlyozatlanság
12.4.8 Tisztázatlan tartalmak
12.4.9 A modell kettős arculata
12.4.10 A hibák emberi következményei
12.5 Az adatmodellezési hibák gyökerei
12.5.1 Nézetvakság
12.5.2 Szintvakság
12.5.3 Szerepvakság
12.5.4 Bemenet/kimenet vakság
12.6 Az adatmodellezés céljai
Ellenőrző kérdések - 12
13. FÜGGÉSEK ÉS NORMALIZÁLÁS
13.1 Egyszerű szabályok
13.2 Funkcionális függés
13.3 Tartományfüggés
13.4 Nem-normalizált egyedtípusok
13.4.1 Az ismétlődés és káros hatása
13.4.2 Az ismétlődés elvi alapja
13.4.3 A normalizálás első lépése
13.4.4 További tudnivalók az ismétlődésről
13.5 A normalizálás lényege
13.6 Normalizálás és struktúra
13.7 Ismétlődés és kétségek
Ellenőrző kérdések - 13
14. ALAPVETŐ NORMÁLFORMÁK
14.1 A normalizálás alapjai
14.2 A második normálforma
14.2.1 A részleges függés és következményei
14.2.2 A normalizálás második lépése
14.2.3 Normálforma és szemantika
14.2.4 A második normálforma és a modellstruktúra
14.3 A harmadik normálforma
14.3.1 A tranzitív függés és következményei
14.3.2 A normalizálás harmadik lépése
14.4 A normalizálás természete
14.5 Normalizálási sorrend
14.6 A dekompozíció sajátosságai
14.7 Az alternáló kulcs
Ellenőrző kérdések - 14
15. MAGASABB NORMÁLFORMÁK
15.1 Hány, melyik és milyen a kulcs?
15.2 A Boyce-Codd normálforma (BCNF)
15.2.1 A több összetett kulcsjelöltből fakadó gondok
15.2.2 A kulcstörő függés
15.2.3 BCNF problémák
15.2.4 A normalizálás negyedik lépése
15.3 A negyedik normálforma
15.3.1 A többértékű függés és az általa okozott problémák
15.3.2 A normalizálás ötödik lépése
15.3.3 Megjegyzések a többértékű függéshez
15.4 Az ötödik normálforma
15.4.1 A kapcsolásfüggés és az általa okozott problémák
15.4.2 A normalizálás hatodik lépése
15.4.3 Megjegyzések a végső normálformához
Ellenőrző kérdések - 15
16. A CSOPORTOK CSAPDÁI
16.1 Eltérő gondolkozásmódok
16.2 A függéstáblázat
16.3 Két egyszerű és három ismert függési helyzet
16.4 A belső kulcstörő függés
16.5 A metszetfüggés
16.6 A csoportfüggés
16.7 Tanulságok és a döntési táblázat kiegészítése
16.8 Pszeudo-tranzitivitás
Ellenőrző kérdések - 16
17. NORMALIZÁLÁSI ELJÁRÁSOK
17.1 A normalizálás, mint feldolgozás
17.2 Kapcsolathiány
17.3 A dekompozíció összefoglalása
17.4 Az "univerzális reláció"
17.5 Normálforma szintézis
17.6 Kérdezni tudni kell
17.7 Függések és szerkezetek
17.8 Két összetett szerkezeti probléma
17.9 Az adatmodell "fonalai"
17.10 Apró szerkezeti titkok
17.11 A kulcsmátrix
18. SAJÁTOS SZERKEZETI TÉNYEZŐK
18.1 Minőségi adatmodellezés
18.2 Többszörös inhomogén kapcsolatok
18.3 A szerepnevek függései
18.4 Homogén viszonyok
18.5 A feltételes függés és az egyedaltípus
18.6 Unáris egyedek
18.7 Szinguláris egyedek
18.8 Konstansok és tulajdonságstruktúrák
18.9 Az osztályozás kérdésköre
19. TIPIKUS TERVEZÉSI HIBÁK
19.1 Fegyelmezett fantázia
19.2 Általános tervezési problémák
19.2.1 Név-variációk
19.2.2 Absztrakciós gondok
19.2.3 A körülírás hiánya
19.3 A "CSAK" szindróma
19.4 Egyéb csacskaságok
19.5 Statikus szemlélet
19.5.1 Az idő modellezése
19.5.2 Esemény, változás, állapot
19.6 Modell-sablonok
19.7 Szinttévesztés
20. ELEMZÉS ÉS DOKUMENTÁLÁS
20.1 Egy mintapélda
20.2 A mintapélda tartalmi hibái
20.3 Az adatmodell dokumentálása
21. TERVEZÉSI ESETTANULMÁNY
21.1 A példa kerete
21.2 A kiinduló modell
21.3 Az esettanulmány megoldása elé
21.4 Ismerkedés az elemzendő tervvel
21.5 Az egyértelműség elemzése
21.6 Azonosító- és azonosságelemzés
21.7 A példa átmenetileg javított változata
21.8 A rejtett redundanciák elemzése
21.9 Kapcsolatelemzés
21.10 A példa időleges megoldása
21.11 Zárszó
FELADATMEGOLDÁSOK
IRODALOMJEGYZÉK
FOGALOMJEGYZÉK
Előszó
Három kérdéskör motoszkál a fejemben. Az egyik az, hogy mikor is írom ezt a
könyvet? 1983-ban jelent meg az "Adatmodellezés a rendszerfejlesztésben"
című munkám. Nagyon sok barátom és kedves kollégám szerint túlzottan korán.
Szerintük tíz évvel ezelőtt még nem érett meg a helyzet mondanivalóm
befogadására. Bezzeg most, amikor minden vállalat átalakítja, korszerűsíti
az információs rendszerét, amikor már megvehet egy csinos gépet és egy
valódi relációs adatkezelőt, most szükség lenne az adatbázistervezés
ismereteire. Vagyis ezzel a könyvvel szerintük végül is elkéstem.
Én pedig nagyon félek attól, hogy még mindig túl korai ez a kiadvány.
Legalábbis bizonyos részeinek a befogadására, megemésztésére még nem
mindenki lesz képes. A veréb, a varjú és a sas dilemmájával kell
szembenéznem. Azok, akik még csak az xBASE-szerű adatkezelő verebekkel
bíbelődnek, nem fogják megérteni, hogy miért van szükség ilyen "bonyolult"
adatbázistervezési módszerekre. Még több bajuk lesz velem azoknak, akik
láttak már karón varnyút, azaz megamini kategóriájú relációs adatkezelő
rendszert. "Hát már az is gond? Húzok egy indexet, aztán annyi." módon
gondolkoznak. A valóban sokféle technikai lehetőségtől elbűvölve nem
éreznek rá, hogy én miért mindig a valóság ismereteinek a hű és természetes
tükrözését helyezem előtérbe a technikai megoldásokkal (pl. index) szemben.
Én a jelenlegieknél sokkal, de sokkal jobb kezelőket is el tudok képzelni,
amelyek úgy viszonyulnak a relációsakhoz, mint sas a varjúhoz.
Mondanivalómat e legfelső szinthez szabtam és ezért félek, hogy nem fog
mindenki velem szárnyalni.
A második kérdés az, hogy kinek is írom ezt a könyvet? Az adatbázistervezés
komoly technikai tudást feltételez. Ezért jogosan tűnik úgy, hogy ez a
kiadvány elsősorban a mai és a leendő fejlesztőnek, a szakembernek szól.
Csakhogy az információs rendszerek fejlesztésének van két további
résztvevője is. Az egyik, a kulcsfigura, a vezető. Ha a menedzser nincs
tisztában az adatbázis tervezésének a buktatóival, ha azt hiszi, hogy egy
ma megálmodott bizonylat alapján holnap már élő adatbázis fog működni,
akkor a fejlesztő hiába ismeri az adattervezés titkait. Egyszerűen nem kap
elég időt arra, hogy érvényesítse a tervezés minimális követelményeit. A
vezető már x alkalommal tapasztalta, hogy gyorsan nem lehet jó adatbázist
építeni. Ennek ellenére az y-dik helyzetben is az azonnali megoldást
sürgeti. Nemigen pozitív a harmadik résztvevő, a felhasználó szerepe sem.
Elhamarkodott igényekkel áll elő, amelyeket azután nap mint nap módosít.
Pedig tudjuk, hogy az adatbázis leginkább a strukturális változásra
érzékeny. Tegyük mindehhez a felhasználói önzést. Az én adatom az én váram!
Abba ne szóljon bele senki, csak legfeljebb az én fejlesztőm, mert nélküle
semmire sem megyek. A valójában közös adatokat alkalmazó felhasználók úgy
rejtegetik egymás elől az "adatbázisaikat", mint a legértékesebb kincset.
A jó adatbázis kialakításának a sikere a három szereplő értelmes
együttműködésétől függ. Ezért ez a könyv elvileg mindhárom partinak szól.
Gyakorlatilag nem bízom abban, hogy a kiadvány megtalálja a címzetteket és
eléri a kívánt változást. Hiszen még saját kollégáimmal, a fejlesztőkkel is
meg kell küzdenem.
Persze három réteggel nem fogok sokra menni. Az első csapatot azok az
aggcsecsemők alkotják, akik még mindig a hetvenes évek számítástechnikai
emlőit szopogatják. Ők már vén motorosok a szakmában, nekik ne mondjanak
már semmit, mert nincs új a nap alatt. A beverklizett módon, az újabb
eszközökre, módszerekre, lehetőségekre fittyet hányva tákolgatják össze
ósdi "rendszereiket" a "jól bevált" sablonok szerint.
Azután itt van az ifjútitánok hada. A mindig újabb és újabb gépek és
programok mellett "elkötelezetteké". Sokszor megdöbbent, hogy velük
társalogva azon kapom magam, hogy nem emberrel, hanem hardverrel vagy
szoftverrel beszélek. Te, és ez a rendszer ezt csinálja, meg azt tudja...
Sértődött hallgatás a válasz, amikor megkérdezem, hogy és.... És Te, fiam,
személy szerint Te mit csinálsz és mit tudsz? A drága gyermek nem érti,
hogy egy dolog a technika ismerete, és teljesen más annak mindenki javára
való használata.
Persze vannak olyanok is, akik mindezzel nem törődnek. A hullámlovagokról
van szó. A félművelt ámítástechnikus a papa pozíciója miatt bekerül a
világbanki kölcsönnel támogatott projektbe. Naponta keres annyit, amennyi
egy becsületes dolgozó havi bére. Persze semmihez sem ért valójában, de ez
őt nem is érdekli. Mondanom sem kell, hogy ez a könyv nem neki, nem is a
tanulni képtelen aggcsecsemőnek vagy a tanulás értelmét nem ismerő
ifjútitánnak - aki maga is hamar koravénné válik - szól. Hát akkor kinek?
Ezzel eljutottam a harmadik kérdéshez. Miért is írom ezt a könyvet? Azért,
mert Benned bízom. A lélekben fiatalban. Aki akar és tud véresen-komolyan
játszani. Akit a körülmények korlátoznak; aki nem képes mindig a legjobbat
alkotni; de aki egy kártyaparti után napokkal is elgondolkozik azon, hogy
hol szúrta el és miként lett volna - jobb. Ez a könyv a felnőtten komoly
fiataloknak, a humorra képeseknek szól. Akik tudják, hogy a humor nem vicc,
hanem az élet és embertársaink mélyen bölcs, megértő, megmosolygó
szeretete.
Két szép lányomnak ajánlom ezt a könyvet akkor is, ha ők nem követik az én
hivatásomat. Igen, hivatást mondtam, nem szakmát. Ez az adatbázistervezés
legeslegfőbb titka. Nem azért kell jó adatbázist tervezni, hogy engem
megdicsérjenek (szakma). Hanem azért, hogy másokat jól el tudjunk látni az
élet nélkülözhetetlen kellékével, az ismerettel (hivatás). Elsősorban nem a
technikát, hanem ezt a szemléletet kell elsajátítani. Ha valamit sikerül
megéreztetnem ebből a lényegből, akkor ez a könyv nem íródott hiába.
Az adatbázisok tervezéséhez, felnőtté érleléséhez éppen annyi türelem
szükséges, mint a fiatalokhoz. Nem mindig látod erőfeszítéseid azonnali
gyümölcsét. Nem kapod meg rögtön az annyira várt köszönő szavakat. Majd egy
napon, amikor a komoly, nehéz, becsületes játék a te részedről már régen
véget ért, amikor már minden a helyére rendeződött és neked már nincs
szereped, amikor már nem is számítasz rá, váratlanul így szólnak hozzád:
"Köszönöm". Lehet, hogy ezt a szót így soha meg nem hallod. Csak éppen a
szomszéd utcában a Kovács kedves lesz a nejéhez, mert húsz helyett két
másodperc alatt adták ki az információit a Te jó adatbázisterved miatt. No
látod, ezért hivatás az adatbázistervezés.
Már csak annyi maradt hátra, hogy megköszönjem mindazoknak a segítségét,
akik e könyv megszületéséhez hozzájárultak. Legfőképpen pedig köszönetet
mondjak Annak, akitől kaptam a tudást és annak átadásának kényszerét
illetve lehetőségét.
Halassy Béla