我有一个数据类:
class Dialog {
public:
string name;
std::vector<Permission> permissions;
}
enum class Permission {
CAN_EDIT = 1,
CAN_DELETE,
CAN_RENAME
};
我需要在SQLite数据库中保存。如何在数据库中表示一组权限?
答案 0 :(得分:1)
我基本上看到三种方式:
can_edit
,can_rename
布尔列;这也非常明确,但每次添加权限类型时都需要更改架构;也&#34;污染&#34;具有所有权限类型的对话框表模式,如果它们开始太多,则可能成为负担; can_delete
),摆脱向量,将OR-ed值存储在CAN_EDIT = 1, CAN_DELETE = 2, CAN_RENAME = 4
中字段,然后将在单个unsigned
列中的数据库中镜像;我最喜欢这个,因为它只需要一个列,不需要权限的重复数据删除(它已经隐含在OR中),并且在不必触及模式的情况下可以扩展到最多63个权限类型的问题。