在 ERD 建模中,关系映射到数据库 Table

In ERD modeling Does A Relation Map To A Database Table

下面是一个棒球联盟的实体关系。

我对关系和关系的属性有点困惑。

图表说明如下:

根据描述,Participates是一个Relation,Performance是Participates的一个Attribute(复合)。

问题:

  1. 如何将参与者映射到数据库中的实际 table?

  2. 是否会有参与者 table 包含定义性能的字段?

    {击球(AtBat#, Inning#, HitType, Runs, RunsBattedIn, StolenBases)}, {投球(Inning#, Hits, Runs, EarnedRuns, StrikeOuts, Walks, Outs, Balks, WildPitches)}, {Defense(Inning{FieldingRecord(Position, 投篮、助攻、失误)})}

  3. 同样是Plays_For、Away_Team和Home_Team也是table。

  4. 当您在数据库中创建 table 时(比如 MySql),关系与玩家、团队和游戏等实体/对象有何区别。

感谢您的帮助。

问题 1: Participates 将是一个实际的 table,也包含 PlayerGame 的外键列作为 Performance 的列。所有 M-N 关系都需要在单独的 table.

中建模

问题 2:要将其保留为半正经的关系数据库,您必须将所有信息分成单独的列,以便每一列仅包含一个单一数据。如果您不分离数据,您将破坏 第一范式 ,并可能 运行 在稍后的设计中出现问题。

问题 3: 由于这三个是 1-N,您也可以在 N 侧使用列来实现它们。例如,在 Game table 中,您可以有两个指向 Team table 的外键以及有关列中关系的所有数据。为清楚起见,您也可以将这些关系设为单独的 table。 作为旁注:您确定 Player-Team 是 1-N 关系,这样如果玩家更换球队,有关 StartDateEndDate 的历史信息之前的队伍马上就输了?

问题 4:他们的待遇完全一样——没有区别。