【原创】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

posted @ 2015-05-23 07:01  数据之巅  阅读(3485)  评论(0编辑  收藏  举报