网站用户权限存储是否需要单独创建SQL数据表?
发帖权限存储方案选型结论
直接给决策逻辑,不用绕弯:
- 如果你确定很长一段时间内都只有「发帖权限」这一种权限控制,没有其他权限扩展计划,直接在
Accounts表加createPrivilege布尔字段就行。
这种方案没有任何额外复杂度:查用户权限不需要连表,校验逻辑写起来最省事,也不会出现跨表数据不一致的问题,查询性能也是最优的,完全匹配你当前的需求。 - 如果你已经明确后续要加更多权限(比如删帖、审核、板块管理等)、要做权限有效期、授权记录审计这类功能,再考虑拆表。注意你现在设想的1:1关联
Privileges表设计性价比极低——和加字段比没有任何灵活度优势,反而多了一层连表成本。真要拆权限表就走标准的多对多关联设计:- 建权限字典表存储所有权限项,字段包含
privilege_id、privilege_key(比如存create_post这类唯一标识)、privilege_name - 建用户权限关联表,字段包含
account_id(外键关联Accounts.Id)、privilege_id(外键关联权限字典表)、granted_at、expire_at,用来存具体的用户授权关系
- 建权限字典表存储所有权限项,字段包含
不要为了不存在的需求过度设计。现阶段单字段加列是最优解,等后续真的需要扩展多权限的时候再重构拆表,重构成本非常低,完全没必要提前给自己加没必要的维护负担。
内容的提问来源于stack exchange,提问作者dro
相关产品推荐
相关产品推荐

