Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL]Jedna czy dwie tabele?
Forum PHP.pl > Forum > Przedszkole
henio
Mam pytanie, czy z punktu widzenia wydajności bazy danych bardziej opłaca się mieć taką strukturę:
tabela kluby: id (int), nazwa (varchar), herb (varchar), prezes (varchar), barwy (varchar), adres (varchar) (wszystkie te kolumny są not null) oraz sukcesy (text i null)
CZY
tabele kluby: id (int), nazwa (varchar), herb (varchar), prezes (varchar), barwy (varchar), adres (varchar) (wszystkie te kolumny są not null) oraz kluby_sukcesy: id_klub (int), sukcesy (text i null)
phpion
Ogólnie powinno się unikać pakowania do tabel kolumn, które mogą przyjąć wartości NULL. To by więc sugerowało użycie 2 tabel. Ważniejszym jednak elementem przemawiającym za 2 tabelami jest to, że 1 klub może mieć wiele sukcesów. Używając 1 tabeli musiałbyś pakować te "sukcesy" do jednego pola TEXT, natomiast mając 2 tabele możesz utworzyć ładną relację, dzięki której będziesz mógł sortować i filtrować sukcesy w dowolny sposób.

Reasumując: 2 tabele.
z3L
Cytat(henio @ 3.08.2009, 11:24:03 ) *
Mam pytanie, czy z punktu widzenia wydajności bazy danych bardziej opłaca się mieć taką strukturę:
tabela kluby: id (int), nazwa (varchar), herb (varchar), prezes (varchar), barwy (varchar), adres (varchar) (wszystkie te kolumny są not null) oraz sukcesy (text i null)
CZY
tabele kluby: id (int), nazwa (varchar), herb (varchar), prezes (varchar), barwy (varchar), adres (varchar) (wszystkie te kolumny są not null) oraz kluby_sukcesy: id_klub (int), sukcesy (text i null)


Prawdę mówiąc przy 1 i 2 strukturze tabeli wykonasz tylko jedno zapytanie , lecz później będziesz musiał użyć explode, trochę więcej kombinowania z usuwaniem sukcesu itd. Więc ja osobiście polecam 2 strukturę , gdyż zawsze będziesz mógł dodać dodatkowe pole, typu data sukcesu i nie sprawi Ci to żadnego problemu. Jeżeli nie planujesz poszerzać tabel, to jest to bez znaczenia które rozwiązanie wybierzesz, tylko przy 1 czeka Cię więcej pracy.
henio
Ja planuje zrobić po prostu pole tekstowe gdzie ręcznie będzie się wpisywać dane typu: Puchar Anglii: 2000, 2001, 2004, 2006;
phpion
Rób jak uważasz. Bardziej logicznym i wygodniejszym (i poprawnym!) wyjściem byłoby oparcie tego na 2 tabelach.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.