0

私は非常に基本的/愚かな質問をしているように感じますが、この方向で何かを見たり、読んだり、聞いたりしたことはありません.

テーブルusers(userId, name)とテーブルPreferences(id, userId, language) があるとします。この例は簡単ですが、複数レベルのリレーションとより多くのテーブルがある状況に拡張できます。
UI がユーザーを削除するように要求したとき、最初にその設定も削除されるという警告を表示したいと思います。ある時点でデータベースが拡張され、テーブルと関係が追加されたが、ソフトウェアがそれに応じて適応されなかった (クライアントが更新されなかった) 場合、一般的なメッセージが表示されます。

どうすればこれを実装できますか? UI はデータ構造全体を認識できないため、依存するすべてのレコードを手動で削除するためにすべての関係をたどる必要はありません。

これには制約があると思います。
制約は最初はアクションではないため、UI でキャッチできるエラーがスローされます。UI が確認を受け取った後、制約はカスケードになります。

なんというか、全部ズレてる気がする..

4

2 に答える 2

1

私がすることはこれです:

  1. 制約はCASCADEです
  2. アプリケーションは、設定が存在するかどうかを確認します。
  3. その場合は、警告を表示します。
  4. プリファレンスが存在しない場合、または警告が受け入れられた場合は、クライアントを削除します。

その場でデータベースの関係を変更するのは良い考えではありません!!

乾杯、

RB。

于 2008-09-17T09:53:16.810 に答える
0

ユーザーが削除の影響を完全に認識していないことが心配な場合は、実際にはデータを削除しないことを検討してください。代わりに、「marked_for_deletion」という列にフラグを設定するだけです。(エントリは後で安全な時間に削除される可能性があります)
欠点は、他のクエリでマークされた行を除外することを覚えておく必要があることです。これは、マークされた行を除外してテーブルにビューを作成し、クエリで常にビューを使用することで軽減できます。

于 2008-09-17T10:06:09.820 に答える