2008-09-15 33 views
0

我正在嘗試爲以下場景找到最佳設計 - 存儲舞蹈比賽結果的應用程序。如何刪除此並行層次結構

一個事件包含多個回合,每個回合都包含多個表演(每個舞蹈一個)。每個表演由許多評委評判,他們返回評分表。

有兩種類型的輪次,最後一輪(包含6個或更少的舞蹈伴侶)或正常輪次(包含6個以上的舞蹈伴侶)。每個需要稍微不同的行爲和數據。

在最後一輪的情況下,每張成績單都包含最終顯示的6對夫婦的有序列表,其中夫婦放在第一名,第二名等等。我將這些排名稱爲「成績單包含6個排名」。一個配偶包含一對夫婦的號碼,並且這對夫婦在什麼地方是

在普通回合的情況下,每個計分表包含一組無意義的M對夫婦(M <進入該回合的夫妻數 - 準確值由比賽組織者決定)。我將這些召回稱爲:「M回憶的評分表」。一個召回不包含分數或例如 排名

在最後

  • 第一名:夫婦56
  • 第二名:夫婦234
  • 第三名:夫婦198
  • 第4名:情侶98
  • 第5名:情侶3
  • 第6名:情侶125

對於一個正常的一輪 下面的情侶們回憶 54,67,201,104,187,209,8,56,79,35,167,98

這個我天真的版本是作爲

事件 - HAS_ONE final_round ,的has_many輪

final_round - 的has_many final_performances final_performance - 的has_many final_scoresheets final_scoresheet - 的has_many名次

輪 - 的has_many perforomances 性能的has_many評分表 記錄表的has_many回憶

但是我不喜歡重複,這需要和我有幾個平行的層次結構(圓形,性能和記錄表),這將是一個痛苦保持。

回答

2

這需要一點我沒有的領域知識,但在我看來,有序與非有序的情況有點不相關。如果每對夫妻都有得分,那麼可以從每對夫妻的得分中推斷出最後一輪的順序,對吧?這意味着最後一輪的數據結構將像其他各輪的數據結構一樣,由多個(偶數,分數)組成。

0

不知道詳細情況,很難給出明確的建議。不過,根據我所讀的內容,似乎你的平行層次結構可能不是必需的。

目前還不清楚final_performance是否與性能真的不同。我猜他們得分不同;這應該反映在final_scoresheet的差異中,並且您可能認爲您需要使final_performance有所不同,因爲它必須包含final_scoresheets。也許你只能有一個表現的對象,而不是包含在性能評分表有圓形物體關聯評分表與表演:

round.getScoresheet(couple,dance) 

而不是

round.getPerformance(couple,dance).getScoresheet() 

我也想知道,如果你需要對象的排列和召回:他們可以只是(有序)的成績單檢索夫婦名單?如果是這樣,那麼你已經淘汰了三個班。

遏制優於繼承。