投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/2/14 13:40:28
> レコード新規登録後に見たか、更新後見たかを
それを見るのは誰ですか?

「ログインユーザーが、自身宛の未読通知を見たい」という意図なのか
「通知を出した上司が、まだ読んでいない部下を確認したい」という意図なのかで
データベース設計も変わってきます。

前者(ユーザー本人が、自身宛の未読を管理したいと意図)であれば、こんな感じでどうでしょう。

①それぞれの通知には、「最終更新日時」を記録しておく。
②各ユーザーは、「前回の通知確認日時」を記録しておく。
③ユーザーはログイン時に、2の日付以降に生成された①のレコードIDを、未読テーブルに INSERT する
④未読テーブルを更新後、2の通知確認日時を更新する。
⑤既読後は、未読テーブルからそのレコードID を DELETE する。

通知データには、「全ユーザー向け」「特定のユーザー向け」の情報があると思います。
また、通知の有効期限といったものもあるでしょうが、これらの管理をどうするかで
手順3のロジックが変わってきます。

この方法を採る場合、一度作成した通知に対して、対象者情報や通知期限を修正する場合は、
通知を削除あるいは無効化してから、新しい通知を再発行する形にする必要があるでしょう。