我需要创建一个脚本,其中有人会发布职位空缺,任何符合条件的人都会看到该空缺,但任何不符合条件(或选择退出)的人都不会看到该空缺。因此,两个人可以访问同一页面并看到不同的内容,有些内容可能相同,有些则完全独特。我不确定在 MySQL 数据库/表中安排这些数据的最佳方法。

例如,我可以通过发布来安排它,但这看起来有点像:

  PostID   VisibleTo
 PostingA    user1,user2

这似乎是错误的(列中的 CSV 样式)。或者我可以亲自去:

User   VisiblePosts

用户1 发帖1, 发帖2

但这是同样的问题。有没有办法让用户独一无二,发帖独一无二,并且让他们只在匹配的地方加入?

该决定最初是通过对另一组表进行一系列查询来做出的,但是一旦运行,当某些代码块在用户发布职位后不会发生变化时,再次运行该代码块似乎效率很低。

...再想一想,它可能会改变,但如果我们假设它不会改变(因为它不太可能,并且如果用户看到他们不再有资格获得的东西,后果也很小),是否有一个标准的解决方案设想?

有帮助吗?

解决方案

这是一个多到多的关系或N:米关系

您将创建一个额外的表,说PostVisibility,与一列PostIDUserID。如果PostIDUserID的组合存在于所述表中,交是到该用户可见。

其他提示

三个表...

用户: [用户身份] [OtherField]

发表: [帖子ID] [OtherFields]

UserPost: [用户身份] [帖子ID]

User.UserId加入到UserPost.UserId, Post.PostId加入到UserPost.PostId

然后查表UserPost,加入到后,当您选择显示哪个帖子

编辑:抱歉,我认为您用的是“发布用户”术语,即多对多。我从发布“观看权”术语的角度来考虑这一点,这是一对多的。

除非我遗漏了什么,否则这是一对多的情况,需要两个表。例如,每个帖子都有 n 个可以查看的用户。帖子对于单个用户来说是唯一的,因此您无需执行相反的操作。

  • 带有 PostingID(和其他数据)的 PostingTable

  • 带有 PostingID 和 UserID 的 PostingVisibilityTable

  • 包含用户 ID 和用户数据的 UserTable

创建独立于可见性权限的帖子,然后根据可见性表单独添加/删除 PostingID/UserID 对。

要选择当前用户可见的所有帖子:

SELECT * FROM PostingTable A INNER JOIN PostingVisibilityTable B ON A.PostingID = B.PostingID WHERE B.UserID = "currentUserID"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top