Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Offtopic] System komentarzy na jednej tabeli
Forum PHP.pl > Forum > Przedszkole
maly_pirat
Cześć.

Temat bardziej podchodzi pod "burze mózgów", chodzi mi o plusy i minusy systemu komentarzu na jednej tabeli.
Co mam na myśli? Mamy parę modułów: newsy, artykuły, forum i komentarze użytkowników byśmy przechowywali tylko w jednej tabeli (np. comment_table) zamiast w paru (np. news_comment, art_comment, forum_comment) i teraz mam pytanie, czy takie rozwiązanie jest dobre?

Załóżmy, że serwis będzie miał "branie" - czyli będzie masa komentarzy - będą problemy z optymalnością, itp sprawami?

Przykładowa struktura:
Kod
| komentarz_id | modul_id | tresc_id | autor | tresc |


nie trzeba nic tłumaczyć, modul_id - będzie zawierał liczby (np. 1 - NEWSY, 2 - ARTY, 3 - FORUM), przez co jak będę pobierał np. komentarze dla newsa o ID #522 to zapytanie będzie wyglądać w postaci:

SELECT * FROM comment_table WHERE modul_id = '1' AND tresc_id = '522'

Jest to dobre rozwiązanie, czy jednak ma w sobie "minusy", które pominąłem?
thek
Zależy jak spojrzeć... Plusem jest na pewno to, że masz wszystko w jednej tabeli zamiast rozbite na kilka, co dla wielu może mieć jakiś sens pod kątem "porządku", Na pewno jest nim też ujednolicenie komentarzy we wszystkich działach. Ale minusów jest więcej.
1. Musisz za każdym razem używać where określając jakiego działu tyczy co wymusza posiadanie tam indeksu (szybkość)
2. Id nie są już unikatowe bo newsy z id =1 i artykul z id = 1 to nie to samo. A tu też potrzebny indeks. Użycie autoincrement rozwiązuje problem, ale pierwszy artykuł może mieć id 10 lub więcej, co fałszuje obraz. Nigdy nie wiesz bez count ile tak naprawdę masz czego w bazie.
3. W razie usunięcia z portalu jakiejś części musisz usuwać wiele wpisów. Lepiej dropnąć całą tabelę niż wyszukiwać wpisy dla niej z jednej dużej i usuwać.
4. Rozbicie na kilka tabel daje mimo wszystko lepszy porządek i zorganizowane. Dobre nazewnictwo daje Ci wgląd prosty w tabele i ułatwia pisanie zapytań.
5. Komentarze dla różnych części mogą się różnić wewnętrzną strukturą danych. Wrzucenie wszystkiego do jednego wora wymusza wprowadzeniekolumny, która w innych przypadkach zawsze będzie pusta. Innymi słowy pojawiać się mogą nieprzydatne (nie wykorzystywane) dane.
6. Inną cechą związaną z punktem 5 jest większa kontrola nad systemem poprzez możliwość dopasowania systemu komentarzy do danego działu. Jeśli zechcesz dodaszpo prostu lub usuniesz kolumnę bez wpływu na pozostałe działy.
viking
Poza tym jak chciałbyś to związać kluczem obcym (np. topic 130568, news 10, art 10345)?
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.