Database 相似/爱情关系的数据库设计

Database 相似/爱情关系的数据库设计,database,database-design,Database,Database Design,我知道这可能被问过好几次,但我找不到任何适合我的问题的解决办法。 我正在实现一个有用户和文章的数据库。 现在,任何用户都可以喜欢或喜爱这篇文章。 问题来了,我必须返回json,它包含所有文章的列表,扩展了两个字段,喜欢和喜欢,因为查询将连接到用户。 所以,被爱和被爱可能是真的,也可能是假的。 我考虑创建两个不同的表Liked&love,其中我将保存article\u id-user\u id,如果该记录存在,则表示用户喜欢/喜爱特定的文章。然而,我不确定这是否正确,也不知道如何构建这样的查询。

我知道这可能被问过好几次,但我找不到任何适合我的问题的解决办法。 我正在实现一个有用户和文章的数据库。 现在,任何用户都可以喜欢或喜爱这篇文章。 问题来了,我必须返回json,它包含所有文章的列表,扩展了两个字段,喜欢和喜欢,因为查询将连接到用户。 所以,被爱和被爱可能是真的,也可能是假的。 我考虑创建两个不同的表Liked&love,其中我将保存article\u id-user\u id,如果该记录存在,则表示用户喜欢/喜爱特定的文章。然而,我不确定这是否正确,也不知道如何构建这样的查询。 如果这很重要,我会将postgresql与ormlite一起使用。
谢谢你的建议。

如果我理解了你的问题,你基本上是在描述M-N关系。一个用户喜欢/喜爱N篇文章,一篇文章被M个用户喜欢/喜爱。这种关系通过存储用户和文章关联的第三个表来实现。
您可以创建一个UserPreferences表,该表链接用户id和文章id,并具有额外的列以指示他是否喜欢/喜爱该文章。

我不能告诉你更多关于模式的信息,因为我不知道你是否有其他关于偏好的学位(讨厌、漠不关心、困惑等)

所以你基本上说我可以像第三张表那样,在那里我有文章\u id-用户\u id-喜欢-喜欢,然后当我查询时,我应该加入这些关系。这很有意义:)谢谢你的想法。同一篇文章有可能同时被同一个用户喜欢和喜爱吗?好的,那么你需要一个带有两个标志的连接表:一个标志表示“喜欢”,另一个标志表示“喜欢”(并检查以确保其中至少一个不为空)。基本上,@Cratylus已经提出了同样的问题。