Post
#1
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Witam.
Jestem w trakcie pisania nowego forum do projektu, kiedy przyszedł mi do głowy jeden pomysł: aby trzymać tematy i posty w jednej tabeli, a właściwie pozbyć się konstrukcji ramowej powszechnie znanego rozwiązania jakim jest trzymanie postów i ram tematów w osobnej tabeli. Tabela miałaby mniej więcej taką budowę:
Doszukałem się kilku zalet i wad: + łatwa implementacja, szybkie usuwanie tematów, bez sprawdzania, czy ten nie jest czasem pierwszym (temat) - odejście od sprawdzonego już, szybkiego i optymalnego rozwiązania - wolny listing tematów - nagromadzenie dodatkowych pól, których nie przedstawiłem w powyższej strukturze, czyli post_status_locked, post_status_sticked itd, co spowoduje nagromadzenie danych, choćby zero jedynkowych. Prosiłbym o opinie i podzielenie się doświadczeniami w projektowaniu fór. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Cytat czy ten nie jest czasem pierwszym (temat) A po co takie sprawdzanie? Ja mam standardowo, mniej wiecej tak Kod id (int) topic_name (varchar) last_post (int) ... Dzięki zachowywania id_ostatniego_postu w bardzo latwy i szybki sposob moge go wyciagnac i przedstawic w listingu. Jezeli chodzi o kategorie to polecam drzewo left right. Jednym latwym i szybkim zapytaniem wyciagniesz ostatni post, ostatni temat z wszystkich podkategorii itd. Rozdzielenie tabel na takie czesci jest bardzo wydajne wiec nie widze naprawde dobrego powodu dla ktorego warto od nich odchodzić. |
|
|
|
Post
#3
|
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
struktura bazy wydaje się być fajna dla mniejszych projektów ,trochę więcej miejsca pewnie zajmie ale imho warto spróbować . Ale dał bym jeszcze post_user_id, post_user_ip (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
|
Post
#4
|
|
|
Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%)
|
Ostatecznie wybrałem konstrukcję ramową, standardową. Argument Spawnm'a mnie całkowicie przekonuje - to można zaimplementować w małych projektach.
Ale i tak czuję, że wynalazek postów i tematów w jednej tabeli jest dość dobry. Na podobnej zasadzie działają drzewa kategorii w Wordpressie (parent). Ale w tym miejscu zdaję sobię sprawę, że forum o coś cięższego niż drzewo kategorii... na pewno troszkę więcej danych. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.07.2007 Ostrzeżenie: (0%)
|
Niekoniecznie będzie cięższa. Jeśli wydzielisz bloby (np. pola TEXT) do osobnej tabeli, a zostawisz metadane to powinno całkiem nieźle się skalować.
Ten post edytował Elf 26.06.2009, 22:57:11 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 7 Dołączył: 2.07.2005 Skąd: Lublin Ostrzeżenie: (0%)
|
Taki może mały offtop, ale póki to jeszcze możliwe i uzywasz MySQL to proponuję projektowanie struktury bazy na silniku InnoDb zamiast MyISAM. Całkiem niedawno musiałem robić forum dla pewnego serwisu społecznościowego i niestety musiałem bazować na starej strukturze, która działała na myisam - po prostu koszmar, podczas programowania powstaje tyle róznych możliwości straty integralności danych, że można się poszlastać :-/
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
A jakie widzisz wady w rozwiązaniu opartym na dwóch tabelach, jednej z wątkami, drugie z postami? Bo wynajdujesz koło od nowa, czyli masz zapewne jakieś powody?
Cytat + łatwa implementacja Mi się wydaje, że implementacja będzie wręcz trudniejsza. Ot sprawdzanie ilości postów w wątku? COUNT()? Przechowywanie tej liczby przy każdym poście? Nie... to nie wypaliCytat szybkie usuwanie tematów Cała reszta może zostać usunięta na drodze kluczy obcych. |
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 13:18 |