AT00.qxd
3/10/2004
9:46 PM
Page xi
Elõszó Manapság már nem látom olyan sokat Mike Hernandezt, mint annak idején. Szakmai életünk jelentõsen megváltozott azóta, hogy az eredeti kiadás elõszavát írtam. Ha más nem, kevesebbet utazunk, és az útjaink ritkábban keresztezik egymást, mint korábban. Ha megbocsátod nekem, akkor hozzátenném azt is, hogy az egész világ megváltozott az elsõ kiadás óta. Megváltoztak a fejlesztések is, amelyekben részt veszek, amióta teljes szívvel és minden idõmmel belevágtam ebbe a Microsoft .NET dologba. Az egyetlen dolog, ami nem változott, hogy folyamatosan szükség van jól megtervezett adatbázisokra. Ha kifinomult alkalmazásainkat rosszul megtervezett adatokkal használjuk, az most is legalább annyi fejfájást okoz majd nekünk, mint az elsõ kiadás megjelenésekor, sõt talán még annál is többet. Függetlenül attól, hogy csak most kezdünk el adatbázisokkal foglalkozni, vagy már régóta ûzzük a szakmát; függetlenül attól, hogy olvastuk-e Mike elõzõ könyvét vagy sem; függetlenül attól, hogy inkább másokra bízzuk adatbázisaink tervezését, vagy mi magunk szeretjük elkészíteni azokat: ez a könyv mindenképpen nekünk szól. Mike nemcsak érthetõen, hanem egyenesen élvezetesen magyaráz, és ezzel újra és újra bámulatba ejt. – Ken Getz 2002. október 10.
Az elsõ kiadásból… Talán elgondolkoztunk azon, szüksége van-e a világnak egy újabb, adatbázis-tervezésrõl szóló könyvre. Amikor Mike Hernandez elõször beszélt velem errõl a könyvrõl, én is elgondolkoztam ezen. Ha azonban belelapoztunk egy kicsit a könyvbe, mielõtt az elõszónál kötöttünk ki, akkor már tisztában vagyunk azzal, hogy valóban szükség van erre a könyvre. Az üzletek polcain bizonyára rengeteg olyan könyvet találunk, amelyek az elméletekkel és az adatbázis-tervezés tudománya mögött álló elvekkel foglalkoznak, nem sok olyat láthatunk azonban (ha egyáltalán találunk), amely Mike nézõpontjából közelít a témához. Mike céljául tûzte ki, hogy a könyv tisztán a matematika szilárd alapjaira épüljön, az elméleti lehetõségek boncolgatása helyett azonban inkább a gyakorlati felhasználás felé fordult. Nem számít, milyen adatbázis-csomagot használunk, a könyvben leírt elveket mindenképpen alkalmazhatjuk adatbázis-tervezési projektjeinkben. Rögtön tudtam, hogy ez a könyv nekem való, amikor a 6. fejezet elejére lapoztam, ahol a következõ javaslatot találtam: „Ne próbáljuk új adatbázisunkat egy meglévõ adatbázis-szerkezet alapján felépíteni.” Ha valaki elmondta volna ezt nekem évekkel ezelõtt, amikor adatbázis-fejlesztõként kezdtem dolgozni, rengeteg idõt takaríthatott volna meg nekem. Pontosan ez itt a lényeg: Mike
AT00.qxd
xii
3/10/2004
9:46 PM
Page xii
Adatbázis-tervezés sok-sok évet töltött azzal, hogy adatbázisokat tervezett az ügyfelek számára; rengeteg idõt töltött gondolkodással, olvasással és az adatbázis-alkalmazások elkészítéséhez alkalmazható módszerek tanulmányozásával; összegyûjtött tudását most papírra vetette, és átadja nekünk. A könyv csupa hasznos dolgot tartalmaz, melyeket könnyen érthetõ példák egészítenek ki. Nem arról van szó, hogy az adatbázisok megfelelõ elkészítéséhez szükséges lényegi adatok kimaradtak; errõl természetesen szó sincs. A könyv azonban az igazi fejlesztõket célozza meg, nem pedig az elméleti szakembereket. Sokat beszélgettem Mike-kal adatbázis-tervezésrõl. Egy kávé mellett, tárgyalásokon, oktatóanyagok összeállítása közben; Mike mindig szenvedélyesen beszélt a témáról. Ahogyan az operációs rendszer tervezõje keresi a tökéletes, elegáns algoritmust, úgy Mike a tervezési feladat legjobb megoldását kutatja, és azt, hogyan magyarázhatja el azt a legérthetõbben mások számára. A legnagyobb részét annak, amit az adatbázisokról tudok, Mike-tól tanultam, és biztos vagyok benne, hogy van még mit tanulnom ebbõl a könyvbõl is. Az Olvasó, miután végigolvassa a tömör, részletes bemutatását mindannak, amit az adatbázisok készítésérõl tudnunk kell, minden bizonnyal ugyanezt érzi majd. – Ken Getz MCW Technologies
[email protected]
AT00.qxd
3/10/2004
9:46 PM
Page xiii
Bevezetés Az egyszerû fõzést nem lehet egyszerû szakácsokra bízni. – Countess Morphy A múltban az adatbázisok tervezése az informatikai szakemberek és a hivatásos adatbázisfejlesztõk feladata volt. Ezek az emberek általában matematikai, számítástechnikai vagy rendszertervezõi háttérrel rendelkeztek, és többnyire nagygépes adatbázisrendszerekkel dolgoztak. Sokan közülük tapasztalt programozók voltak, akik számos, több ezer sorból álló adatbázis-alkalmazás fejlesztését tudhatták maguk mögött. (Ezek az emberek munkájuk természetébõl és fontosságából adódóan rendszerint igen túlterheltek voltak.) Akkoriban az adatbázisok tervezése szilárd oktatási hátteret igényelt, mivel e rendszerek nagy részét egy teljes vállalat használta. Még abban az esetben is, ha csak egy részleg vagy egy kisebb cég számára kellett adatbázist tervezni, a tervezõk felkészítése sokrétû oktatást igényelt, mivel meglehetõsen összetett programozási nyelveket és adatbázis-alkalmazásokat kellett használniuk. Az eszközök fejlõdésével azonban ezek a követelmények megváltoztak. Az 1980-as évek közepétõl kezdve sok szoftvergyártó foglalkozott asztali gépeken futtatható adatbázisprogramok fejlesztésével. Ezen eszközök programozása sokkal egyszerûbb volt, mint nagygépeken futó társaikéi. Megjelentek azok a programok is, amelyek lehetõvé tették, hogy emberek egy csoportja központosított adatokat osszon meg egymással a helyi hálózat ügyfél–kiszolgáló rendszerein, nagyterületû hálózatokon vagy akár az Interneten keresztül. A cégek és a különféle szervezetek nem függtek többé a nagygépes adatbázisoktól, adatigényeik kielégítéséhez pedig nem volt szükség központi IT részlegekre. Az évek során a gyártók sok új szolgáltatással egészítették ki eszközeiket, így egyre hatékonyabb és egyre rugalmasabb adatbázis-alkalmazások fejlõdtek ki. Lényegesen leegyszerûsödött a programok használata is, ami egyre inkább arra ösztönözte az embereket, hogy maguk tervezzék meg adatbázisaikat. A mai adatbázis-alkalmazások hihetetlen mértékben leegyszerûsítik a hatékony adatbázis-szerkezetek és a hozzájuk kapcsolódó felhasználói felületek létrehozásának folyamatát. A legtöbb program mintaadatbázisokat tartalmaz, amelyeket lemásolhatunk, és saját igényeinkre szabhatunk. Bár elsõ ránézésre igen elõnyösnek tûnik, hogy saját adatbázisainkat ezek alapján készítsük el, érdemes megállni és elgondolkozni egy kicsit. Miért? Azért, mert ezzel a módszerrel könnyen elõfordulhat, hogy a létrejövõ adatbázisterv nem lesz elég hatékony vagy éppen nem lesz teljes, és végül komoly gondokba ütközhetünk az addig megbízhatónak hitt adatbázisunkban. Ez természetesen felveti a kérdést: milyen gondokról van szó?
AT00.qxd
xiv
3/10/2004
9:46 PM
Page xiv
Adatbázis-tervezés A legtöbb probléma, amellyel egy adatbázisban találkozhatunk, két csoportra osztható: alkalmazásbeli problémák és adatproblémák. Alkalmazásbeli probléma lehet például az adatbevitel nehézkessége, a menük átláthatatlansága, a párbeszédablakok zavarossága és a fárasztó munkafolyamatok szükségessége. Ezek a gondok általában akkor jönnek elõ, ha a tervezõ nem elég tapasztalt, nincs tisztában a jó alkalmazás-tervezés módszereivel, vagy nem ismeri eléggé az adatbázis megvalósításához használt programot. Az ilyen jellegû problémák igen gyakoriak, és foglalkoznunk kell velük, ebben a könyvben azonban nem térünk ki erre a témára. Megjegyzés
Az alkalmazásbeli problémák egyik megoldása lehet, ha beszerzünk néhány, a fejlesztéshez használt programról írt tankönyvet. Ezekbõl a könyvekbõl sokat megtanulhatunk az alkalmazás-tervezésrõl, a haladó programozási megoldásokról és az alkalmazások jobbá tételéhez kapcsolódó tippekrõl és trükkökrõl. Az új ismeretek birtokában kijavíthatjuk adatbázis-alkalmazásunk hibáit. Az adatokkal kapcsolatos problémák között megemlíthetjük a hiányzó, a helytelen, az egymáshoz nem illeszkedõ és a pontatlan adatokat. Az ilyen típusú gondok hátterében általában a nem megfelelõ adatbázis-tervezés áll. Az adatbázis nem fogja tudni kielégíteni a szervezet igényeit, ha nem megfelelõ a szerkezete. Bár a rossz tervezésért általában az adatbázis-tervezés elveit nem ismerõ adatbázis-fejlesztõ okolható, nem szükségszerû, hogy ez rossz fényt vessen a fejlesztõre. Sok olyan fejlesztõ van, még a legtapasztaltabbak között is, akik soha nem tanultak adatbázis-tervezést. Sokan még azt sem tudják, hogy különféle tervezési módszerek léteznek. A könyvben az adatokhoz kapcsolódó problémákkal és a rossz tervezéssel foglalkozunk.
A második kiadás újdonságai Az új kiadásban igyekeztünk javítani az anyag olvasmányosságát, frissíteni és kibõvíteni a meglévõ témákat, új tartalommal egészíteni ki azt és növelni a könyv oktatási értékét. A második kiadásban a következõ változásokkal találkozhatunk: • A legtöbb szöveget átírtuk, és olvashatóbbá tettük. • Az ábrák és az illusztrációk nagy részét letisztáztuk. • Ahogy a szöveg változása vagy az új szövegrészek megjelenése megkívánta, új ábrákat és illusztrációkat helyeztünk el az anyagban. • Az 1. fejezetben a relációs adatbázis-kezelõ rendszerekrõl és a relációs modellrõl szóló részt kiegészítettük a jelenlegi fejlesztésekrõl és az iparág általános haladási irányáról szóló részekkel. • A könyvben bemutatott tervezési módszerek hátterérõl a 2. fejezetben beszélünk. • A 3. fejezetben nagyobb részletességgel beszélünk a null értékekrõl és a sok–sok kapcsolatokról. • A 6. fejezetben weboldal alapú példákat találunk.
AT00.qxd
3/10/2004
9:46 PM
Page xv
xv
• A 7. fejezetben kibõvítettük a többértékû mezõkrõl és a részhalmaz táblákról szóló részeket. • A 8. fejezetben nagyobb részletességgel beszélünk az elsõdleges kulcsokról. • Frissítettük és átterveztük a mezõ-meghatározások táblázatát, hogy olvashatóbb legyen. • A 9. fejezetben kibõvítettük az adattípus mezõjellemzõt, hogy betekintést nyerjünk az SQL adattípusaiba. • A 10. fejezetben szót ejtünk az önhivatkozó kapcsolatokról és az Elutasítás, Null beállítása és Alapértelmezés beállítása törlési szabályokról. • Az 1–12. fejezetek végén ismétlõ kérdéseket helyeztünk el; a válaszokat az A függelékben találjuk meg. • A B függelékben elhelyeztünk egy folyamatábrát, amely gyors áttekintést ad a tervezési folyamatról. • A különbözõ tervezési irányelveket a C függelékben foglaltuk össze. • A függelékben található szószedet a könyvben használt kifejezések gyorsabb kikeresését segíti. • A könyvhöz mellékelt CD-n PDF formátumú fájlokat találunk. Ezek a fájlok a B–F függelékek anyagát tartalmazzák.
Kiknek ajánljuk ezt a könyvet? A könyv elolvasásához nincs szükség semmiféle adatbázis-tervezési háttérre. Az Olvasó minden bizonnyal azért tartja a kezében ezt a könyvet, mert szeretné elsajátítani a jó adatbázis-tervezés fogásait. Ha most kezdünk el adatbázis-kezeléssel foglalkozni, és saját adatbázisaink kifejlesztésén gondolkozunk, akkor nagy hasznát vesszük majd a könyvnek. Jobb, ha elõször megtanuljuk, hogyan kell megfelelõ adatbázist készíteni, mintha próbálgatással jönnénk rá erre. Az utóbbi megoldás sokkal több idõbe kerül. Ha azok közé az emberek közé tartozunk, akik már jó ideje dolgoznak adatbázisokkal, és készen állunk arra, hogy új adatbázisokat hozzunk létre cégünk számára, akkor is érdemes elolvasni ezt a könyvet. Valószínûleg van valami elképzelésünk arról, milyen egy jó adatbázis, de bizonytalanok vagyunk azzal kapcsolatban, hogyan lehetne megvalósítani. Talán készítettünk már egy pár adatbázist néhány egyszerû alapelv betartásával, a végén azonban mindig oda lyukadunk ki, hogy rengeteg kódot kell írnunk ahhoz, hogy az adatbázis megfelelõen mûködjön. Ebben az esetben is hasznos lesz a könyv elolvasása. Jó lenne elolvasni ezt a könyvet azoknak is, akik már rendelkeznek némi tervezési háttérrel. Talán tanultunk adatbázis-tervezést az egyetemen, de nem biztos, hogy minden részletre emlékszünk még; az is lehet, hogy nem értettük tökéletesen a tervezési folyamat minden részét. A problémás kérdések bizonyosan letisztulnak majd, ha megértjük és a magunkévá tesszük a könyvben bemutatott tervezési folyamatot.
AT00.qxd
xvi
3/10/2004
9:46 PM
Page xvi
Adatbázis-tervezés Ez a könyv hasznos olvasmány a tapasztalt adatbázis-fejlesztõk és programozók számára. Bár az itt bemutatott tervezési folyamat sok részlete ismerõs lesz, valószínûleg találunk néhány olyan elemet is, amelyekkel eddig még nem találkoztunk. Elõfordulhat az is, hogy a könyv anyagának áttekintése után új ötleteink támadnak az adatbázis-tervezéssel kapcsolatban, mivel a korábban is ismert tervezési lépéseket más nézõpontból vizsgálhatjuk meg. Végül, a könyv mindenki számára nagyszerû emlékezetfrissítõ. Megjegyzés
Azoknak, akik égetõ vágyat éreznek arra, hogy belevessék magukat az adatbázisok világába (elsajátítsák az adatbázis-tervezés, -elemzés, -megvalósítás, és felügyelet, illetve az alkalmazásfejlesztés stb. részleteit), célszerû elolvasni az ajánlott irodalomban felsorolt könyvek nagy részét. Bár a fenti témákat ez a könyv nem érinti, jó kiindulási pont lehet ahhoz, hogy elinduljunk az adatbázis-szakértõk világába.
A könyv célja Az adatbázis-fejlesztés folyamatát három szakaszra bonthatjuk: 1. Logikai tervezés. Az elsõ szakaszhoz tartozik a táblák és a mezõk meghatározása, az elsõdleges és az idegen kulcsok kiválasztása, a táblák közötti kapcsolatok leírása és az adatépség különbözõ szintjeinek megvalósítása. 2. Fizikai megvalósítás. A második szakasz a táblák létrehozását, a kulcsmezõk és a táblák közötti kapcsolatok kialakítását és az adatépség különbözõ szintjeinek megvalósításához szükséges eszközök használatát jelenti. 3. Alkalmazásfejlesztés. A harmadik szakaszban egy alkalmazást hozunk létre, amely hozzáférést biztosít a felhasználó (vagy felhasználók) számára az adatbázisban tárolt adatokhoz. Az alkalmazásfejlesztési szakaszt különféle folyamatokra bonthatjuk. Ilyen többek között a végfelhasználói feladatok azonosítása, a jelentésekben feltüntetni kívánt adatok összegyûjtése és az alkalmazás bejárásához szükséges menürendszer létrehozása. Elõször mindig a logikai tervet kell elkészítenünk, lehetõleg minél teljesebben. Miután kialakítottuk a szerkezetet, bármilyen adatbázis-szoftverrel létrehozhatjuk azt. A megvalósítás szakaszába lépve elképzelhetõ, hogy a választott adatbázisprogram tulajdonságaiból kifolyólag módosítanunk kell az adatbázis szerkezetét. Még az is lehet, hogy az adatfeldolgozás teljesítményének növelése miatt döntünk az adatbázis-szerkezet megváltoztatása mellett. A logikai terv elkészítése során tudatosan, módszeresen és megalapozott döntésektõl vezérelve alakítjuk ki az adatbázis szerkezetét. Ennek eredményeképpen kicsire csökken annak a valószínûsége, hogy a fizikai megvalósítás és az alkalmazásfejlesztés szakaszában kell majd megváltoztatnunk azt. Ez a könyv a teljes fejlesztési folyamatból kizárólag a logikai tervezéssel foglalkozik. A könyv fõ célja, hogy az adatbázisokhoz kapcsolódó könyvek nagy részénél megszokott hagyományos, nehezen érthetõ módszerek nélkül vezesse be az Olvasót a relációs adat-
AT00.qxd
3/10/2004
9:46 PM
Page xvii
xvii
bázisok tervezésének folyamatába. Ezt elsõsorban azzal próbáljuk elérni, hogy a tervezési folyamatról könnyen emészthetõ módon beszélünk. Ezen kívül egyszerû adatmodellezési megoldást választottunk, és igyekeztünk a teljes folyamatot felesleges technikai szakkifejezések nélkül bemutatni. Számos olyan adatbázis-tervezési könyv van a piacon, amely egy meghatározott eszköz használatán keresztül mutatja be az adatbázis-készítés fortélyait, sõt olyan könyvek is léteznek, amelyek összemossák egymással a tervezés és a megvalósítás fázisait. (Én magam soha nem értettem egyet a kettõ összekapcsolásával. Mindig is úgy tartottam, hogy a logikai tervezésnek és a megvalósításnak élesen el kell különülnie egymástól, mivel csak így biztosítható a megfelelõ hatékonyság.) Az ilyen könyvek legnagyobb hátránya, hogy nehéz kinyerni belõlük a hasznos adatokat azok számára, akik nem szeretnének a kérdéses adatbázis-alkalmazással dolgozni. Ezért határoztam el, hogy olyan könyvet írok, amely szigorúan az adatbázisok logikai megtervezésével foglalkozik. Megjegyzés
Megvalósítási, SQL- és alkalmazás-programozási kérdésekkel ebben a könyvben nem foglalkozunk, számos hasznos kiadványt ajánlhatunk azonban ezekhez a témákhoz. A könyvek listájáért keressük fel a http://www.ForMereMortals.com honlapot. Szándékaink szerint ez a könyv olvashatóbb lesz, mint a témában írt egyéb kiadványok. A piacon fellelhetõ adatbázis-tervezéssel foglalkozó könyvek magas szakmai képzettséget feltételeznek, ezért nehéz elsajátítani az anyagukat. Az hiszem, e könyvek nagy része nehéz olvasmány azok számára, akik nem informatikai, adatbázis-elméleti vagy adatbázisprogramozási szakemberek. A könyvben bemutatandó tervezési alapelvek könnyen érthetõk és megjegyezhetõk, a példák pedig elég mindennaposak és általánosak ahhoz, hogy széles körben alkalmazhatók legyenek. A legtöbb ember, akikkel országjárásom során összefutottam, azt mondta nekem, hogy szeretné megtanulni, milyen a jó adatbázis-szerkezet, de anélkül, hogy át kellene rágnia magát a matematikai elméleteken. Voltak, akik nem az adatbázis megvalósításától féltek, hanem a megfelelõ adatszerkezetek kiválasztásától és az adatok épségének biztosításától. A könyv segít megismerni a hatékony adatbázis-szerkezeteket, segít megvalósítani adatbázisainkban a többszintû adatépséget, és kiderül belõle az is, hogyan nyerhetünk ki adatokat az egymással összekapcsolt táblákból. Ne aggódjunk: mindez nem annyira bonyolult, mint amilyennek elsõre látszik. Néhány kulcsfontosságú fogalom és a leggyakoribb fogások elsajátítása után az Olvasó is képes lesz ezekre. Megtanuljuk azt is, hogyan elemezhetjük és tehetjük jobbá meglévõ adatbázisainkat, hogyan határozhatjuk meg az adatokkal kapcsolatos követelményeket, és hogyan valósíthatjuk meg a mûködési szabályokat. Fontos témák ezek, mivel sokszor régi adatbázisokra kell majd alkalmaznunk a könyvben tanultakat. Nem kevésbé fontosak azonban ezek a kérdések akkor sem, amikor nulláról kell felépítenünk egy adatbázist.
AT00.qxd
3/10/2004
xviii
9:46 PM
Page xviii
Adatbázis-tervezés A könyv elolvasása után birtokunkban lesz az a tudás és azok az eszközök, amelyekre egy jó relációs adatbázis-szerkezet kialakításához szükségünk lehet. Bízom benne, hogy bemutatott folyamat a legtöbb fejlesztõ és a legtöbb adatbázis számára megfelelõ lesz.
Hogyan olvassuk a könyvet? Melegen ajánlom ezt a könyvet mindenki számára a kezdõktõl a haladókig, függetlenül attól, milyen szinten foglalkoztak eddig adatbázis-tervezéssel. Mivel összefüggésükben olvashatunk a különbözõ lépésekrõl, nem fordulhat elõ, hogy egyszerre csak elveszítjük a fonalat. Célszerû a teljes folyamatot áttekinteni, mielõtt elmerülnénk a részletekben. Ha azért olvassuk ezt a könyvet, hogy felfrissítsük tervezési ismereteinket, akkor elég, ha azokra a részekre összpontosítunk, amelyek valóban érdekelnek bennünket. A lehetõségekhez mérten igyekeztem úgy megírni az egyes fejezeteket, hogy megálljanak a saját lábukon; ennek ellenére érdemes minden fejezetbe belelapozni, hogy biztosak lehessünk abban, hogy egyetlen új ötletrõl sem maradunk le.
A könyv felépítése Tekintsük át röviden, mit találunk az egyes fejezetekben. I. rész: Relációs adatbázis-tervezés Ebben a részben bevezetést kapunk az adatbázisok, illetve az adatbázis-tervezés világába, és megismerünk néhány olyan fogalmat, amelyekre szükségünk lesz ahhoz, hogy megérthessük a könyvben bemutatott tervezési folyamatot. 1. fejezet. A relációs adatbázis címû fejezetben áttekintjük az adatbázisok típusait, a gyakori adatbázis-modelleket és a relációs adatbázisok rövid történetét. 2. fejezet. A Tervezési célok címû fejezetben megnézzük, miért olyan fontos a tervezés, kitûzzük a célokat, megismerkedünk a jó tervezés elõnyeivel és rövid összefoglalást kapunk a normalizálásról és a normálformákról. 3. fejezet. A Fogalmak címû fejezetben megtaláljuk azokat a kifejezéseket, amelyekre szükségünk lesz ahhoz, hogy megértsük és megtanuljuk a könyvben bemutatott tervezési módszereket. II. rész: A tervezési folyamat A II. részben részletesen foglalkozunk az adatbázis-tervezés folyamatának szakaszaival, többek között a táblaszerkezetek kialakításával, az elsõdleges kulcsok létrehozásával, a mezõ-meghatározások megadásával, a táblák közötti kapcsolatok felépítésével, a nézettáblák elkészítésével és az adatépség különbözõ szintjeinek létrehozásával.
AT00.qxd
3/10/2004
9:46 PM
Page xix
xix
4. fejezet. A Fogalmi áttekintés áttekintést ad a tervezési folyamatról, így láthatjuk, hogyan illeszkednek egymáshoz annak részei. 5. fejezet. A tervezési folyamat kezdete címû fejezetbõl kiderül, hogyan fogalmazhatjuk meg az adatbázis céljait meghatározó leírást (küldetési leírás) és az adatbázis részfeladatait (küldetési célok). A tervezési folyamat elején kizárólag erre a két dologra kell összpontosítanunk. 6. fejezet. Az Adatbázis-elemzés címû fejezet a meglévõ adatbázishoz kapcsolódó kérdéseket boncolgatja. Megismerjük az adatbázis elemzését indokoló tényezõket, megnézzük az érvényben lévõ adatgyûjtési és megjelenítési megoldásokat, beszélünk a felhasználók és a vezetõség kikérdezésérõl és a elõzetes mezõlista kialakításáról. 7. fejezet. A táblaszerkezetek kialakítása olyan témákat takar, mint az adatbázis témájának meghatározása, a mezõk elhelyezése a táblákban és a táblaszerkezetek finomítása. 8. fejezet. A Kulcsok címû fejezetben megismerkedünk a kulcs fogalmával és a tervezési folyamatban betöltött jelentõségével. Megtudhatjuk, hogyan készíthetünk kulcsjelölteket és elsõdleges kulcsokat a táblákhoz. 9.fejezet. A Mezõ-meghatározások olyan témával foglalkozik, amellyel az adatbázis-fejlesztõk általában nem szeretnek. A mezõ-meghatározások azon kívül, hogy jelzik, hogyan jön létre a mezõ, megadják a mezõben tárolt értékek típusát is. A fejezetben szó lesz a mezõ-meghatározások fontosságáról, a meghatározás jellemzõinek típusairól, és a meghatározások elkészítésének mikéntjérõl. 10. fejezet. A Táblakapcsolatok címû fejezetben a táblák közötti kapcsolatok fontosságával, a kapcsolatok típusaival, létrehozásával és jellemzõivel foglalkozunk. 11. fejezet. A Mûködési szabályok címû fejezet a mûködési szabályok típusaival, azok meghatározásával és az érvényesítõ táblák használatával foglalkozik. A mûködési szabályok nagyon fontosak az adatbázisban, mivel jól elkülönülõ adatépségi szintet biztosítanak. 12. fejezet. A Nézettáblák címû fejezetben megismerhetjük a nézettábla fogalmát, jelentõségét, a nézettáblák típusait és létrehozásuk módját. 13. fejezet. Az adatépség áttekintése az elõzõ fejezetekben megismert adatépségi szinteket veszi számba. A fejezetbõl megtudhatjuk, hogy az adatbázis végleges tervének átvizsgálásakor minél teljesebb adatépségre kell törekednünk.
AT00.qxd
xx
3/10/2004
9:46 PM
Page xx
Adatbázis-tervezés III. rész: Egyéb adatbázis-tervezési kérdések Ebben a részben olyan témákról lesz szó, mint a rossz tervezés megelõzése és a tervezési folyamatban megfogalmazott szabályok megkerülése. 14. fejezet. A Rossz tervezés – mit ne csináljunk? címû fejezet az elkerülendõ tervezési megoldásokat veszi számba, többek között az úgynevezett lapos fájl tervezést és a táblázatos módszert. 15. fejezet. A szabályok megkerülése vagy megszegése azokat a ritka eseteket gyûjti össze, amelyekben kénytelenek leszünk eltérni a tervezési folyamatban lefektetett alapelvektõl. A fejezetbõl kiderül, mikor hághatjuk át a szabályokat és az is, hogy hogyan. IV. rész: Függelékek A függelék. A Válaszok az ismétlõ kérdésekre függelék az 1–12. fejezetek végén található kérdések válaszait gyûjti össze. B függelék. Az adatbázis-tervezés folyamatábrája egy ábrát tartalmaz, amely a teljes adatbázis-tervezési folyamatot felöleli. C függelék. A Tervezési irányelvek egy jól áttekinthetõ hivatkozási anyag a könyvben megjelenõ tervezési irányelvekhez. D függelék. A Dokumentációs ûrlapok címû függelékben kitöltetlen mezõ-meghatározásokat, mûködésiszabály-leírásokat és nézetleírásokat találunk, amelyeket lemásolva felhasználhatunk. E függelék. A Szimbólumok az adatbázis-tervezésben gyors áttekintést ad a könyvben használt különféle szimbólumokról. F függelék. A Mintatervek címû függelék minta adatbázisterveket tartalmaz, amelyeket saját adatbázisaink alapjául is felhasználhatunk. G függelék. Az Ajánlott irodalom egy könyvek listája, amelyet érdemes elolvasni, amennyiben mélyebben érdeklõdünk a különféle adatbázis-megoldások iránt. A Szószedet a könyvben használt szavak és kifejezések meghatározásait gyûjti össze.
Fontos: ezt a részt mindenképpen olvassuk el!
AT00.qxd
3/10/2004
9:46 PM
Page xxi
xxi
A könyvben szereplõ példák és megoldások Látni fogjuk, hogy a könyv számos különféle példát tartalmaz. Igyekeztünk általános, ugyanakkor jól használható példákat készíteni. Ennek ellenére észrevesszük majd, hogy számos példa túlságosan is le van egyszerûsítve, nem teljes, sõt idõnként még helytelen is. Akár hiszi az Olvasó, akár nem, ezeket pontosan ilyenre szerettem volna elkészíteni. A hibás példák különféle fogalmak és megoldások bemutatására szolgálnak. E példák nélkül nem láthatnánk, hogyan használhatjuk ezeket a megoldásokat a valóságban, és nem láthatnánk azt sem, milyen eredményre számíthatunk a használatuk során. Egyes példákat azért egyszerûsítettem le, hogy az Olvasó magára a megoldásra vagy az alapelvre összpontosíthasson, és ne vonja el a figyelmét a példa. Sokféleképpen megvalósíthatunk például egy megrendeléseket nyilvántartó adatbázist, a könyvben használt példa szerkezete azonban nagyon egyszerû, mivel a cél a tervezési folyamat bemutatása, nem pedig egy kidolgozott adatbázis-rendszer elkészítése volt. A következõt szeretném tehát kihangsúlyozni: mindig az alapelvekre és a megoldásokra összpontosítsunk, ne pedig az azok bemutatásához használt példákra. Új megközelítés a tanuláshoz A következõkben egy olyan megközelítést mutatok be, amely az adatbázis-óráimon nagyon hasznosnak bizonyult a tervezési folyamat elsajátításához. Gondoljunk a tervezési folyamat során használt megoldásokra mint szerszámokra; minden szerszám (vagy megoldás) egy meghatározott célt szolgál. Ha egyszer megtanultunk használni egy szerszámot, akkor késõbb számos különféle helyzetben alkalmazhatjuk azt. Ennek oka az, hogy a szerszámot mindig ugyanúgy kell használni. Vegyük például egy állítható csavarkulcsot. Ezt általában arra használjuk, hogy meghúzzunk vagy meglazítsunk vele egy csavart. A kulcs nyílásának méretét a fejénél elhelyezett csavarral állíthatjuk be. Miután ezzel tisztában vagyunk, próbáljuk ki az eszközt néhány csavarral. Nézzük meg a kerti szék lábait, egy motor szelepfedelét, a kültéri hûtõegység oldalát vagy a kapu sarokvasait. Észrevettük, hogy bárhol is található a csavar, mi a kulcs segítségével mindig ugyanúgy meg tudjuk húzni, és ki tudjuk lazítani? Az adatbázisok tervezéséhez használt eszközök pontosan ugyanígy mûködnek. Ha egyszer megtanuljuk az eszköz használatát, akkor ugyanúgy használjuk majd, függetlenül attól, milyen körülmények között kell dolgoznunk. Nézzünk például egy eszközt, amely egy mezõ értékének felbontására szolgál. Tegyük fel, hogy a Vásárlók tábla tartalmaz egy Cím nevû mezõt, amely az adott vásárló utcáját, városát, államát és irányítószámát foglalja össze. Az ilyen mezõk használata meglehetõsen körülményes, mivel több adatelemet tartalmaznak; a problémák azonnal jelentkeznek, ha megpróbáljuk a tábla tartalmát például az irányítószámok szerint rendezni.
AT00.qxd
xxii
3/10/2004
9:46 PM
Page xxii
Adatbázis-tervezés A helyzetet úgy oldhatjuk meg, hogy a Cím mezõt kisebb mezõkre bontjuk. Ehhez azonosítanunk kell a mezõt felépítõ értékeket, majd saját mezõt kell készítenünk azoknak. Ennyi az egész. A bemutatott folyamat olyan „eszköz”, amelyet bármelyik, több adattagból álló mezõnél használhatunk. A 1. ábrán a felbontás eredményét láthatjuk. Jelenlegi mezõnév
Mintaérték
Új mezõnevek
Cím
7402 Kingman Dr., Seattle, WA 98012
Utca, Város, Állam, Irányítószám
Telefon
(206) 555-5555
Körzetszám, Telefonszám
Név
Michael J. Hernandez
Vezetéknév, Középsõ kezdõbetû, Utónév
Alkalmazott kód
ITDEV0516
Osztály, Kategória, Azonosító
1. ábra Több adattagból álló mezõk felbontása.
Megjegyzés
A mezõértékek felbontásával részletesebben a 7. fejezetben foglalkozunk.
A könyvben bemutatandó megoldásokat („eszközöket”) ugyanígy használhatjuk. Ezekkel az eszközökkel jó adatbázis-szerkezeteket alakíthatunk ki, függetlenül attól, milyen típusú adatbázisról van szó. Ne felejtsük el a következõt: Mindig az alapelvekre és a megoldásokra összpontosítsunk, ne pedig az azok bemutatásához használt példákra.
AT00.qxd
3/10/2004
9:46 PM
Page xxiii
Ajánlás a második kiadáshoz „Ez a könyv érthetõ és kezelhetõ részekre bontja az adatbázis-tervezés sokszor rémisztõ folyamatát. Mike egyszerûen, ugyanakkor teljesen szakszerûen közelít a támához, a könyv ezért minden kezdõ adatbázis-tervezõnek ajánlható.” – Sandra Barker, elõadó, University of South Australia, Ausztrália „Az adatbázisok az informatikai rendszerekben és az üzleti életében egyaránt fontos szerepet töltenek be. Mike Hernandez olvasmányos módon vezet be bennünket az adatbázisok bonyolult és sokszor zavaros világába. Ha az Olvasó adatbázisok tervezésével foglalkozik, a könyv segítségével megismerheti a tervezés tipikus buktatóit, és megtudhatja, mit kell tennie. Ha adatbázist használó termékekkel dolgozunk, akkor a könyvbõl megtudhatjuk, mit csinálnak a gyártók, így talán jobban megbecsüljük majd termékeiket.” – Michael Blaha, tanácsadó és oktató, A Manager’s Guide to Database Technology szerzõje „Ha valaki azt mondaná nekem, hogy Mike Hernandez javítani tudott könyvének elsõ kiadásán, egyszerûen nem hinném el, pedig valóban így van. A második kiadásban sokkal több, a valós életbõl származó példát és részletes magyarázatot találunk, a mellékelt CD-ROM pedig adatbázis-tervezõ eszközöket is tartalmaz. Kötelezõ olvasmány ez mindenki számára, aki csak egy kicsit is érdeklõdik a relációs adatbázisok tervezése iránt. A könyv egyaránt hasznos a relációs adatbázisokkal csak elvétve foglalkozó programozók és az igazi veteránok számára. Egy szóval, ha jól szeretnénk csinálni, amit csinálunk, olvassuk el ezt a könyvet!” – Matt Gree, folyamatirányítási fejlesztõ, The Dow Chemical Company „Mike az adatbázis-tervezés lépéseinek megismertetése során kizárólag a józan észre támaszkodik, közben pedig nem sérti meg a jó relációs adatbázis-tervezés szabályait. Mike könyvét a kezdõ adatbázis-tervezõ osztályomban használom, és bátran ajánlom mindenkinek, akit érdekel az adatbázis-tervezés és szeretne megtanulni SQL lekérdezéseket írni.” – Michelle Poolet, elnök, MVDS, Inc. „Ha kifinomult alkalmazásainkat rosszul megtervezett adatbázisokkal használjuk, az legalább annyi fejfájást okoz majd nekünk most, mint az elsõ kiadás megjelenésekor, sõt talán még annál is többet. Függetlenül attól, hogy csak most kezdünk el adatbázisokkal foglalkozni, vagy már régóta ûzzük a szakmát; függetlenül attól, hogy olvastuk-e Mike elõzõ könyvét vagy sem; függetlenül attól, hogy inkább másokra bízzuk adatbázisaink tervezé-
AT00.qxd
3/10/2004
xxiv
9:46 PM
Page xxiv
Adatbázis-tervezés sét, vagy mi magunk szeretjük elkészíteni azokat: ez a könyv mindenképpen nekünk szól. Mike nemcsak érthetõen, hanem egyenesen élvezetesen magyaráz, és ezzel újra és újra bámulatba ejt.” – Ken Getz elõszavából, MCW Technologies, az ASP.NET Developer’s JumpStart társszerzõje „Mike Hernandez könyvének elsõ kiadása egyike volt azoknak a könyveknek, amelyek túlélték irodám költöztetését. A második kiadás számtalan irányban egészíti ki az eredetit. Azon kívül, hogy nagyszerû, könnyen követhetõ olvasmány, figyelemre méltó gondolatokat tartalmaz egy igen összetett témáról. Kötelezõ olvasmány mindenki számára, akit érdekel az adatbázisok tervezése.” – Malcolm C. Rubel, Performance Dynamics Associates „Mike kitûnõ kalauza a relációs adatbázisok-tervezéséhez kiérdemelte a második kiadást. A Microsoft Access, illetve egyéb asztali adatbázisok fejlesztõi számára, és az ügyfél–kiszolgáló rendszerek tervezõi számára egyaránt nélkülözhetetlen ez a könyv.” – Roger Jennings, a Special Edition Using Access 2002 szerzõje „Nincs biztos recept. Az adatbázis-megoldások hihetetlen mértékû fejlõdésen mentek keresztül, és a legújabb típusú adatbázis-kiszolgálók sokkal gyorsabban dolgoznak, mint ahogyan azt bárki is gondolta volna hat évvel ezelõtt, az újítások egyike sem segíthet azonban a rosszul megtervezett adatbázisokon. Az Adatbázis-tervezés második kiadása az elsõ számú segítség adatbázisaink megtervezéséhez.” – Matt Nunn, Termékmenedzser, SQL Server, Microsoft Corporation „Amikor a bátyám fejlesztõként kezdett dolgozni, odaadtam neki Mike könyvét, hogy segítsen az adatbázisokkal kapcsolatos fogalmak megértésében és az adatbázisokhoz kapcsolódó alkalmazások elkészítésében. Amikor fel kell frissítenem az emlékezetemet a tervezés valamely részletével kapcsolatban, ezt a könyvet veszem le a polcról. Azt hiszem, nincs jobb bizonyíték egy könyv értékére, mint az, ha használják. Ezért õszinte szívvel ajánlom ezt a kiadványt kollégáimnak és diákjaimnak, akiknek nap mint nap szükségük van rá fejlesztési feladataik végrehajtásához.” – Chris Kunicki, vezetõ tanácsadó , OfficeZealot.com „Mike-nak mindig is jó érzéke volt ahhoz, hogy a legösszetettebb témákat darabokra bontsa, majd úgy tálalja azokat, hogy bárki számára érthetõk legyenek. Sikerült az elsõ, véleményem szerint kiváló kiadás tartalmát tovább egyengetnie, tisztogatnia, így végül
AT00.qxd
3/10/2004
9:46 PM
Page xxv
xxv
még jobbá tennie. Ha adatbázis-alkalmazások fejlesztésébe szeretnénk kezdeni, mindenképpen olvassuk el ezt a könyvet. A tapasztalt tervezõk számára is élvezetes, és oktatási anyagként is kiválóan használható.” – John Viescas Elnök, Viescas Consulting, Inc. A Running Microsoft Access 2000 szerzõje és az SQL Queries for Mere Mortals társszerzõje „Függetlenül attól, hogy csak általánosságban szeretnénk többet megtudni a relációs adatbázisokról, azok tervezésérõl és a témához kapcsolódó szakkifejezésekrõl, vagy pedig szeretnénk elsajátítani a legjobb fogásokat, hogy azután saját adatbázisaink megtervezéséhez használjuk azokat, az Adatbázis-tervezés második kiadása nélkülözhetetlen kiadvány, amelyet gyakran forgatunk majd. A relációs adatbázisokhoz kapcsolódó, hosszú évekre visszanyúló tapasztalata birtokában Michael megmutatja, hogyan elemezhetjük és javíthatjuk meglévõ adatbázisainkat; a kulcsok készítése, a táblák összekapcsolása és az adatnézetek létrehozása révén hogyan biztosíthatjuk adataink épségét és az adatokhoz történõ hozzáférés egységességét és hogyan csökkenthetjük az adatbeviteli hibák elõfordulásának valószínûségét. – Paul Cornell Honlapszerkesztõ, MSDN Office Development Center
AT00.qxd
3/10/2004
9:46 PM
Page xxvii
Ajánlás az elsõ kiadáshoz „Elképesztõen friss megközelítés az adatbázis-tervezés kellemetlen feladatához…Ha bármiféle közünk is van adatbázis-termékeket használó alkalmazások készítéséhez, vásároljuk meg ezt a könyvet, és olvassuk el az elsõtõl az utolsó oldalig.” – John Viescas Elnök, Viescas Consulting, Inc. A Running Microsoft Access 2000 szerzõje és az SQL Queries for Mere Mortals társszerzõje „Kötelezõen megszerzendõ könyv mindenkinek, aki új a relációs adatbázisok tervezésének területén…Mike különösen ügyel a részletekre, az interjúkészítés folyamatáról szóló leírás pedig a tapasztalt relációs adatbázis-tervezõk számára is kötelezõ olvasmány.” – Jim Both, vezetõ tanácsadó, James Booth Consulting „Mike nagy szívességet tesz nekünk azzal, hogy ezt az elvont témát logikus, érthetõ és elsajátítható formában tálalja. A könyv elolvasása ajánlott mindenki számára, aki adatbázisokat szeretne tervezni. A kezdõ és a haladó adatbázis-fejlesztõk egyaránt rengeteg hasznos adatot találhatnak benne.” – Malcolm C. Rubel, társszerkesztõ, Databased Advisor és FoxPro Advisor „Az Adatbázis-tervezés a tervezéssel foglalkozni szándékozó és a ténylegesen ezzel foglalkozó olvasók számára egyaránt sok segítséget jelenthet. Michael mindenki számára érthetõ módon mutatja be a logikai adatbázis-tervezés legfontosabb lépéseit; ez teszi a könyvet kiváló forrássá és kellemes olvasmánnyá.” – Nick Evans, társszerkesztõ, PowerBuilder Advisor Magazine „Függetlenül attól, milyen adatbázis-csomagot használunk (lehet, hogy nem is csomagot), a könyvben bemutatott alapelvek érvényesek, és saját tervezési feladatainknál alkalmazhatjuk azokat.” – Ken Getz elõszavából, MCW Technologies, az ASP.NET Developer’s JumpStart társszerzõje
AT00.qxd
3/10/2004
9:46 PM
Page xxix
Bevezetõ a második kiadáshoz Az élet, ahogyan az õsrégi hasonlat is állítja, egy utazás… – Jonathan Raban For Love and Money Úgy vélem, az adatbázis-tervezés tanulása egy folyamat. Egyre jobban megismerem a tervezés bonyolultságát és finom árnyalatait – ahogyan minden bizonnyal az Olvasó is. – Michael J. Hernandez
Adatbázis-tervezés – A relációs adatbázisok alapjairól földi halandóknak A könyv elsõ kiadásának megjelenése óta eltelt hat évben tovább folytattam utamat az adatbázisok ösvényén. Még mélyebbre fúrtam magamat a tervezés rejtelmeibe, és igyekeztem még jobban elsajátítani a jó tervezés filozófiáját. Sokat tanultam a tanítványaimmal és kollégáimmal folytatott beszélgetésekbõl és a könyvem olvasóival folytatott levelezésekbõl. Ennek eredményeképpen sikerült továbbfejlesztenem tervezési módszereimet és felülvizsgálni azok bizonyos lépéseit, így tisztábbak és alaposabbak lettek, mint korábban bármikor. Bár most megpihenek egy rövid idõre (az írás igen kimerítõ szellemi tevékenység tud lenni), tudom, hogy utam nemsokára folytatódik majd. Még rengeteg felfedeznivaló és tanulnivaló vár rám. Úgy gondolom, az adatbázisok tervezése és használata leginkább a hegymászáshoz hasonlít: mindig vannak új és izgalmas kihívások az ember elõtt. Hat év múlva talán újra megoszthatom tapasztalataimat Olvasóimmal.
Köszönetnyilvánítás Bárki bármit mond is, az írás társas tevékenység. Borzasztó hálás vagyok azért, hogy vannak olyan szerkesztõk, kollégák, barátok és családtagok, akik mindig készek segíteni. Ezek azok az emberek, akik folyamatosan bátorítanak, és segítenek abban, hogy az aktuális témára összpontosítson az ember, és õk azok, akiknek a legnagyobb elismeréssel adózom. Elõször is szeretnék köszönetet mondani a szerkesztõmnek, Mary O’Briennek a lehetõségért, hogy ezt az új kiadást megírhattam. Az õ türelme, kedvessége és irányítása vitte elõre ezt a tervet, és segítetett engem a sikeres befejezéshez. Szintén szeretnék köszönetet mondani Mary asszisztenseinek, Alicia Carey-nek, Stacie Parillónak és Brenda Mulligan-nek. Alicia és Stacey hatalmas türelmet tanúsítottak és rendíthetetlenül támogattak a könyv megírásának hosszú hónapjai alatt, Brenda pedig az alkotás folyamatában bizonyult nélkülözhetetlen partnernek. Külön köszönet John Fullernek és csapatának, akik megint jó munkát végeztek. Köszönet Tyrrell Albaugh-nak a könyv elkészülésének gördülékenységéért, és Jennifer Kelland-nek aprólékos és alapos szerkesztõmunkájáért. Egy ilyen csodálatos csapat mellett el sem tudom képzelni, miért akarnék valaha is más számára írni.
AT00.qxd
xxx
3/10/2004
9:46 PM
Page xxx
Adatbázis-tervezés Ezek után szeretnék köszönetet mondani kitûnõ szakmai lektoraimnak: Sandy Barkernek, Michael Blahának, Matt Greernek és Michelle Pooletnek. Ezek az emberek nagylelkûen feláldozták idejüket és szakértelmüket, hogy rengeteg értékes visszajelzéssel és javaslattal lássanak el. Ez a könyv határozottan sokat profitált az õ munkájukból. Még egyszer köszönet az idõért, és azért, hogy segítettetek ezt a kiadást még jobbá tenni. Szeretnék köszönetet mondani Kent Getznek, aki elõszót írt ehhez a kiadáshoz is. Ken elismert adatbázis/VB/.NET-szakértõ, kolléga és jó barát. Nagyon boldoggá tettek a könyv elején lévõ gondolatok és megjegyzések. Külön köszönet azoknak az olvasóknak, akik idõt szántak arra, hogy megosszák velem gondolataikat és megjegyzéseiket. Köszönöm a dicséreteket, és különösképpen azokat az építõ jellegû kritikákat, amelyek végül e könyv megszületéséhez vezettek. Szeretnék köszönetet mondani azoknak a tudományos intézeteknek, kormányirodáknak és kereskedelmi szervezeteknek is, akik „kötelezõ olvasmánnyá” tették könyvemet az adatbázis-karrierjüket elkezdõ dolgozóik számára. Nagyra becsülöm a támogatásukat. Végül, szeretném megköszönni a feleségemnek a végtelen türelmet, amit a könyv írása alatt tanúsított. Segítsége és támogatása felbecsülhetetlen értékû volt, ezért nagyon sokkal tartozom neki. Szívesen elmondanám, pontosan mit érzek iránta, õ azonban irtózik a szeretet nyilvánosan történõ kinyilatkoztatásának mindenféle formájától. A nagy szóbeli ölelés helyett csak ennyit mondok: Ked, végre jöhet a kellemes, hosszú, jól megérdemelt pihenés…
AT00.qxd
3/10/2004
9:46 PM
Page xxxi
Bevezetõ az elsõ kiadáshoz Ha a Mindenható kikérte volna a véleményemet, mielõtt hozzálátott a Teremtéshez, akkor valami egyszerûbbet javasoltam volna neki. – X. Alfonz, Kasztília és León királya Egy adatbázis létrehozása olyan, mint a világegyetem megteremtése, csak sokkal bonyolultabb. Amikor az univerzum létrejött, legalább senki sem volt, aki panaszkodjon. – Michael J. Hernandez Minden egy egyszerû kérdéssel indult: hogyan tervezhetek meg jól egy adatbázist? Ez a kérdés indított el engem érdekes utamon, az úton, amelyen megpróbáltam találni egy könyvet vagy egy embert, aki válaszolni tudna erre a kérdésre. Utam során jó néhány könyvesboltot bejártam, és számos érdekes, sõt lenyûgözõ emberrel találkoztam. Rengeteg könyvet olvastam el a témáról, a legátfogóbbaktól kezdve azokig, amelyek igencsak szûkölködtek a tartalomban. Az emberek, akikkel beszélgettem, szintén igen sokfélék voltak, a magamfajtától kezdve az igazi szakértõkig. Szerencsémre az utóbbiak közül néhány a mentorom lett, és nagyon sokat tanulhattam tõlük. A könyvek más lapra tartoznak. Eljött a pillanat, amikor rájöttem, hogy a jelenlegi adatbázis-tervezéssel foglalkozó könyveket egyszerûen nem a hozzám hasonló embereknek írták. Ha az ember matematikával foglalkozik, informatikai diplomát szerez, és egy ideig a számítógépiparban dolgozik, akkor nyugodtan a kezébe veheti ezeknek a szerzõknek a könyveit. Ha azonban nem, igen kevés könyv közül válogathat. Az „egyszerûsített” szövegû könyvekbõl azonban nem nagyon lehet tanulni, gyakran azért, mert a szerzõk túlságosan naivnak gondolják az olvasót. Úgy gondoltam, jó lenne egy könyv azok számára is, akik nem rendelkeznek magas szintû szaktudással; egy könyvre, amelyik érhetõ, könnyen olvasható, ugyanakkor nem unalmas; egy könyvre, amely viszonylag könnyen emészthetõ példákkal illusztrálja mondanivalóját. Készítettem tehát egy különleges tervezetet az adatbázis-tervezésrõl egy helyi kiadó számára, és ez sikeresnek bizonyult. Ezen felbátorodva úgy döntöttem, hogy egyszer könyv formájában is megírom a relációs adatbázis-tervezés teljes folyamatát. Utam során korán sikeres adatbázis-fejlesztõvé és oktatóvá váltam. Számos különféle szervezet és cég számára fejlesztettem adatbázisokat, és kedvemet leltem abban, hogy megtaníthattam az embereknek a különbözõ adatbázis-alkalmazások használatát. Közben végig a célom lebegett a szemem elõtt.
AT00.qxd
3/10/2004
xxxii
9:46 PM
Page xxxii
Adatbázis-tervezés Ott voltam 1995-ben a Seattle-ben (Washington állam) megrendezett Database Summit találkozón, és itt találkoztam Kathleen Tibbettsszel, az Addison-Wesley szerkesztõjével. Abban a pillanatban utam pozitív fordulatot vett. Kathleen olyan embereket keresett, akiknek valami mondanivalójuk volt, én pedig kétségtelenül ehhez a csoporthoz tartoztam. Türelmesen meghallgatta, milyen feladatot tûztem ki magam elé, és úgy látta, éppen itt az ideje annak, hogy megvalósítsam ezt a célt: így végül papírra vethettem mindazt, amit az adatbázis-tervezésrõl tanultam. A könyv, amelyet az Olvasó most a kezében tart, ennek a különleges utazásnak az eredménye. Tudásomat igyekeztem tiszta és egyenes adatbázis-tervezési módszernek mondható formába önteni. Keményen dolgoztam rajta, hogy az anyag a szakmai elõélettõl függetlenül mindenki számára érthetõ legyen. Olyan elõadásmódra törekedtem, ami könnyebben érthetõ, és olyan anyagot állítottam össze, ami könnyebben megtanulható, mint a hagyományos tervezési módszerek, de nem kevésbé eredményes azoknál. Úgy vélem, az adatbázis-tervezés tanulása egy folyamat. Egyre jobban megismerem a tervezés bonyolultságát és finom árnyalatait – ahogyan minden bizonnyal az Olvasó is. Az adatbázis-tervezés sokkal inkább mûvészet, mint egzakt tudomány, melyben a tiszta elméleti és technikai tudás mellett nagyon fontos szerepet játszik az intuíció is. Az adatbázis-tervezéshez elengedhetetlen a jó kapcsolattartási képesség, és az, hogy egyszerre legyünk képesek hosszú- és rövidtávon is gondolkozni. Az adatbázis-tervezés igazán érdekes téma tud lenni, ha az ember jobban beleássa magát.
Köszönetnyilvánítás Rájöttem, hogy az írás valójában társas tevékenység. Borzasztó hálás vagyok azért, hogy vannak olyan szerkesztõk, kollégák, barátok és családtagok, akik mindig készek segíteni. Ezek azok az emberek, akik folyamatosan bátorítanak, és segítenek abban, hogy az aktuális témára összpontosítson az ember. Nélkülük sokszor könnyen „félretettem volna a munkát holnapig”. Mindenekelõtt szeretnék köszönetet mondani Kathleen Tibbettsnek, az Addison-Wesleytõl, szilárd támogatásáért és a lehetõségért, hogy ez a könyv elkészülhetett. Õ legalább annyira lelkes volt a tervvel kapcsolatban, mint én magam. Remélem, lesz még alkalmunk együtt dolgozni. Hálás köszönet jó barátaimnak, kollégáimnak és szakmai lektoromnak, Jim Boothnak. Nagyra értékelem Jim adatbázis-tervezéssel kapcsolatos tudását, a megjegyzései felbecsülhetetlen értékûek voltak. Egy vastag bélszínszelet és egy üveg finom vörösbor vár majd ránk, amikor ez a könyv a piacra kerül.
AT00.qxd
3/10/2004
9:46 PM
Page xxxiii
xxxiii
Hatalmas hálával tartozom jó barátomnak és kollégámnak, Christopher R. Webernek. Elfoglalt tanácsadói és oktatói idõbeosztása mellett Chris számos fejezet anyagát átnézte, és értékes visszajelzéseket adott. Ha most sikerülne idõt szakítanunk rá, és leülnénk egy kicsit a zenérõl beszélgetni… (mindketten zenészek vagyunk.) Szeretném kifejezni a köszönetemet néhány embernek azok közül is, akik megosztották velem tapasztalataikat és tudásukat, és pozitív hatással voltak adatbázis-tervezõi pályafutásomra. Karen Watterson, Mike Johnson, Karl Fischer, Paul Litwin, John Viescas, Ken Getz és Gregory Piercy – köszönet mindenkinek. Legõszintébb és legmélyebb elismerésem kedves barátomnak és mentoromnak, Alastair Black-nek. Azon kívül, hogy szóról szóra átnézte a könyv anyagát, õ és felesége, Julia, megnyitották elõttem az otthonukat, és családtagjukként kezeltek. A könyv megírása során tanúsított mérhetetlen és felbecsülhetetlen segítségét nem lehet eléggé kihangsúlyozni. Többet tanultam az írás tudományáról az elmúlt hónapok során, mint eddigi pályafutásom során bármikor. Végül, de semmiképpen sem utolsósorban, külön köszönet a feleségemnek, Kendrának. Könyvének befejezésekor minden házas szerzõ rájön, milyen sokkal tartozik felesége türelméért, és felismeri érdeklõdésének és kitartásának felbecsülhetetlen értékét. A lelkemre kötötték azonban, hogy ne ragozzam túl a dolgot, mert Kendra irtózik az érzelmek nyilvánosság elõtt történõ kinyilvánításától. Az egyetlen tehát, amit mondhatok: köszönöm, Ked. Most végre folytathatjuk normális életünket.
AT00.qxd
3/10/2004
9:46 PM
Page xxxv
Feleségemnek, Kendrának, aki mindig is hitt bennem. Macskáink, Chico és Bugs emlékére. Az írás már nem ugyanaz nélkülük. Ajánlom bárkinek, akinek beletört már a bicskája egy relációs adatbázis megtervezésébe.
A szerzõrõl Michael J. Hernandez jelenleg a Microsoftnál dolgozik, mint a Visual Studio .NET csoport fejlesztõeszközökkel foglalkozó csapatának programmenedzsere. Korábban független tanácsadóként relációs adatbázisok tervezésére szakosodott. Mike igazi veteránnak számít az adatbázisok tervezésében a maga 14 événél is nagyobb tapasztalatával, melynek során különféle iparágakhoz tartozó ügyfelek számára fejlesztett alkalmazásokat. Karrierje során számos relációs adatbázis-kezelõ rendszerrel dolgozott; az Access 1.0 és az SQL Server 7.0 megjelenése óta azonban csak ezeket használja. Mike az igen sikeres SQL Queries for Mere Mortals társszerzõje, emellett pedig számos, adatbázisokkal foglalkozó könyv és folyóirat lapjain találkozhatunk vele. A különféle adatbázis-fejlesztési munkák mellett Mike olyan államilag elismert oktatási intézményekben is dolgozott, mint az AppDev, a Deep Training és a Focal Point, Inc. Eközben beutazta az országot, és Microsoft Access, SQL Server, SQL/92 és relációs adatbázis-tervezés tanfolyamokat tartott. 13 éve alatt Mike az ötszáz legnagyobb vállalat, az amerikai hadsereg, a kormány és a magánszféra több ezer diákjával foglalkozott. Tanulóitól folyamatosan magas értékelést kapott, és az ország egyik legelismertebb oktatójává vált. Számos hazai és nemzetközi konferencián felszólalt (például a 2001-ben Orlandóban megrendezett Microsoft Office Deployment and Development, illetve a 2002-es, Palm Springsben megtartott Microsoft Office Solutions konferenciákon). Mike tevékenyen részt vállalt a Microsoft .NET kezdeményezésében, és egyike volt a Microsoft által elismert elsõ 200 .NET oktatónak. Részt vett a Microsoft.NET Developers és a Deep Training .NET elõadókörutakon. Jelenleg a Microsoft színeiben járja az országot. Mike 1967 óta gitározik. Tizenöt éven keresztül hivatásos gitáros volt, és közben számos különféle stílust kipróbált. Képessége a hallgatóság lelkesítésére még abból az idõbõl származik, amikor szórakoztatással foglalkozott; munkatársai között formalitásoktól mentes stílusáról ismert. Gitározott a tanítványainak, hallgatóságát a világ legrosszabb szóvicceinek gyûjteményével szórakoztatta, egyes témáit különféle rejtvényekkel illusztrálta, és az idõsebb George Bush és Ross Perot parodizálásával kisebb felháborodást keltett.
AT00.qxd
3/10/2004
xxxvi
9:46 PM
Page xxxvi
Adatbázis-tervezés Néhány zenészbarátja rábeszélte, hogy vegye kézbe újra a gitárját, és játsszon zeneértõ közönség elõtt. Rengeteg bossa novát és jazzt játszott, sõt saját zenét is írt. Végül sikerült elég anyagot összegyûjtenie ahhoz, hogy elkészítse saját CD-jét. Szabadidejét, amibõl meglehetõsen kevés van neki, a következõ három dolog valamelyikével tölti: megiszik egy hosszú amerikai kávét a legközelebbi Starbucksban, a Barnes & Noble könyvesbolt adatbázis részlegében lófrál, vagy golflabdákat ütöget a helyi pályán, miközben Lee Trevinónak képzeli magát. Mike elektronikus levélcíme:
[email protected].