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