Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Prywatne Wiadomośći
Forum PHP.pl > Forum > Przedszkole
Analka
Witam


Mam tylko jedno pytanie smile.gif

Czy ten sposób jest optymalny dla średniej wielkości strony? Dziennie 200uu.

Schemat bazy danych PM:

-Id
-Od (id usera)
-Do (id usera)
-Topic
-Desc
-Time (unix)
-Status (0 - nieprzeczytana, 1 - przeczytana, 5 - nadawca)

Przy wysyłaniu PM tworzy dwa rekordy jeden ma status 0 drugi 5 i tak wiem kogo jaka wiadomość. Więc można spokojnie usuwać ją z swojej skrzynki.
Crozin
Po co dublujesz wpisy?
1. Gdy tylko to możliwe staraj się nigdy nie usuwać danych z bazy - oznaczaj je jedynie jako usunięte. W tym przypadku potrzebne będą Ci dwie dodatkowe kolumny wskazujące na datę skasowania przez nadawcę i odbiorcę, bądź nawet jedna typu SET jeżeli nie zależy Ci za zachowaniu daty skasowania.
2. Podobnie jest w przypadku oznaczania przeczytana/nieprzeczytana.

Taka struktura bazy umożliwia Ci wykonanie bardzo prostego i głupiego systemu prywatnych wiadomości na wzór tego dostępnego na tym forum. Zauważ, że prywatne wiadomości najczęściej przyjmują formę konwersacji na dany temat, a nie kompletnie odseparowanych wiadomości. Powinieneś raczej dążyć do stworzenia bardzo prostego czatu, czegoś na wzór:

Konwersacja:
- id
- nadawca
- adresat
- temat
- status_nadawca (odczytana/nieodczytana)
- status_adresat (j/w)
- data utworzenia
- data ostatniej aktywności
- ...

Wiadomość:
- id
- konwersacja
- autor
- treść
- data utworzenia
- ...
Helid
Spokojnie da radę. Utwórz tylko dobre pola (dla statusu możesz np. dać enum). Nie zapomnij o indeksach na polach z id użytkownika.
analka
Dzięki smile.gif

A czemu enum? nie lepiej id INT(1) ?

I tak samo dla pól które nie koniecznie są uzupełniane dać varchar?? zamiast text?
Crozin
Cytat
A czemu enum? nie lepiej id INT(1) ?
Bez znaczenia jeżeli chcesz przechowywać jedynie informację TAK/NIE. W momencie, gdybyś chciał przechowywać nieco więcej rodzajów informacji, np. TAK/NIE/MOŻE-TAK/MOŻE-NIE/itp. ENUM jest o tyle lepszy, że zamiast jakiś magicznych numerów 1, 2, 3, 4, 5... masz sensowną informację dla człowieka.
Cytat
I tak samo dla pól które nie koniecznie są uzupełniane dać varchar?? zamiast text?
Jeżeli pole nie jest konieczne powinno być NULL-em. Co do różnicy pomiędzy VARCHAR, a TEXT: http://stackoverflow.com/questions/2023481...varchar-vs-text
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.