天天看點

【原創】C#搭建足球賽事資料庫與預測平台(4) 比賽資訊資料表設計

【原創】C#搭建足球賽事資料庫與預測平台(4) 比賽資訊資料表設計

由于資料表和業務是直接相關的,沒有時間将所有相關業務都簡述清楚,是以也隻好将需求和表設計一起進行。相輔相成吧,如果思路有問題,大家可以交流提出自己的想法,當然必須要對足球賽事資料庫有一定的了解和接觸才行,本人也是走了很多彎路的。考慮到系統資料表很多,按照功能不同,分為基礎資料表,比賽相關表,賠率相關表,以及特殊資料表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檔案中進行就可以了,本節中的設計檔案如下圖所示,後面提供了下載下傳。

【原創】C#搭建足球賽事資料庫與預測平台(4) 比賽資訊資料表設計

XML下載下傳:比賽資訊實體.xml

.NET資料挖掘與機器學習,作者部落格:

http://www.cnblogs.com/asxinyu

E-mail:[email protected]

繼續閱讀