PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Stránky: 1
Ahoj,
právě jsem se v jednom projektu dostal k místu, kdy se zabývám
příspěvky (komentáři/posty ve fóru) a indikováním, zda je přihlášený
uživatel již přečetl nebo ne.
Jaký je ideální (počtem SQL dotazů a diskovou kapacitou nejméně náročný) způsob, jak tyto informace zanést do databáze?
Mně po chvilce přemýšlení a zamítáním nejhorších řešení :)) napadl tento způsob:
user_id //který uživatel příspěvky přečetlrelated_id //ke kterému záznamu (článku/threadu ve fóru)
příspěvky patřítable //např. articles/comments – mám univerzální
komponentu, která mi sdružuje pod sebe různé druhy uživ. přís`pěvků,
proto tyto dva sloupcetime //čas posledního přečtení, případně čas
posledního přečteného příspěvku v případě stránkováníSloupec related_id (a případně i další) by mohl být NULL, indikovalo by to pak stav po kliknutí „označit vše jako přečtené“, ať se mi databáze z těch INSERTů nezblázní.
Operace s touto strukturou by byly následující:
time by byl uložen aktuální čas nebo čas
posledního zobrazeného příspěvku.SELECTu bych si jednoduše naJOINoval, zda aktuální
uživatel (nepřihlášené neřeším, těm žádné indikace nových
příspěvků zobrazovat nebudu) již daný příspěvek četl nebo ne. Všechny
příspěvky, co náleží k danému článku/threadu a jsou starší než
datum posledního indikátoru přečtení budu považovat za přečtené…Co vy na to? Existuje nějaký méně náročný způsob či má tento nějaké mouchy?
Editoval LastHunter (12. 10. 2009 23:03)
Vypadá to rozumně..
Pokud bys použil místo obyčejného insertu tento rozšířený – http://dev.mysql.com/…plicate.html, pak Ti ani nebude nic bobtnat..