0

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

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

  PostID   VisibleTo
 PostingA    user1,user2

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

User   VisiblePosts

用户 1 发帖 1,发帖 2

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

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

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

4

3 回答 3

2

三张桌子...

用户:[UserId] [OtherField]

帖子:[PostId] [OtherFields]

用户帖子:[用户 ID] [帖子 ID]

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

然后查找表格 UserPost,当您选择要显示的帖子时加入 Post

于 2009-05-28T00:14:04.517 回答
1

这是一个多对多关系或 n:m 关系。

You would create an additional table, say PostVisibility, with a column PostID and UserID. If a combination of PostID and UserID is present in the table, that post is visible to that user.

于 2009-05-28T00:14:51.847 回答
0

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

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

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

  • 带有 PostingID 和 UserID 的 PostingVisibilityTable

  • 具有 UserID 和用户数据的 UserTable

独立于其可见性权限创建发布,然后针对可见性表单独添加/删除 PostingID/UserID 对。

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

SELECT * FROM PostingTable A INNER JOIN PostingVisibilityTable B ON A.PostingID = B.PostingID WHERE B.UserID = "currentUserID"
于 2009-05-28T00:14:48.570 回答