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