架构设计:多对多,另外一对多

时间:2010-05-05 05:41:58

标签: database database-design schema schema-design

我有这种情况,我不确定它应该如何在数据库中建模。我想要建模的对象是:团队,球员,团队成员,以及给定团队中每个球员的应付费用列表。因此,费用取决于团队和玩家。

所以,我目前的方法如下:

**teams**
  id
  name

**players**
  id
  name

**team_players**
  id
  player_id
  team_id

**team_player_fees**
  id
  team_players_id
  amount
  send_reminder_on

Schema layout ERD

在此架构中,team_playersteamsplayers的联结表。表team_player_fees具有属于联结表记录的记录。

例如,playerA在teamA上,并且在8月和2月收取10美元和20美元的费用.PlayerA也在teamB上,并且在5月和6月收取25美元和25美元的费用。每个球员/球队组合可以有不同的费用。

问题:

  • 有没有更好的方法来处理这样的问题 一个场景?
  • 是否有这种类型的术语 关系? (所以我可以谷歌)或者知道任何类似结构的参考文献?

1 个答案:

答案 0 :(得分:0)

因此是一个完美的设计。联结表(AKA交集表)具有自己的属性(例如joining_date - 并且可以包括从属表)并不罕见。据我所知,这种安排没有特别的名称。

它可能感到奇怪的原因之一是这些表经常不存在于逻辑数据模型中。在那个阶段,它们由多对多连接符号表示。只有当我们到达物理模型时,我们才能实现连接表。 (当然,很多人会跳过逻辑模型并直接进入实体模式。)