Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Zaplanowanie bazy danych dla forum
l0ud
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kszychu
post
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.
Go to the top of the page
+Quote Post
Kowalikus
post
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.
Go to the top of the page
+Quote Post
l0ud
post
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Cytat(Kowalikus @ 18.02.2008, 16:29:29 ) *
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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 16:31