3

我最近认为在 MySQL 数据库中存储一个数组可以解决我的问题……然后我把头撞到了墙上,直到我意识到我的问题有一个更简单的解决方案。不幸的是,我似乎无法弄清楚我到底需要做什么。

我有两张桌子。用户和条目。每个用户都可以是任意数量条目的作者。一对多对吗?那么问题来自这样一个事实,即每个条目可以有很多用户。-_-;

正如您所想象的那样,使用数组这样做会......不仅麻烦而且愚蠢,尤其是如果有人设法积累了 2000 个条目。我曾预计我可能需要创建一个额外的表,并且某些资源似乎确实建议这样做,但资源并不像我希望的那样清晰。我需要获取所有用户的帖子,而在其他地方,我需要获取用户的所有帖子。

有人可以解释这样做的最佳方法吗?(当然不使用数组=p)

4

2 回答 2

3

你需要制作3张桌子:

  • 用户(主键 = id)
    • ID
    • 姓名
    • ...
  • 条目(主键 = id)
    • ID
    • 文本
    • ...
  • userentry(主键=复杂的关键用户,入口)
    • 用户
    • 入口

如果您想获得条目用户,只需执行

SELECT
  user.*
FROM
  userentry
INNER JOIN
  user
ON
  userentry.user = user.id
WHERE
  userentry.entry = [your entry-id]

并获取用户的所有条目,只需反过来:

SELECT
  entry.*
FROM
  userentry
INNER JOIN
  entry
ON
  userentry.entry = entry.id
WHERE
  userentry.user = [your user-id]
于 2012-11-07T11:22:51.273 回答
2

最好的方法是拥有三个表:

用户:

  • Id,
  • Name,
  • ...

帖子:

  • Id,
  • PostName,
  • ...

用户帖子:

  • Id代理键,
  • UserId,
  • PostId.

然后让所有用户发帖

SELECT u.*
FROM users u 
INNER JOIN posts p ON u.id = p.userid
WHERE p.id = apostid

要获取用户的所有帖子:

SELECT p.*
FROM posts p 
INNER JOIN users u  ON u.id = p.userid
WHERE u.id = auserid
于 2012-11-07T11:22:02.770 回答