Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Prywatne Wiadomośći
-Analka-
post
Post #1





Goście







Witam


Mam tylko jedno pytanie (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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
- ...

Ten post edytował Crozin 26.12.2013, 18:39:29
Go to the top of the page
+Quote Post
Helid
post
Post #3





Grupa: Zarejestrowani
Postów: 280
Pomógł: 20
Dołączył: 12.12.2007
Skąd: 127.0.0.1

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


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.
Go to the top of the page
+Quote Post
-analka-
post
Post #4





Goście







Dzięki (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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
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: 23.08.2025 - 18:47