以下是棒球联盟的实体关系。
我对理解关系和关系属性感到困惑。
图表说明如下:
根据描述,参与者是关系,性能是参与者的属性(复杂)。
问题:
如何将Map映射到数据库中的实际表?
参与者表格中是否包含定义效果的字段?
{击中(AtBat#,Inning#,HitType,Runs,RunsBattedIn, StolenBases)},{Pitching(Inning#,Hits,Runs,EarnedRuns,StrikeOuts,Walks,Outs,Balks,WildPitches)},{Defense(Inning {FieldingRecord(Position, PutOuts,Assists,Errors)})}
同样是Plays_For,Away_Team和Home_Team也是表格。
当您在数据库中创建表格(比如MySql)时,关系如何与玩家,团队和游戏等实体/对象区分开来。
感谢您的帮助。
答案 0 :(得分:1)
问题1: Participates
是一个实际的表,其中包含Player
和Game
的外键列以及{{Performance
的列。 1}}。所有M-N关系都需要在单独的表中建模。
问题2:要将其保存为半正常的关系数据库,您必须将所有信息分成不同的列,以便每列只能保存一个单一数据。如果您没有将数据分开,则会破坏第一范式,并且可能会在设计的后期遇到问题。
问题3:由于这三个是1-N,您还可以使用N侧的列实现它们。例如,在Game
表中,您可以拥有Team
表的两个外键以及列中关系的所有数据。为清楚起见,您也可以将这些关系作为单独的表。 作为旁注:您确定Player-Team
是一个1-N关系,以便玩家更改团队的历史信息 - 前一个StartDate
和EndDate
球队立刻输了吗?
问题4:他们都处理完全相同 - 没有区别。