単純な ACL システムを設計するときに、次の問題があります。
Person 1からTeam A編集可能Item XPerson 1Team Aからへの転送Team BTeam B編集できませんでしたItem X- 歴史的な理由により、まだ
Person 1編集を許可していますItem X
RDBMS の典型的なモデルは次のとおりです。
Personテーブルにはテーブルと多対多の関係がありますTeam- 次のような ACL テーブルがあります。
object_type | object_id | item_type | item_id | deny_or_allow
私が説明したようにチーム間の転送を処理するには
- に追加のルールを追加するだけです
Person 1か? - いつの日か
Team A(元メンバーを含む)全員の編集を拒否したらどうなりItemXますか? - 人の移動履歴テーブルも保持する必要がありますか?
- したがって、ACL ルールを決定するには、大量のことをトラバーサルする必要があります。
この問題の複雑さは、ACL と人事異動が常に発生するにつれて大きくなります。このためにリレーショナル DB でモデルを設計するベスト プラクティスは何ですか? これらの種類のものの一般的な用語またはトピックはありますか?