Autor Zpráva
Kcko
Profil
Ahoj,

vytvářím aplikaci soukromé pošty.

Vše mám vyřešeno krom možnosti systémové zprávy. dále jen SM

Modelová ukázka:

Na webu je 1000 uživatelů, administrátor pošle SM všem. Na nelze odpovědět.

Řeším jak ji ukládat.

1/ Bud ji uložím všem uživatelům, tj. zpráv (abych mohl sledovat příznaky: přecteno 1|0, datum přečtení, smazáno 1|0 atd.)

Admin pošle 5 SM a v DB je 5000 zpráv, což je poměrně hodně.

2/ Mohu také poslat SM do zvláštní tabulky a příznaky sledovat v jiné tabulce (Nikdy si SM nepřečte všech 1000 uživatelů, ale třeba jen 700).

Tento případ je horší o to, že se bude hůře skládat SQL dotaz a úspora místa už také není značná (1000 a 700).

Nezná někdo optimálnější řešení? Jinak bych zvolil 1/
jenikkozak
Profil
Kcko:
Tento případ je horší o to, že se bude hůře skládat SQL dotaz a úspora místa už také není značná (1000 a 700).
Ale je. První model zahrnuje 1000 zpráv + 1000 příznaků. Druhý model obsahuje jedinou zprávu a 0 - 1000 příznaků.
Kcko
Profil
jenikkozak:
Jasně ale těch příznaků taky bude víc a není to relace 1:n ale vztahuje se ten příznak ke zprávě, zjednoduššeně

id | userFrom | UserTo | text ... | deleteUserFrom | deleteUserTo | readUserFrom ...atd

Ale chápu co myslíš, jen prostě mi chybí nějaký model č. 3 :-)
Kacko
Profil
Doporucuji to resit takto:

message
id | text ...

connections
id | fk_user_from_id | fk_user_to_id | fk_message_id

a nad usery hodit primary_key
Alphard
Profil
Kcko:
Jde nějak odhadnout, kolik procent budou systémové zprávy tvořit ze všech zpráv a jestli budou dlouhé?
Je to podle mě významné hledisko při rozhodování jestli komplikovat strukturu aplikace kvůli ušetření paměťové náročnosti. Jinak je mi bližší model 1.

Chybějící 3 model by možná bylo neřešit systémová upozornění přes zprávy, ale prostě je někam uživateli vypsat a neřešit příznaky. Zobrazovat se bude, dokud ji admin nesmaže, v některých systémech jsem to tak viděl.
Kcko
Profil
Kacko:
Obecně jsem nadhodil strukturu tabulky, ve skutečnosti je tabulek víc a model si samozřejmě umím poskládát, primárně jsem chtěl ovšem pořešit systémové zprávy, nebyl jsem si zcela jist, ovšem díky.

Alphard:
No nelze, systémových zpráv moc nebude, cca 1-2x týdně, ale uživatelů je hodně. Když nad tím tak přemýšlím tak krom prostého snadného joinování by se to v 2 případě v různých výpisech velmi zesložištilo, takže model 2 asi zavrhuji.

Model 3 vyznívá zajímavě, ještě to promyslím, jestli admin příznaky přečtení | smazání potřebuje vidět. Pak by se tedy skutečně jen poslala 1 zpráva a napojila se na ty ostatní.

Díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: