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

时间:2016-02-17 04:35:00

标签: mysql foreign-keys foreign-key-relationship erd

我研究过MySQL,我遇到过这个有趣的ERD。我理解除user_chat表之外的所有内容。它有2个外键引用表chatuser。那到底做了什么?这是否意味着:

  1. 当有新的聊天时,我必须INSERT INTO message, chat, user_chat手册?
  2. 我只能用SELECT表格做user_chat语句?
  3. 如果人们想要快速访问,user_chat不能包含favorite等其他列?
  4. 我可以删除user_chat表格中的一行,因为它们不是unique吗?
  5. 我是自学并且仍然是这个主题的初学者,所以如果可以解释这一点以帮助我理解它,那将意味着很多。非常感谢!

    enter image description here

3 个答案:

答案 0 :(得分:2)

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

这种关系不可能直接使用FOREIGN KEY约束来表示,user_chat约束只能强制执行一对多关系。为了解决这个问题,数据库设计人员使用像user_chat这样的“交叉实体”表,它允许将多对多关系简化为“一对多”关系。

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

答案 1 :(得分:0)

是这些类型的表只有2个外键主要用于登录目的。 它只是一个连接/关系没有别的。 它有助于轻松提取数据

答案 2 :(得分:0)

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