2014-05-11 28 views
0

我迷失在建模與傳遞依賴關係的關聯。以下是相應的ERM:如何建模與傳遞依賴關係?

ERM

一場比賽有一個主隊,一個客隊(我們堅持以主隊爲簡單起見)。因此,我會在比賽中包含一個team_id屬性。

現在,我如何確保比賽中維持的球隊參加了比賽的聯賽?我願意引入連接表,但看不出如何保持對傳遞性依賴「團隊的信息 - >戲劇在 - >比賽 - >是的部分 - >聯盟 - >與參與 - >球隊「

回答

1

我假設隊必須在比賽的聯賽。解決方案涉及重疊的約束和重疊的外鍵引用。

您顯示了團隊和聯盟之間的m:n關係。匹配將引用此表。

create table team_leagues (
    team_id ..., 
    league_id ..., 
    other_columns ..., 
    primary key (team_id, league_id), 
    foreign key (team_id) references teams (team_id), 
    foreign key (league_id) references leagues (league_id) 
); 

並且在聯賽和比賽之間有1:n的關係。這裏有重疊的限制。

create table matches (
    home_team_id ..., 
    guest_team_id ..., 
    match_start_time ..., 
    league_id ..., 
    primary key (home_team_id, match_start_time), 
    unique (guest_team_id, match_start_time), 
    foreign key (home_team_id, league_id) 
    references team_leagues (team_id, league_id), 
    foreign key (guest_team_id, league_id) 
    references team_leagues (team_id, league_id) 
); 

無論matches.league_id還需要一個外鍵引用聯賽是依賴於應用程序。我想認爲它應該足以引用team_leagues,但。

+1

我被鎖定在Ruby on Rails世界中,它不支持外鍵,所以我甚至沒有考慮使用外鍵約束。非常感謝 - 非常感謝。 – emrass