2010-05-05 33 views
2

我有這個場景,我不確定它應該如何在數據庫中建模。我試圖建模的對象是:球隊,球員,球隊球員成員以及給定球隊中每名球員的費用清單。所以,費用取決於球隊和球員。架構設計:多對多加一對多

所以,我目前的做法是:

**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美元的費用。每個球員/球隊組合可以有不同的費用組合。

問題:

  • 是否有更好的方法來處理這樣 的情景?
  • 這種類型的 關係有沒有術語? (所以我可以谷歌它)或知道有類似結構的任何引用?

回答

0

因此是一個非常好的設計。聯結表(AKA交集表)具有其自己的屬性並不少見(如joining_date),並且可以包含從屬表。據我所知,這種安排沒有特別的名稱。

爲什麼會覺得奇怪的原因之一是這些表經常不存在於邏輯數據模型中。在那個階段,他們以多對多的聯合表示法表示。只有當我們到達物理模型時,我們才必須實現交接表。 (當然,很多人跳過邏輯模型並直接轉向物理模型。)

+0

感謝您的反饋!我有一個額外的列的交界處表,但從來沒有一個依賴表,所以我只是想確保沒有一個模式,我已經錯過了某個地方。 – azymm 2010-05-05 17:48:19