【问题标题】:Implementing array like structure in MySQL database在 MySQL 数据库中实现类似数组的结构
【发布时间】:2020-03-03 15:36:50
【问题描述】:

我目前正在尝试在我的 SQL 数据库中实现一个表。我正在寻找一个可用于检查我网站上的用户是否喜欢帖子的表格。这个想法是有一个表,其中一个轴迭代网站上的帖子,一个轴迭代用户 ID 值。然后在每个框中保存一个关于他们是否喜欢它的二进制值。我只是想知道我将如何实现这一点。我一直在 C# 中通过创建类并使用 Entity Framework 6.4.0 将它们转换为服务器端代码来执行此操作。 任何帮助都会很棒。

【问题讨论】:

  • 听起来你需要数据库中的多对多关系表
  • 听起来您需要从快速的数据库设计教程开始。以太PS中有1000个,不要按照你目前设想的那样做

标签: c# mysql entity-framework


【解决方案1】:

您所建议的是您的用例的标准化结构;例如,每次将帖子添加到数据库(或用户,取决于您使用行还是列)时,都需要向表中添加更多列。

典型的数据库解决方案是桥接表,它表示帖子和用户之间的多对多关系。

说表user_like_posts,包含以下列:

user_id -- foreign key to the "users" table
post_id -- foreign key to the "posts" table

您可能希望向桥接表添加其他列,例如用户喜欢帖子的时间戳等。

【讨论】:

    【解决方案2】:

    每个用户都会对每个帖子发表意见吗?如果没有,那么您没有您描述的数据。如果用户和帖子不是一一相关的,那么你有一个简单的关系。对于用户喜欢(或不喜欢?)的每个帖子,该用户都有一个条目:

    喜欢/不喜欢表: 用户标识符 帖子标识符 表示喜欢或不喜欢的二进制值

    如果表格只显示“喜欢”,则不需要最后一列。

    即使每个用户和每个帖子都在此表中,这样的设计也可以工作。每次您介绍新帖子时,表格可能会很快变大并保持增长。但是,如果此表仅包含实际的“喜欢”(和/或“不喜欢”),它应该是可管理的。

    对于一个班级,您只有一个可枚举的帖子“喜欢”(可能还有另一个表示帖子“不喜欢”)

    想想你想表达什么。问自己问题。不要仅仅抓住一个想法并尝试“去做”它。

    每个用户都会对每个帖子发表意见吗? 您是否需要同时存储“喜欢”和“不喜欢”? 可以对帖子发表“中立”意见吗? 用户可以改变他们的意见吗?

    您只能通过询问和回答与您的情况有关的所有问题来发现正确的数据结构(我的列表并不详尽 - 这只是一个示例。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2020-03-22
      相关资源
      最近更新 更多