1

ユーザーが画像をアップロードしたり、友達リクエストを送信したり、メッセージを投稿したりできる、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 になります。このテーブルには、このフレンドシップ リクエストに関するすべての詳細が含まれています。

問題は、それがデータベースを設計するための適切なアプローチであるかということです。たとえば、フレンドシップ テーブルにデータが入力されていると仮定して、フレンドのすべての最新イベントを最適に並べ替えるにはどうすればよいでしょうか。パフォーマンスとコードの品質を向上させるために、キャッシングなどに使用することをお勧めするテクノロジはどれですか?

4

1 に答える 1

1

とても良いアプローチです。ただし、データベースが大きくなる場合は、パフォーマンスを向上させるためにフィールド「meta_field」にインデックスを付ける必要があります。そのフィールドのインデックス作成は、phpMyAdmin を使用して簡単に実行できます。

于 2012-12-08T13:48:59.250 に答える