ユーザーが画像をアップロードしたり、友達リクエストを送信したり、メッセージを投稿したりできる、PHP で書かれた Web サイトがあります。
Web サイトは CodeIgniter フレームワーク上に構築されています。
これらすべてのイベントの「ログ」が必要です。たとえば、すべての友達の最新のイベントを表示したいとします。Facebook のように、X が Y の写真を気に入ったか、Z が新しいメッセージを投稿しました。
私のデータベース構造は次のようなものです:
イベント テーブル:
ID | user_id | event_type | meta_field | date
友情、画像などのテーブルが他にもあります。
meta_filed
とはevent_type
、別のテーブルのデータを指定します。たとえば、
イベント テーブル:
1, 4, 3, 12, 2012-12-08
3 はイベントがフレンドシップ リクエストであったことを示し、12 はフレンドシップ テーブルの ID 12 になります。このテーブルには、このフレンドシップ リクエストに関するすべての詳細が含まれています。
問題は、それがデータベースを設計するための適切なアプローチであるかということです。たとえば、フレンドシップ テーブルにデータが入力されていると仮定して、フレンドのすべての最新イベントを最適に並べ替えるにはどうすればよいでしょうか。パフォーマンスとコードの品質を向上させるために、キャッシングなどに使用することをお勧めするテクノロジはどれですか?