ユーザー アクティビティをログに記録するための適切なデータベース設計についてアドバイスをお願いしたいと思います。
現在、ユーザーがウェブサイト上の記事を投稿/編集/削除できる単純なウェブサイトにこのようなアプローチを実装しています。
テーブルログブック
- log_id
- log_change[Enum: new/edit/remove]
- log_date
- member_id
- post_id
テーブルポスト
- post_id
- post_title
- etc....
テーブル メンバー
- member_id
- member_username
- member_pwd
- etc..
このテーブルを使用すると、ユーザーが記事の新しい投稿 (または編集/削除) を行うたびに、ログブックに記録されます (発生時刻とともに)。
ただし、ユーザーが記事を投稿できるだけでなく、(システムから) ログイン/ログアウト、購入 (トランザクション) などの他のことを実行できる大規模なシステムを扱っている場合はどうでしょうか。
モジュールごとに異なるテーブルを使用する必要がありますか? たとえば、システムに記事の投稿、電子商取引などのモジュールがある場合、次のログテーブルがあります。
- 記事ログ
- 電子商取引ログ
各テーブルが対応する各モジュールのアクティビティを記録する場所。