![]() |
![]() ![]() |
![]() |
![]() ![]()
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. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
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
![]() |
|
|
![]()
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. -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
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: 20.08.2025 - 05:25 |