Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Książka przeznaczona dla wszystkich, którzy mają zamiar nauczyć się dobrze projektować bazy danych korzystając z wiedzy profesjonalistów. Zapraszamy do zapoznania się z darmowym rozdziałem opisującym problem błędów zaokrągleń w języku SQL. Darmowy rozdział bardzo dobrze opisuje, w jakich przypadkach nie powinniśmy stosować typu danych FLOAT i jakim typem danych powinien być zastąpiony, aby uniknąć błędów w zaokrągleniach.

Autor: Bill Karwin
Data wydania: 2012/01
Stron: 400
[ więcej u wydawcy ]

Darmowy fragment książki w pdf
Cena książki: 69.00 zł

Okładka książki: Antywzorce języka SQL. Jak unikać pułapek podczas programowania baz danych.

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)

Książki Helion