只有 2 个外键的 table 有什么作用?

What does a table with only 2 foreign keys do?

我研究了 MySQL 并且遇到了这个有趣的 ERD。除了这里的 user_chat table 我都明白了。它有 2 个外键引用 table chatuser。那有什么作用呢?这是否意味着:

  1. 有新聊天时我必须INSERT INTO message, chat, user_chat手动吗?
  2. 我只能用这个 SELECT 声明 user_chat table?
  3. user_chat 不能包含其他列,例如 favorite 以防人们想要快速访问它?
  4. 我可以删除 user_chat table 中的一行,因为它们不是 unique 吗?

我是 self-learning 并且在这个主题上仍然是初学者,所以如果可以对此进行解释以帮助我理解它,那将意义重大。非常感谢!

是的,这些类型的表只有 2 个外键,主要用于登录目的。 它只是 connection/relation 而已。 它有助于轻松提取数据没有别的

在关系数据库中,不可能实现多对多关系。在这种情况下,ChatUser 具有多对多关系。我们需要通过引入一个“associative entity”将多对多关系分解为一对多关系,其中包含 2 列作为每个表的外键。在这种情况下,user_chat 充当关联实体。

userchat之间是多对多的关系,也就是说一个用户可以参与多个聊天,每个聊天可以有多个用户参与。

这种关系无法直接使用FOREIGN KEY约束来表示,只能强制一对多关系。为了解决这个问题,数据库设计者使用 "intersection entity" table 类似 user_chat,它允许将多对多关系简化为 "one-to-many-to-one" 关系。

创建新聊天时,您会在 user_chat 中为每个参与者以及加入正在进行的聊天的任何新参与者插入一条记录。此示例中此交集的主要用途是让您轻松搜索聊天中的所有参与者(例如,为了通知他们有新消息),或查找特定用户参与的所有对话。