ソフト削除が使用される単純なスキーマがあります(これが設計方法であり、変更できません)。スキーマに参加するテーブルは2つありますCompany (id, is_deleted)。もちろん、テーブルへEmployee (id, company_id, is_deleted)のcompany_idFKです。Companyルールは次のとおりです。
- a
Companyがを持っている場合、その会社を参照しているis_deleted = trueすべてのがを持っている必要があります。Employeeis_deleted = true - しかし、親が
Employee持っていても、持っている可能性があります。is_deleted = trueCompanyis_deleted = false
私の2つの問題は、a)これらの制約をどのように適用するかです。b)aがソフト削除されis_deleted = trueたときにカスケードされることを最も簡単に確認する方法。Company
タグpostgresqlとsqlserverを追加したのは、これらが私が最も興味を持っているデータベースだからです。他のrdbms:esに他のソリューションがある場合は、それらについても聞きたいです。