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

时间:2015-04-18 16:14:55

标签: mysql database-design entity-relationship erd

以下是棒球联盟的实体关系。 enter image description here

我对理解关系和关系属性感到困惑。

图表说明如下:

enter image description here

根据描述,参与者是关系,性能是参与者的属性(复杂)。

问题

  1. 如何将Map映射到数据库中的实际表?

  2. 参与者表格中是否包含定义效果的字段?

    {击中(AtBat#,Inning#,HitType,Runs,RunsBattedIn, StolenBases)},{Pitching(Inning#,Hits,Runs,EarnedRuns,StrikeOuts,Walks,Outs,Balks,WildPitches)},{Defense(Inning {FieldingRecord(Position, PutOuts,Assists,Errors)})}

  3. 同样是Plays_For,Away_Team和Home_Team也是表格。

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

  5. 感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

问题1: Participates是一个实际的表,其中包含PlayerGame的外键列以及{{Performance的列。 1}}。所有M-N关系都需要在单独的表中建模。

问题2:要将其保存为半正常的关系数据库,您必须将所有信息分成不同的列,以便每列只能保存一个单一数据。如果您没有将数据分开,则会破坏第一范式,并且可能会在设计的后期遇到问题。

问题3:由于这三个是1-N,您还可以使用N侧的列实现它们。例如,在Game表中,您可以拥有Team表的两个外键以及列中关系的所有数据。为清楚起见,您也可以将这些关系作为单独的表。 作为旁注:您确定Player-Team是一个1-N关系,以便玩家更改团队的历史信息 - 前一个StartDateEndDate球队立刻输了吗?

问题4:他们都处理完全相同 - 没有区别。