2012-07-23 76 views
1

我正在設計一個數據庫來存儲有關每個洞或每輪的高爾夫分數和其他統計數據,但是我很難知道哪種方法最有效。我的問題圍繞着爲課程和回合制定表格。這裏有兩個選項,但我不確定是否有更好的第三。我使用MySQL 5.1.63和PHP 5.2.17。爲了便於閱讀,CAPS中的表格。mySQL高爾夫分數據庫方案

  1. 具有存儲所有的過程信息的一個大表,因爲這些信息將只在數據庫中(〜100列... 18個孔* 4個屬性的每個孔,除了課程名稱,位置,一旦上市,電話等)
    • 課程:COURSE_ID,par_1,par_2,... par_18,distance_1,distance_2,... distance_18等
  2. 拆分過程中的信息到表中,某些連接在適當的時候帶有course_id的表格
    • COURSE_PAR:COURSE_ID,par_1,par_2,... par_18
    • COURSE_DISTANCE:COURSE_ID,distance_1,distance_2,... distance_18
    • COURSE_INFO:COURSE_ID,課程名稱,地址,電話...
    • 等。

類似的問題可以詢問記錄了一輪。我是否有round_1,round_2,...,hit_fairway_1,hit_fairway_2,num_putts_1,num_putts_2,還是將每個屬性分解到自己的表中? This問題及其答案傾向於將其分解成表格。這是否意味着類似的結構:

  • SCORE:hole_num,COURSE_ID,round_id,得分,hit_fairway,num_putts,...

定期查詢(使用PHP)將主要在做的人打高於或低於標準桿,擊球道,推杆等#

希望我的問題已經夠清楚了。我知道那裏有類似的問題,就像上面提到的問題一樣,但我無法將這些答案轉移到我所尋找的答案上。

謝謝!

回答

3

不知道什麼「坡」是的,但這個怎麼樣的一個開始:

COURSE - one record per course 
CourseID 
AddressInfo 
NumHoles - usually 9 or 18 

HOLE - one set of these per course 
CourseID 
HoleNum 
Par 
Slope - you can add more here if you want (water, sand, etc.) 

MATCH 
CourseID 
MatchID 
MatchName 
StartDate 

ROUND 
RoundID 
MatchID 
PlayerID 
RoundNum 
StartDate 

SCORE - every time a player plays a hole, add one of these 
CourseID 
MatchID 
RoundID 
HoleID 
PlayerID 
NumPutts 
NumStrokes - you can add more specifics if you want (fairway, rough) 

PLAYER 
PlayerID 

這就是你所說的「完全正常化」,並擁有數據的最小重複從桌到桌。對於初學者來說,生成的SQL語句可能會變得有點複雜,但如果你現在就知道它會是值得的。

+0

看起來不錯,謝謝! – Brady 2012-07-23 15:39:56

+0

我一直在搞這個,但我正在努力尋找更好的解決方案。如果我想顯示每個洞和它的參數表,我最好的選擇是'SELECT Par FROM Hole WHERE CourseID ='$ CourseID'ORDER BY HoleNum ASC',然後做一個while循環,每個結果作爲一個數組獲取時間?這看起來像很多問題,只是抓住一件事。洞的每個面值都是它自己的記錄,所以我沒有看到用不同的方法來完成它。 – Brady 2012-07-23 21:45:34