現在、次のようなテーブルがありますPages, Groups, GroupPage, Users, UserGroup
。pickled セットを使用すると、3 つのテーブルのみで同じことを実装できますPages, Groups, Users
。
set
グループおよびパーミッション関連の操作はセットで非常に自然に表現できるため、ACL を実装するための自然な選択と思われます。許可/拒否リストをピクルセットとして保存すると、多対多関係の中間テーブルがほとんどなくなり、多くのデータベース操作なしで権限の編集が可能になります。
人間の可読性が重要な場合は、シリアル化に cPickle の代わりに json をいつでも使用できset
、Python でアクセス許可リストを操作するときに使用できます。SQL を使用して権限を直接編集することはほとんどありません。それで、それは良いデザインアイデアですか?
SQLAlchemy を ORM として使用しているため、column で実装される可能性がありPickleType
ます。ピクルス化された「リソース」レコードセット全体を保存するつもりはなくset
、「リソース」の主キー値から作成されたオブジェクトのみを保存する予定です。