![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Aktualnie pracuję nad skryptem dość prostego forum, właściwie jestem na etapie jego projektowania. Zależy mi na tym, żeby jak najefektywniej zaplanować strukturę bazy.
Główne założenia: - kategorie - fora - tematy - posty - wiadomo. Posty nie będą wyświetlane w formie drzewka, po prostu tak jak w czystym phpbb2 [jeden pod drugim]. Za to skrypt musi obsłużyć nieograniczoną głębokość kategorii... - użytkownicy, w profilu tylko 2 rzeczy będą wpisane na sztywno: login i hasło. resztą będzie można zarządzać [dodawać edytować] w administracji - inne elementy takie jak w phpbb2, ale w to nie wnikam, bo z tym nie mam większych wątpliwości jak na razie. Co do rozwiązania dynamicznych pól użytkowników, planuję zrobić takie tabele: col_users, kolumny: - id - name [wyświetlana nazwa] - data [informacje w formie odpowiednio generowanego ciągu, o typie danych w kolumnie, np. możliwych wyborach /płeć: mężczyzna, kobieta/ w zależności od typu danych] users, kolumny: - id - login - password - inne 'dynamiczne' kolumny, o nazwach takich jak id z tabeli. będą im przypisane własności przy ich dodawaniu, np. text dla dłuższych ciągów, tinyint dla checkboxów etc. Szczerze nie podoba mi się to rozwiązanie z kolumną 'data', ale nie wiem jak to zrobić 'czyściej', zachowując przy tym funkcjonalność... Jakieś pomysły? Kolejna sprawa, czyli kategorie na forum: tabela categories, kolumny: - id - name [wyświetlana nazwa] - description [opis kategorii] - parent_id [identyfikator kategorii nadrzędnej, w przypadku kategorii najwyższego poziomu jest to 0] - position [pozycja kategorii względem innych na tym samym poziomie głębokości] - level [poziom głębokości kategorii, nie jestem pewien czy jest to potrzebne, ale pomoże uprościć kilka zapytań] Oczywiście w kategoriach będą fora, ale to inna tabela... zasugerujmy, że będzie w niej kolumna cat_id, zawierająca identyfikator kategorii w której znajduje się forum. No i teraz problem... jak np. pobrać pełną listę kategorii i ją wyświetlić, uzwględniając głębokość? Można niby jakoś rekurencyjnie to budować, wywołując funkcję wykonującą zapytanie dla danej głębokości i generującą poszczególne poziomy kategorii. Jednak przy większej ich liczbie, okaże się, że na stronie głównej forum wykonuje się 20 zapytań... Da się to jakoś rozwiązać w lepszy sposób? Póki co to tyle, na pewno będę miał więcej pytań, ale na razie nasunęły mi się tylko te dwa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Proszę o pomoc i pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Temat przenoszę na bazy danych.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 111 Pomógł: 25 Dołączył: 23.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat No i teraz problem... jak np. pobrać pełną listę kategorii i ją wyświetlić, uzwględniając głębokość? Można niby jakoś rekurencyjnie to budować, wywołując funkcję wykonującą zapytanie dla danej głębokości i generującą poszczególne poziomy kategorii. Jednak przy większej ich liczbie, okaże się, że na stronie głównej forum wykonuje się 20 zapytań... Da się to jakoś rozwiązać w lepszy sposób? Taka lista kategorii zmienia się rzadko można użyć cache'a. Więc się tym nie przejmuj. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Taka lista kategorii zmienia się rzadko można użyć cache'a. Więc się tym nie przejmuj. Ok, tak więc zrobię to zapewne w taki sposób jak napisałem. Pozostaje jednak sprawa użytkowników, tak więc temat nadal uważam jako aktualny i proszę o dalszą pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 16:31 |