Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][Offtopic] System komentarzy na jednej tabeli
maly_pirat
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 13.06.2007

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Poza tym jak chciałbyś to związać kluczem obcym (np. topic 130568, news 10, art 10345)?


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 01:02