2012-02-17 13 views
0

Facebookのようなフィードアイテムを使って作成したページがあります。私が現在直面している問題は、 'delete logic'を理解する最良の方法です。メッセージがつながっているページを削除する最も良い方法は?

  1. フィード項目
  2. コメント
  3. など、私が持っている

:私は、このページに「接続されたメッセージを」削除したい - それは、ユーザーがページを削除した場合、ありますfeedItems、コメントなどを保持するMySQLテーブルの数ですが、ユーザーがページを削除した場合、これをすべて削除する最も「最適な方法」がわかりません。

誰かに助言できますか?私はStackOverflowのへの同様のを推測する - 質問が削除された場合、

  1. 質問
  2. 答え
  3. すべてのコメント

などを削除するための最良の方法は何ですか?

答えて

0

InnoDBを使用している場合は、ON DELETE CASCADEの外部キーを使うのが一番簡単な方法です。このオプションは、外部キーが参照する行が削除されたときにMySQLがテーブル内の行を削除するようにします。

たとえば、プライマリキーIDを持つテーブル "question"があり、外部キー "question_id"を持つテーブル "answers"がある場合、質問が削除されると、その "answers"のすべての行同じquestion_idが含まれていますが削除されます。

そうでなければ、テーブルごとに1つずつ、複数の削除文を書く必要があります。

+0

回答ありがとうございました:)実際に質問[例えば]を削除するか、単にデータを隠す方が良いですか?つまり、ユーザーは「削除」をヒットしますが、それは隠されているだけです – Andy

+0

まあ私は本当に答えることはできません、それはあなたのアプリケーションの要件に依存します。あとでデータを元に戻すことができるようにしたい場合や、リンクされたアイテムの情報がまだ必要な場合は、データを非表示(ソフト削除)することをお勧めします。典型的な例は、削除されたユーザーの投稿を保持し、ユーザーの行をデータベースに保存して、そのユーザー名を(削除されたタグとともに)表示できるようにする場合です。これを達成する良い方法は、 'deleted_at DATETIME NULL DEFAULT NULL'カラムを追加し、削除のタイムスタンプを保存することです(削除されない場合はNULL)。 – rlanvin

関連する問題