Főoldal | Könyvlista | Gyorskereső

Átmenetileg a rendelés és szállítás szünetel
SQL fejtör?k

SQL fejtör?k

Joe Celko:
SQL fejtör?k


Megjelenés: 2003
Kiskapu Kiadó
184 oldal, bolti ár: 1960,- Ft

Internetes ár (-5%): 1862,- Ft

db

A könyv ismertetése

Vissza a lap tetejére | A könyv tartalomjegyzéke

Joe Celko:
SQL fejtör?k

"Ezek a kis fejtörők arra valók, hogy helyrerázzák fejünkben az SQL-ről kialakult képet."

Joe Celko

Joe Celko a legravaszabb fejtörők megfejtésére buzdítja az olvasót, majd különböző megoldási javaslatokkal és magyarázatokkal segíti az eredmény elérésében. A feladványok az író korábbi írásainak válogatását képezik, amelyek első ízben a DBMS és a Database Programming and Design magazinokban láttak napvilágot. A könyv ezeken túl tartalmaz eddig még nem közölt feladatokat is, illetve a korábbi fejtörők újabb megoldásait. Joe az SQL szemszögéből világítja meg az adott problémákat, ezzel segítve a gyakorlott adatbázis-proramozókat a gyakran felmerülő típusfeladatok megoldásában. Az író a maga szórakoztató, baráti stílusában új módszereket és hasznos SQL példaprogramokat ismertetve vezeti be az olvasót a nem eljárásközpontú programok írásának fortélyaiba.

Mit kínál a könyv?

  • Új megvilágításba helyez korábbi feladatokat, ismerteti ezek újabb megoldásait, illetve vadonatúj problémákat és megoldásokat vet fel.
  • Általános bevezetést ad az ismertetett problémák minden csoportjához.
  • A feladványokat és megoldásaikat a korábban bevált formában mutatja be, felhasználóközeli, a gyakorlatban jól alkalmazható
  • módszereket nyújtva az SQL-programozáshoz.
  • Segítséget nyújt ahhoz, hogy a bemutatott példákat saját programozói feladataink megoldása során alkalmazhassuk.
Bevezető

Az előzmények

Több mint egy évtizeden át írtam cikkeket számítástechnikai folyóiratokba, de az olvasók csak azokra emlékeznek, amelyek az adatbáziskezelés és az SQL témájával foglalkoztak. Az évek során lelkes szószólója lettem az ANSI/ISO szabványoknak és adatbázis-programozási módszereknek, és időközben világszerte elismert adatbázis-felhasználóvá váltam. Vagy legalábbis szeretem ezt hinni.

Hírnevemet a Miller Freeman-féle Database Programming & Design folyóirat 1990 januári számában induló és 1992-ig megjelenő Celko on SQL (Celko az SQL-ről) című rovattal kezdtem megalapozni. Néhány cikkem már korábban is megjelent a magazinban, ezek biztosították számomra a kezdeti figyelmet. Egy rovat esetében a legjobb fogás az olvasói visszajelzések fogadása - az kevés, ha az olvasók ismerik az embert, valahogy be kell vonni őket a témába. Valamilyen trükköt kell alkalmazni.

Néhány rovat kitalált szereplőket sorakoztat fel ebből a célból, és egy kis folytatásos szappanoperát hoz így létre; mások üzleti pletykákkal próbálkoznak. Megfontoltam ezek lehetőségét is, de rájöttem, hogy nem tudok sem párbeszédeket, sem regényt írni. Ehelyett azt a cselt alkalmaztam, amit már a korábbi években közölt rovataimnál is: minden cikkemet egy programozási feladattal zártam, aminek megoldását az olvasóra bíztam. A megoldás a következő számban jelent meg, a javaslatokhoz írt megjegyzésekkel együtt. Az olvasók visszajelzései pozitívnak bizonyultak, aminek az oka nyilvánvaló: a programozók szeretnek problémákat megoldani - és szeretik a nevüket nyomtatásban látni.

A DBMS magazin (M&T Publishing, amíg Miller Freeman meg nem vásárolta) teljes munkaidőre alkalmazott, így felhagytam a Database Programming & Design-nak szabadúszóként írt cikkeimmel. 1992 májusában SQL Explorer címmel indítottam el a rovatomat a DBMS-ben. 1996 áprilisában a rovat címe SQL for Smarties-ra változott és a mai napig működik. A cikkek végén lévő feladványokat megtartottam, de a szerkesztő kívánsága az volt, hogy a megoldás ugyanabban a számban jelenjen meg, mint a feladat.

Mialatt a DBMS-nél dolgoztam, a berlini fal leomlott, Németország újraegyesült, a Deutsche Bank pedig behajtott egy kötelezvényt az M&T németországi anyavállalatával szemben. Hirtelen újra a régi szerkesztőim és barátaim vettek körül. Természetesen azonnal felmondtak nekem; végül is a 80-as éveket írtuk, karcsúsítani, bővíteni vagy racionalizálni kellett mindenképpen. De a rovatomat megtartottam és tovább írhattam SQL-feladványaimat a cikkekhez.

Létrehoztam emellett egy másik, SQL-feladványokat megjelentető rovatot a Boxes and Arrows című, kis példányszámú szakmai folyóiratban, amely az IDMS-szel és egyéb nagygépes adatbáziskezelő rendszerekkel dolgozó adatbázisfelügyelők, rendszerelemzők számára jelent meg. Itt 1989 októberétől a folyóirat 1994 decemberében történt megszűnéséig jelentek meg a cikkeim.

Miért választottam a feladványok formáját?

Legtöbbünk eljárásközpontú (procedurális) nyelveken nőtt fel és nem kis erőfeszítésünkbe került, hogy a nem eljárásközpontú SQL nyelv használatát elsajátítsuk. Senki nem tanított meg minket erre a gondolkodásmódra. A tanácsadásból származó bevételeim nem kis része még manapság is olyan rendszerek tisztába tevéséből származik, amelyekben az SQL-táblákat csak szerkezet nélküli állományokként használják, a programot pedig a kioldókban (trigger) és tárolt eljárásokban elrejtett eljárásközpontú programkód helyettesíti. Artemus Ward szavaival élve: Nem az őrjít meg, amit nem tudsz, hanem amiről tudod, hogy nem igaz.

A feladványok itt olvasható gyűjteménye nem pusztán a magazinokban megjelent anyag újraközlése. A megoldások magyarázatait - sőt gyakran magukat a feladatokat - a rendelkezésre álló hely korlátozottsága miatt nem minden esetben részletezhettem olyan mértékben, amennyire kívánatos lett volna. Sokszor több lehetséges megoldás is létezik, amelyek egy része az Olvasói levelek (Letters to the Editor) rovatban összefoglalva hónapokkal később megjelent, de az is előfordult, hogy egyáltalán nem került sor közlésükre. Ez a könyv most lehetőséget teremt számomra mind a feladatok, mind pedig a lehetséges megoldások bővebb magyarázatára.

Ugyanakkor módomban áll bemutatni az SQL-programozók helyes gondolkodásmódját. Évtizedekkel ezelőtt, Fortran-programozóként nem kis büszkeséggel mondtuk magunkról, hogy bármit meg tudunk írni Fortran nyelven. Így születtek a kereskedelmi matematikai programcsomagok, amelyek Fortran tömbökkel utánozták a Cobolt, s a LISP mutatóit is ezekkel a Fortran tömbökkel hamisítottuk, és így tovább.

A buta programozói fogások e nemes hagyományát folytatva magam is létrehozója voltam olyan problémáknak, amiknek az SQL-ben nem kellett volna felbukkaniuk, és részletesen kidolgoztam ezeket a példákat - nem azért, hogy megmutassam, így is lehetséges, hanem az SQL irányából való kérdés-megközelítés módját bemutatandó.

Ma a Világháló korát éljük, így a feladványok megoldási módjai állandóan bővülnek. Lehet, hogy a rólam kialakult kép veszít a csillogásából, mégis el kell ismernem, hogy az évek során az eredeti megoldások közül sokat sikerült az olvasóknak túlszárnyalni.

Nem próbáltam a feladványokat sem időrendi, sem bonyolultsági sorrendbe állítani. Nem volt a problémák megjelenésében semmilyen szabályszerűség, és arra sem tudok biztos módszert, hogy az egyes példák bonyolultságát össze lehessen hasonlítani. Ehelyett egy kevésbé formális csoportosítási módszert választottam.

A kérdések megoldásainál próbáltam az érintett személyekről említést tenni; ha valakiről megfeledkeztem, ezúton kérem elnézését.

A témakörök

Próbáltam fejezeteket kialakítani, hogy a könyv ne pusztán egymás utáni feladathalmazok listájából álljon. Minden fejezet olyan problémákat tartalmaz, amelyek megoldásai egy közös rendezőelv köré csoportosíthatók. Némileg önkényesen az alábbi öt osztályt hoztam létre:

1. Adatmeghatározás

2. Adatformázás

3. Adatok kiválasztása

4. Számítások végzése

5. Adatok csoportosítása

E rendszerezés gyengesége, hogy egy feladvány egyes megoldásai különböző csoportokba tartozhatnak. Még rosszabb esetben akár egy megoldás is osztályozható többféleképpen, ha többféle fogást alkalmaz. Minden fejezet elején megpróbálom meghatározni azokat a közös jellemzőket, amelyek meghatározzák az adott csoportot, de még ez is csak némileg segít eligazodni. Így csak azt kérhetem az Olvasótól, hogy legyen elnéző velem szemben.

Hibajavítások és későbbi kiadások

Szívesen fogadok minden hibajavítást, új fogást, trükköt, egyéb javaslatot a könyv jövőbeli kiadásaival kapcsolatban. Az ötleteket az alábbi címre várom:

Joe Celko

235 Carter Avenue

Atlanta, GA 30317

e-mail: 71062.1056@compuserve.com

A kiadómon, a Morgan Kaufmannon keresztül is kapcsolatba léphet velem bárki. Érdemes, hiszen nyomtatásban láthatja a nevét az Olvasó!

A könyv tartalomjegyzéke

Vissza a lap tetejére | A könyv ismertetése

Joe Celko:
SQL fejtör?k

1. fejezet: Adatmeghatározás

Denormalizált adatbázisok 1

Rossz kódolási rendszerek 2

1. feladvány - Táblák létrehozása 3

A megoldás 3

2. feladvány - A munkahelyi távollét kezelése 5

1. megoldás 6

2. megoldás 7

3. feladvány - Érzéstelenítés 10

Megoldás 13

4. feladvány - Biztonsági azonosítók 15

Megoldás 15

5. feladvány - Az adatok formázása 17

Megoldás 17

6. feladvány - Szállodai szobafoglalás 18

Megoldás 18

7. feladvány - Iratok 19

Megoldás 20

8. feladvány - Nyomtatók időbeosztása 24

Megoldás 25

9. feladvány - Szabad helyek 26

1. megoldás 27

2. megoldás 27

3. megoldás 27

10. feladvány - A munka jutalma 28

1. megoldás 29

2. megoldás 30

11. feladvány - Munkarend 31

Megoldás 32

 

2. fejezet: Adatformázás

12. feladvány - Alperesek, állapotok 34

1. megoldás 36

2. megoldás 36

3. megoldás 37

13. feladvány - Oktatók 38

1. megoldás 38

2. megoldás 39

14. feladvány - Telefon 40

Megoldás 41

15. feladvány - A két legutóbbi alapbér 43

1. megoldás 44

2. megoldás 45

3. megoldás 46

4. megoldás 47

5. megoldás 47

 

3. fejezet: Adatkiválasztás

16. feladvány - Folyamatok 49

1. megoldás 50

2. megoldás 52

17. feladvány - Munkaközvetítő iroda 54

1. megoldás 55

2. megoldás 56

3. megoldás 58

18. feladvány - Reklámlevél 58

1. megoldás 59

2. megoldás 59

19. feladvány - A legjobb értékesítők 60

Megoldás 61

20. feladvány - Teszteredmények 63

1. megoldás 63

2. megoldás 63

21. feladvány - Repülőgépek és pilóták 64

1. megoldás 64

2. megoldás 64

22. feladvány - Az üdülőtulajdonos 65

Megoldás 66

23. feladvány - Folyóiratok eladása 66

1. megoldás 67

2. megoldás 68

24. feladvány - Tízből egy 69

1. megoldás 70

2. megoldás 70

3.megoldás 71

4. megoldás 72

25. feladvány - Mérföldkövek 72

1. megoldás 73

2. megoldás 74

3. megoldás 74

26. feladvány - Folyamatábrák 75

1. megoldás 76

2. megoldás 77

3. megoldás 77

27. feladvány - Egyenlő halmazok megkeresése 78

1. megoldás 79

2. megoldás 79

3.megoldás 80

4. megoldás 81

 

4. fejezet: Számítások

28. feladvány - A szinusz függvény kiszámítása 84

1. megoldás 84

2. megoldás 84

29. feladvány - Keressük meg a móduszt! 86

1. megoldás 86

2. megoldás 87

3. megoldás 87

30. feladvány - Átlagos vásárlási sűrűség 88

1. megoldás 89

2. megoldás 90

31. feladvány - Az összes termék megvásárlása 90

1. megoldás 91

2. megoldás 92

32. feladvány - Adószámítás 92

Megoldás 94

33. feladvány - Értékcsökkenés 96

Megoldás 97

34. feladvány - Tanácsadói díjazás 99

1. megoldás 100

2. megoldás 101

35. feladvány - Igénylések 102

1. megoldás 103

2. megoldás 104

36. feladvány - Kétszeres illeték 104

1. megoldás 106

2. megoldás 106

37. feladvány - Mozgó átlag 107

1. megoldás 107

2. megoldás 108

3. megoldás 108

 

5. fejezet: Adatok csoportosítása

38. feladvány - Költségvetési jelentés 110

Megoldás 111

39. feladvány - Halszámlálás 112

1. megoldás 113

2. megoldás 114

3. megoldás 114

40. feladvány - Diplomaszerzés 115

41. feladvány - Modellpárok 118

1. megoldás 120

2. megoldás 121

3. megoldás 121

42.feladvány - Pepperoni 121

1. megoldás 122

2. megoldás 123

43. feladvány - Áruházi akciók 123

1. megoldás 125

2. megoldás 126

44. feladvány - Ülőhelyszakaszok 128

1. megoldás 128

2. megoldás 129

45. feladvány - Csoportok felbontása 129

1. megoldás 130

2. megoldás 134

46. feladvány - Eszközgyár 136

Megoldás 137

47. feladvány - Háromból kettő 139

1. megoldás 139

2. megoldás 140

3. megoldás 140

48. feladvány - Becsült és tényleges költségek 141

Megoldás 143

49. feladvány - Személyzeti kérdés 144

Megoldás 145

50. feladvány - Lovi 147

1. megoldás 147

2. megoldás 148

51. feladvány - Szállodai szobák 148

1. megoldás 149

2. megoldás 151

 

Tárgymutató 153

Vissza a lap tetejére

mesekönyv

szoftver