如何实现实体之间的多对多关系

问题描述 投票:0回答:1

我不确定我的实体之间的关系是否正确。 例如,我有一个玩家实体和一个团队实体,一名玩家可以在多个团队中(只要他们不参加同一场比赛),并且一个团队显然有多个玩家(如此多对多的关系,对吧) ?)。 我正在使用 dbdiagram.io 创建架构。

从屏幕截图中可以看出,我的 Player 实体中有一个字段“team_id”,它与 Team 实体中的 id 以一对多关系“连接”。 另外,我的团队实体中有一个字段“player_id”,与玩家实体中的 id '连接'为一对多关系。 我用这个实现了多对多关系吗? 那么这个方法可以吗?enter image description here

web-applications many-to-many one-to-many entity-relationship database-schema
1个回答
0
投票

我用这个实现了多对多关系吗?这个方法可以吗?

一个球员在很多球队,一个球队有很多球员,所以确实是多对多的关系,但是你的结构/模型有两个问题:1)你拥有所有的一对多关系关系颠倒:多方必须在“孩子”一方,即具有 FK 字段的一方; 2)我们不能直接实现多对多关系,我们需要一个中间表,其中包含两个初始表的FK。

在谈论模式(ER 图)时,中间表应该是可见的,还是我只是像之前尝试过的那样连接它?

数据模型/图表,特别是 ERD,可以存在于不同的抽象级别,从功能/概念级别(通常是分析级别),到具体/实现级别(设计甚至编码,即 SQL、级别),不仅逐步转向更多细节,而且从问题领域转向解决方案领域。 也就是说,在概念级图中,通常多对多关系确实存在(即不需要中间“表”),除非它们拥有足够的信息来保证完整的实体(! ),在这种情况下,即使在概念级别,您也可以使用中间“表”。在更具体的层面上,特别是如果您开始指定(具体)字段和外键,则无法将多对多关系具体化为(具体)表。

© www.soinside.com 2019 - 2024. All rights reserved.