問題タブ [soft-delete]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - DataGridView でソフト削除を実装する方法
オブジェクト データ ソースにバインドされた DataGridView があります。オブジェクトにはプロパティ「IsDeleted」があります。ユーザーが削除キーを押すか、削除ボタンをクリックするか、他の方法で行を削除すると、行を削除する代わりに「IsDeleted」フラグを設定したいと考えています。(次に、datagridview を更新します)。
この動作を達成するために必要な単一の連絡先は何ですか?
すべてのユーザー パスを個別に処理しようとはしません。
sql - 論理的な削除をカスケードする理由
リレーショナル データベースでは、論理的な削除を使用するのが非常に一般的です。これらの削除をカスケードすることが本当に必要かどうかについて考えてみます。私が不思議に思う理由は、論理的な削除をカスケードしても追加情報が追加されないように思えるからです。
つまり、テーブル MainContract とテーブル ServiceContract があり、関係が 1 対多であるとします。MainContract を論理削除するとしますが、それを無視して、すべてがこの MainContract に属する 3 つの ServiceContract があるとします。
削除されていない ServiceContract の DB を照会すると、ServiceContract を所有する MainContract が削除されているかどうかを簡単に確認できます。
熟考を定式化するだけで、ここでのデザインの選択は、おそらく頻繁に削除する可能性が高いか、または歴史的な記録をたくさん閲覧する必要があるかによって決まることに気づきます.
頻繁に削除するが、それほど頻繁に履歴を確認する必要がない場合は、簡単な方法で削除することをお勧めします (論理的な削除をカスケードするのではありません)。一方、履歴レコードを頻繁に取得する必要がある場合は、複雑なクエリが少なくて済むように、カスケード削除を実装する価値があります。
ただし、リレーショナル DB では、多くの場合、行はそれ自体では意味がありません。したがって、いずれにせよ、行を意味のあるものにするためには、「ツリーの上に」結合する必要があります。たとえば、ServiceContract は、それが属する MainContract を知らなければ意味のある情報を提供しない可能性があります。
誰もこれについて何か考えがありますか?これらのアプローチのいずれかまたは両方を使用した人はいますか?
php - SoftDelete、関係、SonataORMAdminBundle
私は SonataAdminBundle (より具体的には Doctrine を使用した SonataORMAdminBundle) を使用して、管理の一部を行っています。これまでのところ、これは非常に便利なバンドルであることが判明しましたが、エンティティの意味のある削除はややトリッキーです。
Tour エンティティに Truck エンティティと Trailer エンティティがあるとしますが、Truck が破棄されると、それは管理アプリケーション全体に表示されなくなります。それにもかかわらず、このトラックに関連するレガシー Tour エンティティがまだ存在する可能性があります。
ユーザーが管理画面でレガシー ツアーを編集する可能性がある場合、この問題にどのように対処すればよいか不明です。エンティティの選択はなくなったのでしょうか?
SoftDelete 拡張バンドルを調べましたが、すべての特定のケースを調整するために多くの作業が必要なようです。
バンドル レベルまたは Doctrine in General でこのような問題に取り組む簡単な方法はありますか?
python - Django でのユーザーごとのソフト削除モデルの設計
ユーザーがレコードを送受信するアプリケーションを設計しており、レコードにリストされているユーザーごとに削除を分けたいと考えています (あるユーザーの削除では、他のユーザーからレコードが隠されません)。
私の基本モデルの設計は次のようになります。
archived_by_xxxx
フィールドを、レコードを非表示 (ソフト削除) したユーザーのリストを格納する役割を持つManyToManyField
toに置き換えると改善されますか? accounts.CommonUserProfile
これにより、クライアント側のコードが簡単になるようです。通常、論理的な削除はユーザーごとにどのように実装されますか?
neo4j - Neo4j: オプションのリレーションシップを使用した論理的な削除の実装
Neo4j でソフト削除を実装しようとしています。アリスの観点から Cypher で説明されているグラフは次のとおりです。
ノードとその関係を実際に削除する代わりに、
- ラベルを変更して、直接検索できないようにする。つまり、ラベルを削除して
User
ラベルを追加する_User
(アンダースコアに注意) - その関係を置き換えて、通常のクエリではもう到達できないようにします。たとえば、その関係を削除して
:FOLLOWS
関係に置き換えるなど:_FOLLOWS
です。
したがって、これは基本的に、リレーショナル データベースのアーカイブ テーブルに行を移動することと同じです。ソフト削除されたグラフの部分に実際にアクセスすることはないため、これは非常に効率的なアプローチであると考えました。また、既存のクエリを変更する必要はありません。
Alice のソフト削除の結果は次のようになります。
クエリでの私の最初の試みはこれでした:
問題は、このユーザーが誰もフォローしていない場合、クエリは と の間の関係を作成しようとすることuser
ですnull
。2 番目の一致はオプションであるため、次のエラーが発生します。Other node is null.
私の2回目の試みはこれでした:
そのため、関係と主題をマップに入れ、これらのマップをコレクションに収集し、すべての「空の」マップを捨てて、コレクションをループします。しかし、このクエリでは次のエラーが表示されます。
これを修正する方法を知っている人はいますか?
ありがとう、ヤン
sql-server - 論理的な削除のストアド プロシージャ
このコードは、ソフト削除を実行するためのものです。最初にレコードを削除します。削除が成功した場合は、ロールバックしてから、同じレコードのフラグ列を更新します。そのレコードに依存関係があり、削除できなかった場合は、何もしません。アクションが発生したことを知るために、ステータス変数を保持しました。ただし、結果は常に null になります。どこが間違っているのですか。
C#: (エンティティへのリンク)
php - count() laravel で一時的に削除されたアイテムを返す
Comments
ソフト削除を使用するモデルがあります。それはone-to-many
私のモデルと関係がありPost
ます。
私のサイトにはネイティブ モバイル アプリが関連付けられており、投稿に関する情報を送信するときにコメントの数を送信する必要があります。何らかの理由で、論理的に削除されたアイテムと共に数が返されます。
Post 配列が機能し、次を使用してコメント数を送信しています
と
私の投稿モデルで。私も試してみました
と
また、関係を定義するときに、と の->whereNUll('deleted_at')
両方に追加しようとしましたが、うまくいきませんでした。->hasMany('Comment')
->belongsTo('Post')
データベースをチェックして、Fluent と Eloquent が生成することを期待している SQL を実行しました。
(31は私がテストに使用している投稿です)。何も機能していません。モデル全体を投稿したくないので、特定の機能が必要な場合はお知らせください。
ios - Core Data とサーバー同期を使用して論理的な削除またはアーカイブを実装する最良の方法
ここで説明されているように、synced と is_deleted の 2 つのフラグを使用して、iPhone アプリを Web サーバーと同期しようとしていますhttps://stackoverflow.com/a/5052208
ユーザーがアプリ内のアイテムを削除すると、is_deleted フラグを true に設定します。オブジェクトが削除されてから (テーブル ビューなど)、アプリに再び表示されないようにしたいのですが、オブジェクトを保持して同期を実行する必要があります。だからここに質問があります:
is_deleted フラグを持つすべてのオブジェクトをデフォルトでアプリに表示されないようにする最善の方法は何ですか?
現在、次の 2 つのオプションを考えることができます。
項目が is_deleted かどうかをアプリ内のほぼすべてのクエリでチェックするようにします - まったく効率的ではないようです
すべての is_deleted=YES オブジェクトをアプリから自動的に除外する、より一般的な方法を見つけます。たとえば、awakeFromFetch やその他のメソッドをオーバーライドします。しかし、オブジェクトをコンテキストから除外する方法がわかりませんが、同期のためにデータベースに保持します。
これを行う最善の方法は何ですか?#2も可能ですか?