由于資料表和業務是直接相關的,沒有時間将所有相關業務都簡述清楚,是以也隻好将需求和表設計一起進行。相輔相成吧,如果思路有問題,大家可以交流提出自己的想法,當然必須要對足球賽事資料庫有一定的了解和接觸才行,本人也是走了很多彎路的。考慮到系統資料表很多,按照功能不同,分為基礎資料表,比賽相關表,賠率相關表,以及特殊資料表4個部分分别進行講解,請大家關注部落格。今天要關注就是比賽資訊相關的資料表設計。
本部落格所有文章分類的總目錄:【總目錄】本部落格博文總目錄-實時更新
開源C#彩票資料資料庫系列文章總目錄:【目錄】C#搭建足球賽事資料庫與預測平台與彩票資料分析目錄
本篇文章開始将逐漸介紹使用C#搭建足球賽事資料庫與預測平台的相關細節。還是先從資料庫開始,從本文開始将逐漸對每個核心實體類和資料庫設計相關的内容進行講解,并公布源代碼,至于能不能跑起來,看的看個人努力。由于沒有時間将所有相關業務都簡述清楚,是以也隻好将需求和表設計一起進行。本人也是走了很多彎路的。考慮到系統資料表很多,按照功能不同,分為基礎資料表,比賽相關表,賠率相關表,以及特殊資料表4個部分分别進行講解,請大家關注部落格。
今天要關注就是比賽資訊相關的資料表設計。比賽資訊表是核心資料,核心是指其資料都是直接用于預測的,是預測的主體和最重要的資訊要素。這是系統的核心,比賽場次的資訊是預測,模型研究的基礎。而且也是本系統最複雜的部分之一,業務查詢複雜。同時考慮到系統複雜程度,資料量大,以及為了以後的查詢友善,該部分大量使用了分資料庫操作,主要是按照賽事資料分開存儲。主要包括以下表:
本文原文位址:http://www.cnblogs.com/asxinyu/p/4447523.html
1.場次資訊表
存儲每一場比賽的比賽 本身的資訊,如比賽時間,主客隊球隊名稱與編号,輪次,賽季,以及主客進球和平均賠率資訊。該表按賽事名稱進行分庫。也就是每一項賽事的所有賽季都放在一起,便于查詢。10年的資料,單庫也就幾千條記錄,技術再差也不至于效率很差吧。其表結構如下:
編号 | 字段名 | 類型 | 長度 | 描述 | 備注 |
1 | Id | int | 4 | 自增主鍵 | |
2 | SeasonId | 賽季編号 | 索引 | ||
3 | SeasonName | nvarchar(50) | 100 | 賽季名稱 | |
EventId | 賽事編号 | ||||
5 | EventName | 50 | 賽事名稱 | ||
6 | RoundId | 輪号 | |||
7 | RoundName | nvarchar(30) | 30 | 輪名稱 | |
8 | HomeId | 主隊編号 | |||
9 | VisiteId | 客隊編号 | |||
10 | HomeName | 主隊名稱 | |||
11 | VisitName | 客隊名稱 | |||
12 | MatchID | 比賽編号 | 唯一索引 | ||
13 | HalfHomeGoals | 主隊半場進球 | |||
14 | HalfVisitGoals | 客隊半場進球 | |||
15 | HomeGoals | 主隊全場進球 | |||
16 | VisitGoals | 客隊全場進球 | |||
17 | Result | 全場結果 | |||
18 | HalfResult | 半場結果 | |||
19 | GameTime | datetime | 比賽時間 | ||
20 | IsHistory | bit | 是否曆史 | ||
21 | IsSue | 期号 | |||
22 | Odds3 | float | 53 | 主勝平均賠率 | |
23 | Odds1 | 主平平均賠率 | |||
24 | Odds0 | 主負平均賠率 | |||
25 | Handicap | nvarchar(15) | 亞盤盤口 | ||
26 | HomeLevel | 亞盤主水 | |||
27 | VisitLevel | 亞盤客水 | |||
28 | HandResult | 亞盤結果 | |||
29 | BigSmallResult | 大小盤結果 |
2.球隊場次表
是本次新增的主要表,球隊場次涉及到球隊曆史場次的查詢,需要很快的速度要求,是以單獨按照球隊進行分庫儲存,合理的備援和分庫,同時隻儲存場次的主要資訊,其他資訊暫時不儲存,去對應的聯賽表找。在以前的版本中,場次曆史表不僅存儲了雙方對戰場次的資訊,同時也存儲主客雙方最近比賽的資訊,簡單的包括了勝平負歐賠和亞盤的資料。本次更新的最大問題也是在這裡的改進,由于每一場比賽曆史資料的備援非常嚴重(30-50倍),是以引入了球隊場次表,每次動态的對主客比賽進行查詢。是以改進後的場次曆史表,就隻存儲雙方對戰場次的資訊。表結構和場次資訊表大緻類似,增加了歐賠和亞盤的資料。是以,相對來說,球隊場次表更加節省空間,并提高了效率,這是實際做過後得到的總結和教訓。
TeamId | 球隊編号 | ||||
TeamName | nvarchar(20) | 球隊名稱 | |||
分庫用 | |||||
排序用 | |||||
IsHome | 是否主場 | 查詢用 | |||
UpdateTime | 更新時間 |
3.聯賽排名表
聯賽排名不是從外部擷取的,是要根據實際的聯賽場次動态來計算的,要與實際的排名相符合,每一輪進行計算儲存。也是按照聯賽進行分庫的,同時也可以為以後開發出自己的基于PageRank的排序算法進行排名。具體排名算法将在後續中介紹,這裡先介紹表的基本結構。
nvarchar(10) | |||||
輪編号 | |||||
TotalRank | 總排名 | ||||
HomeRank | 主場排名 | ||||
VisitRank | 客場排名 | ||||
TotalScore | 總積分 | ||||
HomeScore | 主場積分 | ||||
VisitScore | 客場積分 | ||||
TotalCount | 總場次 | ||||
HomeCount | 主場場次 | ||||
VisitCount | 客場場次 | ||||
TotalCount3 | 總勝場次 | ||||
HomeCount3 | 主勝場次 | ||||
VisitCount3 | 客勝場次 | ||||
TotalCount1 | 總平場次 | ||||
HomeCount1 | 主平場次 | ||||
VisitCount1 | 客平場次 | ||||
TotalCount0 | 總負場次 | ||||
HomeCount0 | 主負場次 | ||||
VisitCount0 | 客負場次 | ||||
TotalGoal | 總進球 | ||||
HomeGoal | 主場進球 | ||||
VisitGoal | 客場進球 | ||||
TotalLossGoal | 總失球 | ||||
HomeLossGoal | 主場失球 | ||||
31 | VisitLossGoal | 客場失球 | |||
32 |
4.設計檔案
自從使用XCode和XCoder之後,設計資料庫隻需要在XML檔案中進行就可以了,本節中的設計檔案如下圖所示,後面提供了下載下傳。
XML下載下傳:比賽資訊實體.xml
.NET資料挖掘與機器學習,作者部落格:
http://www.cnblogs.com/asxinyu
E-mail:[email protected]