Czy znasz dobre źródło, aby dowiedzieć się, jak projektować rozwiązania SQL?
Oprócz podstawowej składni języka szukam czegoś, co pomoże mi zrozumieć:
- Jakie tabele zbudować i jak je połączyć
- Jak projektować dla różnych skal (mała aplikacja kliencka do ogromnej, rozproszonej strony internetowej)
- Jak pisać efektywne / wydajne / eleganckie zapytania SQL
sql
database
database-design
scalability
ripper234
źródło
źródło
Odpowiedzi:
Zacząłem od tej książki: Relational Database Design Clearly Explained (The Morgan Kaufmann Series in Data Management Systems) (Paperback) autorstwa Jana L. Harringtona i uznałem, że jest ona bardzo przejrzysta i pomocna
a kiedy już przyspieszysz, ten też był dobry Systemy baz danych: praktyczne podejście do projektowania, wdrażania i zarządzania (International Computer Science Series) (Paperback)
Myślę, że SQL i projektowanie baz danych to różne (ale uzupełniające się) umiejętności.
źródło
Zacząłem od tego artykułu
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
Jest dość zwięzły w porównaniu z przeczytaniem całej książki i bardzo dobrze wyjaśnia podstawy projektowania baz danych (normalizacja, typy relacji).
źródło
Doświadczenie ma duże znaczenie, ale jeśli chodzi o projektowanie stołów, możesz się wiele nauczyć z działania ORMów, takich jak Hibernate i Grails, aby zobaczyć, dlaczego działają. Dodatkowo:
Przechowuj różne typy danych oddzielnie - nie przechowuj adresów w tabeli zamówień, na przykład linkuj do adresu w oddzielnej tabeli adresów.
Osobiście lubię mieć klucz całkowity lub długi zastępczy klucz w każdej tabeli (który przechowuje dane, a nie te, które łączą różne tabele, np. Relacje m: n), który jest kluczem podstawowym.
Lubię też mieć utworzoną i zmodyfikowaną kolumnę z datownikiem.
Upewnij się, że każda kolumna, którą wykonujesz „gdzie kolumna = val” w jakimkolwiek zapytaniu, ma indeks. Może nie najdoskonalszy indeks na świecie dla typu danych, ale przynajmniej indeks.
Skonfiguruj klucze obce. Skonfiguruj także reguły ON DELETE i ON MODIFY tam, gdzie ma to zastosowanie, aby kaskadowo lub ustawić wartość null, w zależności od struktury obiektu (więc wystarczy, że usuniesz tylko raz na początku drzewa obiektów, a wszystkie podobiekty tego obiektu zostaną usunięte automatycznie).
Jeśli chcesz zmodularyzować swój kod, możesz chcieć zmodularyzować swój schemat bazy danych - np. To jest obszar "klienci", to jest obszar "zamówienia", a to jest obszar "produkty" i użyj tabel łączenia / łączenia między nimi, nawet jeśli są to relacje 1: n, i być może skopiuj ważne informacje (np. skopiuj nazwę produktu, kod, cenę do tabeli order_details). Przeczytaj o normalizacji.
Ktoś inny zaleci coś zupełnie przeciwnego dla niektórych lub wszystkich z powyższych: p - nigdy nie ma jednego prawdziwego sposobu na zrobienie pewnych rzeczy, eh!
źródło
explain analyze
jeśli indeks jest korzystny.Bardzo podobał mi się ten artykuł. Http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
źródło
Head First SQL to świetne wprowadzenie.
źródło
Są to pytania, które moim zdaniem wymagają odmiennej wiedzy z różnych dziedzin.
To powiedziawszy, może chcesz przeczytać kilka książek, osobiście korzystałem z tej książki na moim kursie uniwersyteckim w bazie danych (i znalazłem przyzwoitą, ale nie czytałem innych książek z tej dziedziny, więc radzę sprawdzić kilka dobrych książek o projektowaniu baz danych).
źródło
Minęło trochę czasu, odkąd go przeczytałem (więc nie jestem pewien, ile z tego jest nadal aktualne), ale przypominam sobie, że książka Joe Celko SQL for Smarties zawiera wiele informacji na temat pisania eleganckich, skutecznych i wydajnych zapytań .
źródło