Mysql
 sql >> база данни >  >> RDS >> Mysql

Проследяване на известия като харесвания във Facebook (DB Design)

Не знам дали това е най-добрият начин да направя това, но тъй като нямам идеи от никой друг, това е, което бих направил. Надявам се този отговор да помогне и на други.

Имаме 2 маси

notification
-----------------
id (pk)
userid
notification_type (for complexity like notifications for pictures, videos, apps etc.)
notification
time


notificationsRead
--------------------
id (pk) (i dont think this field is required, anyways)
lasttime_read
userid

Идеята е да изберете известия от таблицата с известия и да се присъедините към таблицата notificationsRead и да проверите последното прочетено известие и редове с ID> notificationid. И всеки път, когато се отвори страницата с известия, актуализирайте реда от таблицата с известия.

Предполагам, че заявката за непрочетени известия ще бъде така..

SELECT `userid`, `notification`, `time` from `notifications` `notificationsRead`
WHERE 
`notifications`.`userid` IN ( ... query to get a list of friends ...) 
AND 
(`notifications`.`time` > (
    SELECT `notificationsRead`.`lasttime_read` FROM `notificationsRead` 
    WHERE `notificationsRead`.`userid` = ...$userid...
))

Заявката по-горе не е проверена. Благодарение на идеята за db дизайн от @espais



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Транзакции срещу заключващи таблици

  2. Разграничители в MySQL

  3. Mysql или/и приоритет?

  4. PDO обвързващи стойности за MySQL IN израз

  5. неуспешно търсене в пълен текст на mysql