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


          本博客所有文章分類的總目錄:【總目錄】本博客博文總目錄-實時更新

開源C#彩票數據資料庫系列文章總目錄【目錄】C#搭建足球賽事資料庫與預測平台與彩票數據分析目錄

  本篇文章開始將逐步介紹使用C#搭建足球賽事資料庫與預測平台的相關細節。還是先從數據庫開始,從本文開始將逐步對每個核心實體類和數據庫設計相關的內容進行講解,並公布源代碼,至於能不能跑起來,看的看個人努力。由於沒有時間將所有相關業務都簡述清楚,所以也只好將需求和表設計一起進行。本人也是走了很多彎路的。考慮到系統數據表很多,按照功能不同,分為基礎數據表,比賽相關表,賠率相關表,以及特殊數據表4個部分分別進行講解,請大家關注博客。

  今天要關注就是比賽信息相關的數據表設計。比賽信息表是核心數據,核心是指其數據都是直接用於預測的,是預測的主體和最重要的信息要素。這是系統的核心,比賽場次的信息是預測,模型研究的基礎。而且也是本系統最復雜的部分之一,業務查詢復雜。同時考慮到系統復雜程度,數據量大,以及為了以后的查詢方便,該部分大量使用了分數據庫操作,主要是按照賽事數據分開存儲。主要包括以下表: 

本文原文地址:http://www.cnblogs.com/asxinyu/p/4447523.html

1.場次信息表

  存儲每一場比賽的比賽 本身的信息,如比賽時間,主客隊球隊名稱與編號,輪次,賽季,以及主客進球和平均賠率信息。該表按賽事名稱進行分庫。也就是每一項賽事的所有賽季都放在一起,便於查詢。10年的數據,單庫也就幾千條記錄,技術再差也不至於效率很差吧。其表結構如下:

編號

字段名

類型

長度

描述

備注

1

Id

int

4

編號

自增主鍵

2

SeasonId

int

4

賽季編號

索引

3

SeasonName

nvarchar(50)

100

賽季名稱

 

4

EventId

int

4

賽事編號

索引

5

EventName

nvarchar(50)

50

賽事名稱

 

6

RoundId

int

4

輪號

索引

7

RoundName

nvarchar(30)

30

輪名稱

 

8

HomeId

int

4

主隊編號

索引

9

VisiteId

int

4

客隊編號

索引

10

HomeName

nvarchar(30)

30

主隊名稱

 

11

VisitName

nvarchar(30)

30

客隊名稱

 

12

MatchID

int

4

比賽編號

唯一索引

13

HalfHomeGoals

int

4

主隊半場進球

 

14

HalfVisitGoals

int

4

客隊半場進球

 

15

HomeGoals

int

4

主隊全場進球

 

16

VisitGoals

int

4

客隊全場進球

 

17

Result

int

4

全場結果

 

18

HalfResult

int

4

半場結果

 

19

GameTime

datetime

8

比賽時間

 

20

IsHistory

bit

1

是否歷史

 

21

IsSue

datetime

8

期號

索引

22

Odds3

float

53

主勝平均賠率

 

23

Odds1

float

53

主平平均賠率

 

24

Odds0

float

53

主負平均賠率

 

25

Handicap

nvarchar(15)

15

亞盤盤口

 

26

HomeLevel

float

53

亞盤主水

 

27

VisitLevel

float

53

亞盤客水

 

28

HandResult

nvarchar(15)

15

亞盤結果

 

29

BigSmallResult

nvarchar(15)

15

大小盤結果

 

2.球隊場次表

  是本次新增的主要表,球隊場次涉及到球隊歷史場次的查詢,需要很快的速度要求,所以單獨按照球隊進行分庫保存,合理的冗余和分庫,同時只保存場次的主要信息,其他信息暫時不保存,去對應的聯賽表找。在以前的版本中,場次歷史表不僅存儲了雙方對戰場次的信息,同時也存儲主客雙方最近比賽的信息,簡單的包括了勝平負歐賠和亞盤的數據。本次更新的最大問題也是在這里的改進,由於每一場比賽歷史數據的冗余非常嚴重(30-50倍),因此引入了球隊場次表,每次動態的對主客比賽進行查詢。因此改進后的場次歷史表,就只存儲雙方對戰場次的信息。表結構和場次信息表大致類似,增加了歐賠和亞盤的數據。因此,相對來說,球隊場次表更加節省空間,並提高了效率,這是實際做過后得到的總結和教訓。 

編號

字段名

類型

長度

描述

備注

1

Id

int

4

編號

自增主鍵

2

TeamId

int

4

球隊編號

 

3

TeamName

nvarchar(20)

20

球隊名稱

 

4

SeasonId

int

4

賽季編號

索引

5

SeasonName

nvarchar(50)

100

賽季名稱

 

6

EventId

int

4

賽事編號

索引

7

EventName

nvarchar(50)

50

賽事名稱

分庫用

8

MatchID

int

4

比賽編號

唯一索引

9

GameTime

datetime

8

比賽時間

排序用

10

IsHome

bit

1

是否主場

查詢用

11

UpdateTime

datetime

3

更新時間

 

3.聯賽排名表

   聯賽排名不是從外部獲取的,是要根據實際的聯賽場次動態來計算的,要與實際的排名相符合,每一輪進行計算保存。也是按照聯賽進行分庫的,同時也可以為以后開發出自己的基於PageRank的排序算法進行排名。具體排名算法將在后續中介紹,這里先介紹表的基本結構。

編號

字段名

類型

長度

描述

備注

1

Id

int

4

編號

自增主鍵

2

EventName

nvarchar(10)

20

賽事名稱

 

3

EventId

int

4

賽事編號

 

4

SeasonId

int

4

賽季編號

索引

5

RoundId

int

4

輪編號

索引

6

TeamId

int

4

球隊編號

索引

7

TeamName

nvarchar(10)

20

球隊名稱

 

8

TotalRank

int

4

總排名

 

9

HomeRank

int

4

主場排名

 

10

VisitRank

int

4

客場排名

 

11

TotalScore

int

4

總積分

 

12

HomeScore

int

4

主場積分

 

13

VisitScore

int

4

客場積分

 

14

TotalCount

int

4

總場次

 

15

HomeCount

int

4

主場場次

 

16

VisitCount

int

4

客場場次

 

17

TotalCount3

int

4

總勝場次

 

18

HomeCount3

int

4

主勝場次

 

19

VisitCount3

int

4

客勝場次

 

20

TotalCount1

int

4

總平場次

 

21

HomeCount1

int

4

主平場次

 

22

VisitCount1

int

4

客平場次

 

23

TotalCount0

int

4

總負場次

 

24

HomeCount0

int

4

主負場次

 

25

VisitCount0

int

4

客負場次

 

26

TotalGoal

int

4

總進球

 

27

HomeGoal

int

4

主場進球

 

28

VisitGoal

int

4

客場進球

 

29

TotalLossGoal

int

4

總失球

 

30

HomeLossGoal

int

4

主場失球

 

31

VisitLossGoal

int

4

客場失球

 

32

UpdateTime

datetime

8

更新時間

 

4.設計文件

   自從使用XCode和XCoder之后,設計數據庫只需要在XML文件中進行就可以了,本節中的設計文件如下圖所示,后面提供了下載。

XML下載:比賽信息實體.xml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM