• W3Q
    9cLdKm9月14日
    質問です。
    論理削除を全部のテーブルで実装しようとしている、自称エンジニアのディレクターがいます。(本当にエンジニアだったのかも怪しいだけど)
    そんな事やりだすと、システムの規模がデカくなればなるほど、不都合生じそうだなと思っているのですが、そんなことはないですか?
    もちろん、論理削除を楽に実装できるような機能はフレームワークを使っていれば、あるんでしょうけど、複雑なクエリを発行したい場合は、なんの障害もなくできるのかと言うと本当にそうなのかなと....

    重要なテーブル以外は、そんな事するより、削除ボタンを押したときに確認アラート出すなりで、ui面を見直すだけで解決できるよなって思ってしまいます。
返信の受付は終了いたしました。
  • PJV.B89月14日
    基本的には、必要なテーブルのみで採用すべきです。

    そもそもテーブル設計時に、論理削除にするかどうか、慎重に検討します。
    ビジネス要件に、削除したデータも、後から見れるようにしたい、ということは当たり前にありますから、必要があれば、そうします。
    ただ、全部のテーブル、というのは疑問です。
    仮にフレームワークを使っていたとしても、です。
    また、論理削除しても、3ヶ月などの一定期間がたったものから、物理削除のバッチを当てることもあります。そういう場合は、物理削除の前に、削除データのみ吸い上げ、S3などに永久保存するようなバッチをかましてからになります。

    つまり、UI面のことはユーザー側に対してのアラートなので、それはそれで重要ですが、本質的には、何かあった時のために、古い過去であっても遡りたい、ということが論理削除時の要件目的であることが多いため、現実的なバランスを見ながら、実装工数を考えます。

    もしフレームワークの力を使わずにそういうことをやっているのであれば、バグの温床になる可能性があるので、そういうのはフレームワークに任せたいところです。
  • u.99Ob9月14日
    全部ではいらんなー。リレーションで整合性が取れなくなる場合、例えばユーザーを消すと購入履歴とかおかしくなる時などは必須かも。まあリレーション取らないデータの方が珍しいが