Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zaplanowanie bazy danych dla forum
Forum PHP.pl > Forum > Bazy danych
l0ud
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 tongue.gif

Proszę o pomoc i pozdrawiam
kszychu
Temat przenoszę na bazy danych.
Kowalikus
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.
l0ud
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 smile.gif
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.