我研究过MySQL,我遇到过这个有趣的ERD。我理解除user_chat
表之外的所有内容。它有2个外键引用表chat
和user
。那到底做了什么?这是否意味着:
答案 0 :(得分:2)
user
和chat
之间存在多对多关系,也就是说一个用户可以参与多个聊天,每个聊天可以有多个用户参与。
这种关系不可能直接使用FOREIGN KEY
约束来表示,user_chat
约束只能强制执行一对多关系。为了解决这个问题,数据库设计人员使用像user_chat
这样的“交叉实体”表,它允许将多对多关系简化为“一对多”关系。
当您创建新聊天时,您会为每个参与者以及加入正在进行的聊天的所有新参与者插入记录到obj1
。此示例中此交集的主要用途是允许您轻松搜索聊天中的所有参与者(例如,为了通知他们新消息),或查找特定用户参与的所有会话。 / p>
答案 1 :(得分:0)
是这些类型的表只有2个外键主要用于登录目的。 它只是一个连接/关系没有别的。 它有助于轻松提取数据
答案 2 :(得分:0)
在关系数据库中,不可能实现多对多关系。在这种情况下,Chat
和User
有多对多的关系。我们需要通过引入一个“associative entity”来将多对多关系分解为一对多关系,该列包含2列作为每个表的外键。在这种情况下,user_chat
充当关联实体。