mysql - zapytanie dla kibiców

pyt Q

chodzi i tylko dla mnie. Faktem jest, że zapytanie moje ma (przy pisaniu tak by można było się doczytać) około 50 linii :)
Zależy jakiej długości jest linia :-) Mnie wyszło 3 linijki: SELECT t1.team_name as gospodarze, t1.team_name as goscie, * FROM teams t1, teams t2, leagues l, games g WHERE g.league_id=l.id and g.game_host_id=t1.id and g.game_host_id=t2.id
Coś league_id chyba jest nadmiarowo w teams
Można ewentualnie z JOIN. Wyjdzie chyba jedną linię więcej.

odp A

hmmm, dzieki za odpowiedz ale chyba nie o to chodzi, przypominam: "no i potrzebuję zbudować aktualną tabelę ligową :)
No to faktycznie nie przyłożyłem się do zrozumienia. Na swoje usprawiedliwienie mam, że nie do końca było jasno napisane co jest w tabelach.
Aczkolwiek w: table teams(id, league_id, team_name) league_id jest nadmiarowe.
Krzysztof

odp A

jak widac w tabeli games sa mecze z roznych lig.
A jeden zespół może być jednocześnie w kilku ligach? A co będzie jak zmieni ligę? Zespół jest przypisany do meczu, mecz do ligi. I to wystarczy.
Krzysztof

odp A

itd itp, jest wiele innych rzeczy dla których league_id jest potrzebne.
Nie jest potrzebna. Baza dążąc do ideału powinna zostać doprowadzona do którejśtam postaci normalnej. Czyli w tym przypadku wystarczy stworzyć tabelę: przyporzadkowanie(id_zespolu, id_ligi) W aktualnym stanie rzeczy masz niepotrzebnie powtarzające się dane w tabeli zespoły. Tabela nadmiarowa, jaka jest aktualnie, oczywiście też może sobie działać. W dużych bazach często trzyma się wyliczone dane aby nie obciążać nadmiernie bazy liczeniem ich np. co minutę, choć można by je wyliczać za każdym razem.
Pytałeś o optymalizację, więc napisałem. Baza jest mała więc powinna być raczej sprowadzona do postaci normalnej.
Krzysztof

Dodaj odpowiedź

Tytuł:

Mail: (w celu weryfikacji posta)