antywzorce-jezyka-sql.-jak-unikac-pulapek-podczas-programowania-baz-danych helion.pdf

(21806 KB) Pobierz
887633860.003.png
Spis treci
Rozdzia 1. Wprowadzenie ................................................................. 11
1.1. Dla kogo jest ta ksika ............................................................................. 13
1.2. Co znajduje si w tej ksice ...................................................................... 14
1.3. Czego nie ma w tej ksice ........................................................................ 16
1.4. Konwencje ............................................................................................... 18
1.5. Przykadowa baza danych ......................................................................... 19
1.6. Podzikowania ......................................................................................... 22
Cz I. Antywzorce logicznego projektu bazy danych ....... 23
Rozdzia 2. Przechodzenie na czerwonym wietle ......................... 25
2.1. Cel: przechowywanie atrybutów wielowartociowych ................................... 26
2.2. Antywzorzec: listy elementów oddzielonych przecinkami ............................. 27
2.3. Jak rozpozna ten antywzorzec .................................................................. 31
2.4. Usprawiedliwione uycia tego antywzorca .................................................. 31
2.5. Rozwizanie: utworzenie tabeli czcej ..................................................... 32
Rozdzia 3. Naiwne drzewa ............................................................... 37
3.1. Cel: przechowywanie i uzyskiwanie hierarchii ............................................. 38
3.2. Antywzorzec: zawsze odwouj si do rodzica .............................................. 39
3.3. Jak rozpozna ten antywzorzec .................................................................. 43
3.4. Usprawiedliwione uycia tego antywzorca .................................................. 44
3.5. Rozwizanie: naley uy alternatywnych modeli drzew .............................. 46
887633860.004.png
 
6
Antywzorce jzyka SQL
Rozdzia 4. Identyfikator potrzebny od zaraz ................................. 61
4.1. Cel: wypracowanie konwencji dla kluczy gównych ..................................... 62
4.2. Antywzorzec: jeden rozmiar dla wszystkich ................................................ 64
4.3. Jak rozpozna ten antywzorzec .................................................................. 69
4.4. Usprawiedliwione uycia tego antywzorca .................................................. 70
4.5. Rozwizanie: klucz skrojony na miar ..................................................... 70
Rozdzia 5. Wpis bez klucza ............................................................... 75
5.1. Cel: uproszczenie architektury bazy danych ................................................ 76
5.2. Antywzorzec: rezygnacja z ogranicze ....................................................... 77
5.3. Jak rozpozna ten antywzorzec .................................................................. 80
5.4. Usprawiedliwione uycia tego antywzorca .................................................. 81
5.5. Rozwizanie: deklarowanie ogranicze ...................................................... 81
Rozdzia 6. Encja-atrybut-warto .................................................... 85
6.1. Cel: obsuga zmiennych atrybutów ............................................................. 86
6.2. Antywzorzec: zastosowanie uniwersalnej tabeli atrybutów ........................... 87
6.3. Jak rozpozna ten antywzorzec .................................................................. 93
6.4. Usprawiedliwione uycia tego antywzorca .................................................. 94
6.5. Rozwizanie: modelowanie podtypów ........................................................ 95
Rozdzia 7. Zwizki polimorficzne .................................................. 103
7.1. Cel: odwoania do wielu rodziców ........................................................... 104
7.2. Antywzorzec: zastosowanie dwuzadaniowego klucza obcego ..................... 105
7.3. Jak rozpozna ten antywzorzec ................................................................ 109
7.4. Usprawiedliwione uycia tego antywzorca ................................................ 110
7.5. Rozwizanie: uproszczenie relacji ............................................................ 110
Rozdzia 8. Atrybuty wielokolumnowe .......................................... 117
8.1. Cel: przechowywanie atrybutów wielowartociowych ................................. 118
8.2. Antywzorzec: utworzenie wielu kolumn .................................................... 118
8.3. Jak rozpozna ten antywzorzec ................................................................ 122
8.4. Usprawiedliwione uycia tego antywzorca ................................................ 123
8.5. Rozwizanie: utworzenie tabeli zalenej ................................................... 124
887633860.005.png
 
Spis treci
7
Rozdzia 9. Tribble metadanych ..................................................... 127
9.1. Cel: zapewnienie skalowalnoci ............................................................... 128
9.2. Antywzorzec: klonowanie tabel lub kolumn .............................................. 129
9.3. Jak rozpozna ten antywzorzec ................................................................ 134
9.4. Usprawiedliwione uycia tego antywzorca ................................................ 135
9.5. Rozwizanie: partycjonowanie i normalizacja ........................................... 137
Cz II. Antywzorce fizycznego projektu bazy danych ... 141
Rozdzia 10. Bdy zaokrgle ......................................................... 143
10.1. Cel: stosowanie liczb uamkowych zamiast liczb cakowitych .................... 144
10.2. Antywzorzec: stosowanie typu danych FLOAT .................................... 144
10.3. Jak rozpozna ten antywzorzec .............................................................. 149
10.4. Usprawiedliwione uycia tego antywzorca .............................................. 150
10.5. Rozwizanie: stosowanie typu danych NUMERIC ............................... 150
Rozdzia 11. 31 smaków ................................................................... 153
11.1. Cel: ograniczenie zakresu danych kolumny do okrelonych wartoci ......... 154
11.2. Antywzorzec: okrelanie wartoci w definicji kolumny ............................. 155
11.3. Jak rozpozna ten antywzorzec .............................................................. 159
11.4. Usprawiedliwione uycia tego antywzorca .............................................. 160
11.5. Rozwizanie: okrelanie akceptowanych wartoci na poziomie danych ..... 160
Rozdzia 12. Pliki-widma ................................................................. 165
12.1. Cel: przechowywanie obrazów i innych duych zasobów ......................... 166
12.2. Antywzorzec: przekonanie o koniecznoci stosowania plików ................... 167
12.3. Jak rozpozna ten antywzorzec .............................................................. 171
12.4. Usprawiedliwione uycia tego antywzorca .............................................. 172
12.5. Rozwizanie: stosowanie typów danych BLOB ..................................... 173
Rozdzia 13. Strzelanie indeksami ................................................... 177
13.1. Cel: optymalizacja wydajnoci ............................................................... 178
13.2. Antywzorzec: stosowanie indeksów bez adnego planu ........................... 179
13.3. Jak rozpozna ten antywzorzec .............................................................. 184
13.4. Usprawiedliwione uycia tego antywzorca .............................................. 184
13.5. Rozwizanie: zasada MENTOR dla indeksów ..................................... 185
887633860.001.png
 
8
Antywzorce jzyka SQL
Cz III. Antywzorce zapyta .............................................. 193
Rozdzia 14. Strach przed nieznanym ............................................ 195
14.1. Cel: odrónianie brakujcych wartoci .................................................... 196
14.2. Antywzorzec: stosowanie NULL jako zwykej wartoci (lub odwrotnie) .... 197
14.3. Jak rozpozna ten antywzorzec .............................................................. 201
14.4. Usprawiedliwione uycia tego antywzorca .............................................. 202
14.5. Rozwizanie: stosowanie NULL jako unikatowej wartoci ..................... 203
Rozdzia 15. Niejasne grupy ............................................................ 209
15.1. Cel: uzyskiwanie wiersza z najwiksz wartoci w skali grupy ................. 210
15.2. Antywzorzec: odwoania do niegrupowanych kolumn ............................. 211
15.3. Jak rozpozna ten antywzorzec .............................................................. 214
15.4. Usprawiedliwione uycia tego antywzorca .............................................. 215
15.5. Rozwizanie: jednoznaczne stosowanie kolumn ...................................... 216
Rozdzia 16. Losowy wybór .............................................................. 223
16.1. Cel: uzyskiwanie przypadkowego wiersza ............................................... 224
16.2. Antywzorzec: losowe sortowanie danych ................................................ 225
16.3. Jak rozpozna ten antywzorzec .............................................................. 226
16.4. Usprawiedliwione uycia tego antywzorca .............................................. 227
16.5. Rozwizanie: brak ustalonej kolejnoci… ............................................... 228
Rozdzia 17. Wyszukiwarka ndzarza ............................................ 233
17.1. Cel: pene przeszukiwanie tekstu ........................................................... 234
17.2. Antywzorzec: predykaty dopasowywania wzorców .................................. 235
17.3. Jak rozpozna ten antywzorzec .............................................................. 236
17.4. Usprawiedliwione uycia tego antywzorca .............................................. 237
17.5. Rozwizanie: stosowanie narzdzi odpowiednio
dobranych do realizowanych zada ........................................................ 237
Rozdzia 18. Zapytanie-spaghetti ................................................... 251
18.1. Cel: ograniczenie liczby zapyta SQL-a ............................................. 252
18.2. Antywzorzec: rozwizanie zoonego problemu w jednym kroku .............. 253
18.3. Jak rozpozna ten antywzorzec .............................................................. 256
18.4. Usprawiedliwione uycia tego antywzorca .............................................. 257
18.5. Rozwizanie: dziel i zwyciaj ............................................................... 257
887633860.002.png
 
Zgłoś jeśli naruszono regulamin