konto usunięte

Temat: System prywatnych wiadomości

Hej.

Jak zrobić to najoptymalniej?

Mogę trzymać w bazie 1 wspólny rekord dla wysyłającego i odbierającego, ale co jeśli jeden z nich zechce skasować wiadomość? Mogę wówczas ustawić przy niej flagę w stylu is_visible, wówczas nie będzie ona faktycznie skasowana, tylko już "niewidoczna" dla jednej ze stron. Ale rekord będzie cały czas zajmował miejsce w bazie.
Z drugiej strony tworzenie dwóch rekordów dla wysyłającego i odbierającego też nie jest dobre ze względu na duplicate content.
Może jednak flagi i "znikające" wiadomości, i dopiero jeśli sender i receiver dokonają usunięcia, wówczas rekord jest kasowany z bazy?
Jakie jest wasze doświadczenie z PM?
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: System prywatnych wiadomości

Jakub Świegot:
Może jednak flagi i "znikające" wiadomości, i dopiero jeśli sender i receiver dokonają usunięcia, wówczas rekord jest kasowany z bazy?
Jakie jest wasze doświadczenie z PM?
Dokładnie takie. Mniejszy bajzel, prostsza baza - tylko trzeba mieć porządek ze statusami/flagami/bitami.

Temat: System prywatnych wiadomości

Ja bym jednak zaproponował duplikowanie wiadomości i dwie tabele:
- wysłane - tutaj trafiają wiadomości wysyłane przez usera do innych osób, są one wyświetlane w folderze wysłane
- odebrane - tutaj trafiają wysłane wiadomości przez innego użytkownika do usera je oglądającego.

Dlaczego tak? Bo każdy ma niezależne kasowanie wiadomości. Mam porządek w bazie i odwzorowanie tabel na foldery (wysłane, odebrane). Łatwą możliwość rozbudowy. Co jeśli będę chciał dodać wersje robocze itp? Dodam nową tabelę i koniec. A przy jednej tabeli i flagach... trochę zakręcone i zamotane jak dla mnie. MB kosztuje tak mało, że czasem warto porzucić koncepcje postaci normalnej na rzecz funkcjonalnośi i jasności kodu.

konto usunięte

Temat: System prywatnych wiadomości

Zgadzam się z Markiem. Lepiej myśleć przyszłościowo i mieć osobno :) Wprowadzisz np. foldery i już trzeba kombinować. Potem zechcesz wysyłkę do grupy osób i kolejny problem... itakdalej etcetera.
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: System prywatnych wiadomości

A ja uważam, że jedna wiadomość to jeden rekord w bazie, co jednak nie wprowadza bałaganu. Szczególnie że pojedyncza wiadomość może być duża (długi tekst, załączniki). Dla każdego rekordu wiadomości przechowuję ID wysyłającego oraz ID folderu, w którym ta wiadomość jest (początkowo wysłany, potem może być kosz). Jest też druga tabela, która zawiera adresatów - może być kilku dla pojedynczej wiadomości. Dla każdego adresata można mieć osobne ID folderu (odebrany, kosz) oraz status, czy wiadomość została przeczytana czy jakikolwiek inny jest potrzebny.
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: System prywatnych wiadomości

Marek Bednarczuk:
Ja bym jednak zaproponował duplikowanie wiadomości i dwie tabele:
- wysłane - tutaj trafiają wiadomości wysyłane przez usera do innych osób, są one wyświetlane w folderze wysłane
- odebrane - tutaj trafiają wysłane wiadomości przez innego użytkownika do usera je oglądającego.

Dlaczego tak? Bo każdy ma niezależne kasowanie wiadomości. Mam porządek w bazie i odwzorowanie tabel na foldery (wysłane, odebrane). Łatwą możliwość rozbudowy. Co jeśli będę chciał dodać wersje robocze itp? Dodam nową tabelę i koniec. A przy jednej tabeli i flagach... trochę zakręcone i zamotane jak dla mnie. MB kosztuje tak mało, że czasem warto porzucić koncepcje postaci normalnej na rzecz funkcjonalnośi i jasności kodu.

A duplikowanie ma wadę gdy odbiorców jest więcej niż jeden.

Temat: System prywatnych wiadomości

To fakt, ale czasem jedna wada vs zalet kilka... chyba wiesz o co mi chodzi?

konto usunięte

Temat: System prywatnych wiadomości

Chyba opcja kiedy tworzy sie w jednej tabeli wiadomosc, fizycznie rekord wiadomosci ze wszystkimi potrebnymi informacji (zalaczniki, data wyslania, przez kogo stworzony itd itp) a w innej trzymasz informacje do kogo wyslane, przez kogo i fakt czy ma byc w folderze "wyslane" czy "odebrane" itd :)

Raz na jakis czas puscisz scan sprawdzania waidomosci i porownywania czy maja jakiekolwiek odwolania z innych tabel - jesli nie, znacze ze niepotrzebne i mozna skasowac.

Następna dyskusja:

Document Management System




Wyślij zaproszenie do