To pytanie może być bardziej odpowiednie dla programistów.stackexchange. Jeśli tak, przeprowadź migrację.Ile złączeń jest wykonalnych w praktyce
Obecnie rozważam złożoność typowych modeli danych. Każdy wie, że modele danych powinny być znormalizowane, jednak z drugiej strony znormalizowany model danych będzie wymagał kilku złączeń do ponownego złożenia danych później. Połączenia są potencjalnie kosztownymi operacjami, w zależności od rozmiaru użytych tabel. Więc pytanie, które usiłuję rozgryźć, brzmi: jak zwykle chodzi o tę kompromis? To znaczy. w praktyce ilu łączeń można uznać za dopuszczalne w typowych zapytaniach podczas projektowania modelu danych? Byłoby to szczególnie interesujące przy liczeniu wielu połączeń w pojedynczych zapytaniach.
Jako przykład załóżmy, że mamy użytkowników, którzy posiadają domy, w których są pokoje, które mają szuflady, które zawierają przedmioty. Trivially normalizowanie tego za pomocą tabel dla użytkowników, domów, pokojów, szuflad i przedmiotów w sensie wyjaśnionym powyżej, wymagałoby później, abym dołączył do pięciu tabel, podczas pobierania wszystkich elementów należących do określonego użytkownika. Wydaje mi się to bardzo skomplikowane.
Najprawdopodobniej dotyczy to również rozmiarów stołów. Łączenie pięciu tabel z niewielką ilością danych nie jest tak złe, jak trzy tabele z milionami wierszy. Czy jest to błędne?
5 stolików to tylko 4 łączenia. Naprawdę niewiele. I nie będziesz potrzebować danych ze wszystkich 5 tabel we wszystkich zapytaniach. Jeśli masz mniej tabel (zdenormalizowanych), będziesz miał większe tabele, którymi możesz się zająć we wszystkich zapytaniach. –
Jak powiedział Ypercube, 5 tabel to niewiele. (Zazwyczaj próbuję ograniczyć łączenie tabel w pojedynczym zapytaniu, aby wizualnie dopasować się do ekranu - oznacza to około 20 tabel lub więcej :)) Ale jeśli w przykładowej aplikacji większość obciążeń pochodzi od zapytań o elementy użytkownika, to możesz rozważyć dodanie nadmiarowości, dodawanie identyfikatora użytkownika do tabeli elementów - to sprawia, że twoje zapytania są znacznie szybsze. Oczywiście musisz starannie zaprojektować wstawianie rekordów i aktualizację logiki, aby nie tworzyć sprzecznych danych. Jak zawsze, nie ma rozwiązania "jeden rozmiar dla wszystkich". – Arvo