0

ユーザーがコメントを残すフォーラム テーブルで使用する最適な制約は何ですか?

一部のユーザーが後の段階で削除されると仮定します。コメントしたユーザーを削除すると、テーブルのユーザー エントリはどうなりますか?

誰かが説明できることを願っています。

4

1 に答える 1

1

この質問には 2 つの部分があります。

  1. これをどのように実装するのが最善ですか?ユーザー行を「ソフト削除」できます。これには次の利点があります。

    • ユーザー情報を失わない
    • ユーザーの削除の取り消しを許可する
    • ユーザーにリンクされたデータを失わずに参照整合性を維持する

    ソフト削除は、users テーブルに別の列を追加することで実装できます。列がdateDeletedNull の場合、ユーザーは削除されません。SOは投稿を削除するためにそのようなメカニズムを使用していると思います。

  2. 何をしrestrict cascade no actionますか?MySQLのドキュメントによると

  • RESTRICT: 親テーブルの削除または更新操作を拒否します。RESTRICT (または NO ACTION) を指定することは、ON DELETE または ON UPDATE 句を省略することと同じです。

  • NO ACTION: 標準 SQL のキーワード。MySQL では、RESTRICT に相当します。InnoDB は、参照先テーブルに関連する外部キー値がある場合、親テーブルの削除または更新操作を拒否します。一部のデータベース システムには遅延チェックがあり、NO ACTION は遅延チェックです。MySQL では、外部キー制約がすぐにチェックされるため、NO ACTION は RESTRICT と同じです。

つまり、これを使用すると、行を削除すると参照整合性が失われる場合、行を削除できなくなります。

于 2012-04-05T17:19:34.693 に答える