【问题标题】:I need a table for user posts (allowed to see only friend, specific persons etc.)我需要一个用于用户帖子的表格(只允许查看朋友、特定人员等)
【发布时间】:2012-09-10 21:51:01
【问题描述】:

用户发布消息时,可以选择:只允许查看好友、特定人员等。

mysql 表:

Post

post_id   post_nr    user_id    privacy option
1         1          2          allowed for friend id1
2         1          2          allowed for friend id2
or
1         1          2          allowed for friends id1,allowed for friend id2 .?

我如何在 mysql 中为一篇文章注册多个选项(隐私)? 桌子的设计好吗?

【问题讨论】:

  • 不要在单个字段中保存多个值。头痛远大于好处。
  • 如果我在表中进行搜索,如果我按照您的方式进行搜索,mysql 表中的所有行都会被扫描?如果我有 5 亿个帖子(我们假设)并且我设置 LIMIT 1 更快?

标签: php mysql post friend privacy


【解决方案1】:

您可以通过将privacy_option 表连接到您的post 表来解决它。

post

post_id post_nr user_id
1       1       2

privacy_option

post_id friend_id
1       3
1       4

这样可以在每个帖子中列出多个朋友,您可以通过简单的JOIN 获取朋友 ID 列表。确保将privacy_option.post_id 标记为指向post.post_id 的外键。

【讨论】:

  • 所以 post_nr 将包含来自用户的帖子。
  • @HoaHooksonair 否。您将需要在post 表中具有某种合适类型的另一个属性(可能是TEXT)来包含实际的帖子数据。我只为您的“一对多”问题提供了解决方案。
  • post_nr 用于帖子中的号码。您的解决方案使我从 post_nr 更改为 post_text (我认为还可以)。 post_id post_text user_id 1 1 2 privacy_option post_idfriend_id 1 3 1 4
  • @HoaHooksonair 那么,您选择了我的解决方案来实施但接受了另一个答案? :) 有趣的。无论哪种方式,很高兴我能提供帮助。
  • 我接受了。只需要选择一个吗?我学到了另一件事。 :) 谢谢。
【解决方案2】:

最好为隐私选项设置一个单独的表格。而且我不确定您所说的 "post_nr" 是什么意思。

表:POST

post_id | post_nr | user_id

表:隐私

post_id |隐私选项

【讨论】:

  • post_nr 是帖子的编号。
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 2021-07-18
相关资源
最近更新 更多