Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz danych - ebook
Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz danych - ebook
Zobacz, jak tego nie robić!
- Jak nie projektować modelu logicznego i fizycznego bazy danych?
- Jak nie zadawać zapytań SQL?
- Jak nie wytwarzać aplikacji?
Podobno najlepiej jest uczyć się na cudzych błędach. Ta mądrość sprawdza się w wielu dziedzinach życia, także w informatyce. Ile razy brnąłeś w złe rozwiązanie, aż ktoś powiedział: "tak się nie robi"? Czy nie pomyślałeś wtedy o książce, w której zamiast metod rozwiązywania danych problemów znalazłbyś informacje, jak do nich nie dopuścić? Chciałbyś, żeby ta książka dotyczyła języka SQL? Oto ona!
Niniejsza publikacja przedstawia zbiór antywzorców w języku SQL. Dzięki niej poznasz błędy najczęściej popełniane przy projektowaniu i wykorzystywaniu baz danych. Dowiesz się z niej, jak nie tworzyć logicznego i fizycznego projektu bazy danych, jak nie zadawać zapytań SQL oraz jak nie wytwarzać aplikacji - a wszystko po to, aby zrozumieć, jak nie popełniać błędów. W każdej z czterech części znajdziesz ogrom interesujących informacji: poznasz zasady przechowywania haseł, błędy pojawiające się w wyniku zaokrągleń czy sposoby radzenia sobie z brakiem integralności bazy danych. Książka ta jest genialną pozycją, dzięki której już nigdy nie zboczysz z drogi w codziennej pracy z bazami danych i językiem SQL!
- Antywzorce logicznego projektu bazy danych
- Modelowanie drzew
- Tworzenie kluczy głównych
- Związki polimorficzne
- Atrybuty wielokolumnowe
- Antywzorce fizycznego projektu bazy danych
- Błędy zaokrągleń
- Przechowywanie dużych plików
- Indeksy
- Antywzorce zapytań
- Wykorzystanie NULL-a
- Grupowanie kolumn
- Losowe wybieranie wiersza
- Przeszukiwanie tekstów
- Optymalizacja zapytań SQL
- Antywzorce wytwarzania aplikacji
- Przechowywanie haseł
- Wstrzykiwanie SQL
Ucz się na błędach... Cudzych!
Spis treści
Rozdział 1. Wprowadzenie (11)
- 1.1. Dla kogo jest ta książka (13)
- 1.2. Co znajduje się w tej książce (14)
- 1.3. Czego nie ma w tej książce (16)
- 1.4. Konwencje (18)
- 1.5. Przykładowa baza danych (19)
- 1.6. Podziękowania (22)
Część I. Antywzorce logicznego projektu bazy danych (23)
Rozdział 2. Przechodzenie na czerwonym świetle (25)
- 2.1. Cel: przechowywanie atrybutów wielowartościowych (26)
- 2.2. Antywzorzec: listy elementów oddzielonych przecinkami (27)
- 2.3. Jak rozpoznać ten antywzorzec (31)
- 2.4. Usprawiedliwione użycia tego antywzorca (31)
- 2.5. Rozwiązanie: utworzenie tabeli łączącej (32)
Rozdział 3. Naiwne drzewa (37)
- 3.1. Cel: przechowywanie i uzyskiwanie hierarchii (38)
- 3.2. Antywzorzec: zawsze odwołuj się do rodzica (39)
- 3.3. Jak rozpoznać ten antywzorzec (43)
- 3.4. Usprawiedliwione użycia tego antywzorca (44)
- 3.5. Rozwiązanie: należy użyć alternatywnych modeli drzew (46)
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 użycia tego antywzorca (70)
- 4.5. Rozwiązanie: 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 użycia tego antywzorca (81)
- 5.5. Rozwiązanie: deklarowanie ograniczeń (81)
Rozdział 6. Encja-atrybut-wartość (85)
- 6.1. Cel: obsługa zmiennych atrybutów (86)
- 6.2. Antywzorzec: zastosowanie uniwersalnej tabeli atrybutów (87)
- 6.3. Jak rozpoznać ten antywzorzec (93)
- 6.4. Usprawiedliwione użycia tego antywzorca (94)
- 6.5. Rozwiązanie: modelowanie podtypów (95)
Rozdział 7. Związki polimorficzne (103)
- 7.1. Cel: odwołania do wielu rodziców (104)
- 7.2. Antywzorzec: zastosowanie dwuzadaniowego klucza obcego (105)
- 7.3. Jak rozpoznać ten antywzorzec (109)
- 7.4. Usprawiedliwione użycia tego antywzorca (110)
- 7.5. Rozwiązanie: uproszczenie relacji (110)
Rozdział 8. Atrybuty wielokolumnowe (117)
- 8.1. Cel: przechowywanie atrybutów wielowartościowych (118)
- 8.2. Antywzorzec: utworzenie wielu kolumn (118)
- 8.3. Jak rozpoznać ten antywzorzec (122)
- 8.4. Usprawiedliwione użycia tego antywzorca (123)
- 8.5. Rozwiązanie: utworzenie tabeli zależnej (124)
Rozdział 9. Tribble metadanych (127)
- 9.1. Cel: zapewnienie skalowalności (128)
- 9.2. Antywzorzec: klonowanie tabel lub kolumn (129)
- 9.3. Jak rozpoznać ten antywzorzec (134)
- 9.4. Usprawiedliwione użycia tego antywzorca (135)
- 9.5. Rozwiązanie: partycjonowanie i normalizacja (137)
Część II. Antywzorce fizycznego projektu bazy danych (141)
Rozdział 10. Błędy zaokrągleń (143)
- 10.1. Cel: stosowanie liczb ułamkowych zamiast liczb całkowitych (144)
- 10.2. Antywzorzec: stosowanie typu danych FLOAT (144)
- 10.3. Jak rozpoznać ten antywzorzec (149)
- 10.4. Usprawiedliwione użycia tego antywzorca (150)
- 10.5. Rozwiązanie: stosowanie typu danych NUMERIC (150)
Rozdział 11. 31 smaków (153)
- 11.1. Cel: ograniczenie zakresu danych kolumny do określonych wartości (154)
- 11.2. Antywzorzec: określanie wartości w definicji kolumny (155)
- 11.3. Jak rozpoznać ten antywzorzec (159)
- 11.4. Usprawiedliwione użycia tego antywzorca (160)
- 11.5. Rozwiązanie: określanie akceptowanych wartości na poziomie danych (160)
Rozdział 12. Pliki-widma (165)
- 12.1. Cel: przechowywanie obrazów i innych dużych zasobów (166)
- 12.2. Antywzorzec: przekonanie o konieczności stosowania plików (167)
- 12.3. Jak rozpoznać ten antywzorzec (171)
- 12.4. Usprawiedliwione użycia tego antywzorca (172)
- 12.5. Rozwiązanie: stosowanie typów danych BLOB (173)
Rozdział 13. Strzelanie indeksami (177)
- 13.1. Cel: optymalizacja wydajności (178)
- 13.2. Antywzorzec: stosowanie indeksów bez żadnego planu (179)
- 13.3. Jak rozpoznać ten antywzorzec (184)
- 13.4. Usprawiedliwione użycia tego antywzorca (184)
- 13.5. Rozwiązanie: zasada MENTOR dla indeksów (185)
Część III. Antywzorce zapytań (193)
Rozdział 14. Strach przed nieznanym (195)
- 14.1. Cel: odróżnianie brakujących wartości (196)
- 14.2. Antywzorzec: stosowanie NULL jako zwykłej wartości (lub odwrotnie) (197)
- 14.3. Jak rozpoznać ten antywzorzec (201)
- 14.4. Usprawiedliwione użycia tego antywzorca (202)
- 14.5. Rozwiązanie: stosowanie NULL jako unikatowej wartości (203)
Rozdział 15. Niejasne grupy (209)
- 15.1. Cel: uzyskiwanie wiersza z największą wartością w skali grupy (210)
- 15.2. Antywzorzec: odwołania do niegrupowanych kolumn (211)
- 15.3. Jak rozpoznać ten antywzorzec (214)
- 15.4. Usprawiedliwione użycia tego antywzorca (215)
- 15.5. Rozwiązanie: 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 użycia tego antywzorca (227)
- 16.5. Rozwiązanie: brak ustalonej kolejności... (228)
Rozdział 17. Wyszukiwarka nędzarza (233)
- 17.1. Cel: pełne przeszukiwanie tekstu (234)
- 17.2. Antywzorzec: predykaty dopasowywania wzorców (235)
- 17.3. Jak rozpoznać ten antywzorzec (236)
- 17.4. Usprawiedliwione użycia tego antywzorca (237)
- 17.5. Rozwiązanie: stosowanie narzędzi odpowiednio dobranych do realizowanych zadań (237)
Rozdział 18. Zapytanie-spaghetti (251)
- 18.1. Cel: ograniczenie liczby zapytań SQL-a (252)
- 18.2. Antywzorzec: rozwiązanie złożonego problemu w jednym kroku (253)
- 18.3. Jak rozpoznać ten antywzorzec (256)
- 18.4. Usprawiedliwione użycia tego antywzorca (257)
- 18.5. Rozwiązanie: dziel i zwyciężaj (257)
Rozdział 19. Ukryte kolumny (263)
- 19.1. Cel: ograniczyć ilość wpisywanego kodu (264)
- 19.2. Antywzorzec: skrót prowadzący na manowce (265)
- 19.3. Jak rozpoznać ten antywzorzec (267)
- 19.4. Usprawiedliwione użycia tego antywzorca (268)
- 19.5. Rozwiązanie: należy wprost nazywać kolumny (269)
Część IV. Antywzorce wytwarzania aplikacji (273)
Rozdział 20. Czytelne hasła (275)
- 20.1. Cel: odzyskiwanie lub resetowanie haseł (276)
- 20.2. Antywzorzec: przechowywanie haseł w formie zwykłego tekstu (276)
- 20.3. Jak rozpoznać ten antywzorzec (279)
- 20.4. Usprawiedliwione użycia tego antywzorca (280)
- 20.5. Rozwiązanie: przechowywanie zabezpieczonych kodów haseł (281)
Rozdział 21. Wstrzykiwanie SQL-a (289)
- 21.1. Cel: pisanie dynamicznych zapytań języka SQL (290)
- 21.2. Antywzorzec: wykonywanie niesprawdzonych danych wejściowych jako kodu (291)
- 21.3. Jak rozpoznać ten antywzorzec (299)
- 21.4. Usprawiedliwione użycia tego antywzorca (300)
- 21.5. Rozwiązanie: nie ufać nikomu (301)
Rozdział 22. Obsesja czystości pseudokluczy (309)
- 22.1. Cel: sprzątanie danych (310)
- 22.2. Antywzorzec: wypełnianie luk (311)
- 22.3. Jak rozpoznać ten antywzorzec (314)
- 22.4. Usprawiedliwione użycia tego antywzorca (314)
- 22.5. Rozwiązanie: zapomnieć o problemie (315)
Rozdział 23. Przymykanie oczu na zło (321)
- 23.1. Cel: pisać mniej kodu (322)
- 23.2. Antywzorzec: ścinanie zakrętów (323)
- 23.3. Jak rozpoznać ten antywzorzec (326)
- 23.4. Usprawiedliwione użycia tego antywzorca (327)
- 23.5. Rozwiązanie: elegancka obsługa błędów (327)
Rozdział 24. Immunitet dyplomatyczny (331)
- 24.1. Cel: stosowanie najlepszych praktyk (332)
- 24.2. Antywzorzec: kod SQL-a jako obywatel drugiej kategorii (333)
- 24.3. Jak rozpoznać ten antywzorzec (334)
- 24.4. Usprawiedliwione użycia tego antywzorca (335)
- 24.5. Rozwiązanie: ustanowienie możliwie szerokiej kultury jakości (336)
Rozdział 25. Magiczna fasola (347)
- 25.1. Cel: upraszczanie modeli w architekturze model-widok-komponent (348)
- 25.2. Antywzorzec: model jako rekord aktywny (Active Record) (350)
- 25.3. Jak rozpoznać ten antywzorzec (356)
- 25.4. Usprawiedliwione użycia tego antywzorca (357)
- 25.5. Rozwiązanie: model zawierający rekord aktywny (358)
Dodatki (365)
Dodatek A. Reguły normalizacji (367)
- A.1. Co to oznacza, że baza jest relacyjna? (368)
- A.2. Mity dotyczące normalizacji (371)
- A.3. Czym jest normalizacja? (372)
- A.4. Zdrowy rozsądek (383)
Dodatek B. Bibliografia (385)
Skorowidz (387)
Kategoria: | Bazy danych |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-4714-9 |
Rozmiar pliku: | 3,5 MB |