sql >> データベース >  >> RDS >> Mysql

Facebookのような通知追跡(DBデザイン)

    これが最善の方法かどうかはわかりませんが、他の人からアイデアが得られなかったので、これを実行します。この回答が他の人にも役立つことを願っています。

    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の行を確認することです。そして、通知ページが開かれるたびに、notificationsReadテーブルから行を更新します。

    未読通知のクエリは次のようになります。

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

    上記のクエリはチェックされていません。@espaisからのdbデザインのアイデアに感謝します



    1. Postgresqlドロップビュー

    2. PDOでパスワードハッシュを使用してコードをより安全にするにはどうすればよいですか?

    3. SQL Server-クエリの短絡?

    4. T-SQLで日付をフォーマットする方法