user_id を持つユーザー テーブルがあります。したがって、すべてのユーザー コンテンツ、ログ、詳細テーブルなどには、親ユーザー テーブルへの FK として user_id があります。これはソーシャルサイトです。したがって、ユーザーがサインアップすると、ランダムな user_id が割り当てられます。明らかに、割り当てられた ID は決して変更されないため、次のようになります。
1) user_id はとにかく変更できないため、FK 参照で「ON UPDATE CASCADE」を使用する必要はないと思いますか?
2) どのユースケースでも、user_ID FK のどこかに「ON DELETE」または「SET NULL」を設定する必要がありますか?
3) メンバーが自分のアカウントをほとんど削除した場合、私は削除フラグを設定します。しかし、ユーザーが存在しなかったようにデータベースからレコード全体を削除するように、ユーザーに強化されたプライバシーを提供しているので、2 つのケースがあります。
A) すべてのユーザーのフットプリント (ハード削除) のみを削除しますが、コンテンツは実行されたままにします。したがって、ユーザーが写真を投稿した場合、私が削除しているのはA氏が写真ID 33445を所有しているだけですが、写真は孤児として保持しています。(また、ハード削除の場合、A 氏はユーザー テーブルから削除されます)。そのため、現在、ユーザーのフットプリントを参照する約 16 のテーブルがあり、それらを NULL に設定するか、存在しないユーザーを参照するデフォルトの user_Id 999 に設定する必要があります。
B) すべてのフットプリントとすべてのコンテンツも削除します。したがって、すべて (userID と object_iD) は NULL または 999 に設定されます。ハード削除を実行している場合は、ファイル システムから写真を物理的に削除する必要があります。
これがすべて制約、トリガー、またはアプリケーション側で処理されたのかどうかさえわかりませんか? 目標は、オーバーヘッドを最小限に抑えて、できるだけシンプルかつ迅速にすることです。
プラットフォーム: MySQL、codeIgnitorPHP、専用ホスティング環境。