我在构建良好的数据库设计时遇到问题。第 1 条有权限组 1,2,3
用户位于权限组 2 和 4
所以这个用户应该看第1条。但是在这种情况下我可以设计一个不使用OR的sql吗?
如果有数百万篇文章,那么使用 OR 将不会很好。
标签文章 Articleid 名称
表权限 Id Articleid PermissionGroup
表 userpermission Id Userid Permissiongroup
像这样的东西。
使用您提供的有限详细信息很难准确判断您要做什么,但您应该能够JOIN
通过表格了解用户是否可以访问文章:
select u.username,
p.articleId
from users u
inner join userpermission up
on u.userid = up.userid
inner join permissions p
on up.permissiongroup = p.permissiongroup
inner join articles a
on p.articleid = a.articleid
使用 JOIN 您将根据权限返回用户和他们可以访问的文章。