księgarnia informatyczna

Książka informatyczna wydawnictw: BTC Edition Exit Helion Help Microsoft Press Mikom Nakom PJWSTK Read Me Robomatic Skalmierski Tortech Translator WKŁ WNT WSISIZ



Antywzorce języka SQL Jak unikać pułapek podczas programowania baz danych         HELION          69.00zł Księgarnia informatyczna komputeks.pl Zobacz, jak tego nie robić.

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!

Ucz się na błędach... Cudzych!

Rozdziały:

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)


Antywzorce języka SQL Jak unikać pułapek podczas programowania baz danych

adobe algorytmy apache asp autocad asembler bsd c++ c# delphi dtp excel flash html java javascript linux matlab mysql office php samba voip uml unix visual studio windows word

Księgarnia Informatyczna  zaprasza.