【原创】C#搭建足球赛事资料库与预测平台(5) 赔率数据表设计1
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html
开源C#彩票数据资料库系列文章总目录:http://www.cnblogs.com/asxinyu/p/4329642.html
本篇文章开始将逐步介绍使用C#搭建足球赛事资料库与预测平台的相关细节。还是先从数据库开始,从本文开始将逐步对每个核心实体类和数据库设计相关的内容进行讲解,并公布源代码,至于能不能跑起来,看的看个人努力。由于没有时间将所有相关业务都简述清楚,所以也只好将需求和表设计一起进行。本人也是走了很多弯路的。考虑到系统数据表很多,按照功能不同,分为基础数据表,比赛相关表,赔率相关表,以及特殊数据表4个部分分别进行讲解,请大家关注博客。
今天要关注就是核心的赔率指数表,由于赔率指数表的内容比较多,所以将分为2篇来进行。赔率指数是赛事预测的重要参考条件,虽然有一定的随机因素,但是根据长期的分析和统计,赔率还是具有很强的指导性。所以赔率指数数据库的设计也尤为重要。一方面要考虑到日益增长的赔率数据越来越多,需要确保查询分析的速度;另外一方面赔率的类型比较复杂,设计要比较合理,才能在后续的统计分析和预测模型中方便使用。今天先介绍常规的赔率指数表的设计,主要是胜平负指数,大小盘,半全场,总进球,比分指数的数据库设计。
本文原文地址:http://www.cnblogs.com/asxinyu/p/4476287.html
1.不得不说的XCode泛型基类
2年前刚学会XCode的时候,对XCode研究比较多,总结过一篇文章:关于泛型基类的相关知识,其中对XCode的泛型基类的作用和用法做了一个初步的概述,这些年用XCode做过很多小玩具,但由于项目太小,基本很难用得上泛型基类,因为要求有一些公共的字段才比较有用。这次的赔率指数数据表由于表的结构很多字段都相同,才想到用这个东西,的确简单方便了很多,逻辑也很清晰。非常给你。具体的思想参考上面那篇文章,这里只给出一个泛型基类,继承的截图,以后在代码中再着重介绍。
上面是泛型基类,实际的指数表,会进行继承,这样公共的查询方法就只需要写一次就OK了:
具体的暂时就不过多展开了,好好看那篇总结文章,应该会有收获。所以我们先看看泛型基类对应的表的结构
2.泛型基类的表结构
泛型基类不直接对应表,是作为一个实体基类,为了节省后面的空间,因为所有的指数信息表都要继承该类,所以基类的公共字段在这里发布出来,后面的相关表就直接只写独有的字段,公共字段就省略掉了。主要就是公司名称和赛事名称,场次编号以及时间这些公共信息。
编号 |
字段名 |
类型 |
长度 |
描述 |
备注 |
1 |
Id |
int |
10 |
编号 |
自增主键 |
2 |
CompanyID |
int |
10 |
公司编号 |
|
3 |
CompanyName |
nvarchar(20) |
20 |
公司名称 |
|
4 |
EventName |
nvarchar(20) |
20 |
赛事名称 |
分库用 |
5 |
MatchID |
int |
10 |
场次编号 |
索引 |
6 |
UpdateTime |
datetime |
3 |
更新时间 |
3.胜平负指数表
以前版本将胜平负赔率指数称为欧赔指数,不太准确,这一版本统一改为胜平负指数,指数记录都是指某个赔率公司对某场比赛开出的赔率。胜平负指数的主要内容主要胜平负的赔率和赔率开出的相关信息,如公司,时间,赛前间隔等。也是按照 公司+联赛 进行分库的。看看基本的表结构,注意基类字段省略了:
编号 |
字段名 |
类型 |
长度 |
描述 |
备注 |
7 |
TimeInterval |
float |
53 |
赛前间隔 |
|
8 |
Odds3 |
float |
53 |
主胜赔率 |
|
9 |
Odds1 |
float |
53 |
主平赔率 |
|
10 |
Odds0 |
float |
53 |
主负赔率 |
|
11 |
LossRatio |
float |
53 |
赔付率 |
|
12 |
KellyIndex3 |
float |
53 |
凯利指数3 |
|
13 |
KellyIndex1 |
float |
53 |
凯利指数1 |
|
14 |
KellyIndex0 |
float |
53 |
凯利指数0 |
|
15 |
KellyVar3 |
float |
53 |
凯利方差3 |
|
16 |
KellyVar1 |
float |
53 |
凯利方差1 |
|
17 |
KellyVar0 |
float |
53 |
凯利方差0 |
4.半全场指数表
半全场指数和胜平负指数类似,只不过一个是半场+全场,1个是全场的结果,结果可能性多了,所以赔率肯定是要高的。当然这个玩法还是比较有趣的,有时间再细说。半全场指数表的开盘公司是非常多,但由于数据源的关系,个人能力有限,所以可用的公司没有胜平负赔率那么多,但是这也没关系,有几家就足够了,所以也进行了分库。看看基本结构,注意基类字段省略了:
编号 |
字段名 |
类型 |
长度 |
描述 |
备注 |
7 |
Odd33 |
float |
53 |
胜胜 |
|
8 |
Odd31 |
float |
53 |
胜平 |
|
9 |
Odd30 |
float |
53 |
胜负 |
|
10 |
Odd13 |
float |
53 |
平胜 |
|
11 |
Odd11 |
float |
53 |
平平 |
|
12 |
Odd10 |
float |
53 |
平负 |
|
13 |
Odd03 |
float |
53 |
负胜 |
|
14 |
Odd01 |
float |
53 |
负平 |
|
15 |
Odd00 |
float |
53 |
负负 |
5.大小盘指数表
大小盘国彩的竞彩以及北单暂时都没有大小盘,但考虑到数据的完整性,本项目还是采集了大小盘的数据,和前面的结构类型,也是分库进行。结构很简单:
编号 |
字段名 |
类型 |
长度 |
描述 |
备注 |
7 |
TimeInterval |
float |
53 |
赛前间隔 |
|
8 |
Handicap |
float |
53 |
盘口 |
|
9 |
Big |
float |
53 |
大球赔率 |
|
10 |
Small |
float |
53 |
小球赔率 |
|
11 |
LossRatio |
float |
53 |
赔付率 |
6.总进球指数表
总进球玩法目前国彩是有的,目前是0-7+,和国外的差不多,所以这个数据还是比较有用的,唯一遗憾的是,数据源中总进球的开盘公司基本只有几家。不管怎么样,先采集再说。这个表的结构不仅包括了国彩的情况,还包括了区间的情况,以及单双进球的赔率。所以功能比较多,根据实际的数据源使用:
编号 |
字段名 |
类型 |
长度 |
描述 |
备注 |
7 |
Odd0 |
float |
8 |
0球 |
|
8 |
Odd1 |
float |
8 |
1球 |
|
9 |
Odd2 |
float |
8 |
2球 |
|
10 |
Odd3 |
float |
8 |
3球 |
|
11 |
Odd4 |
float |
8 |
4球 |
|
12 |
Odd5 |
float |
8 |
5球 |
|
13 |
Odd6 |
float |
8 |
6球 |
|
14 |
Odd7 |
float |
8 |
7球 |
|
15 |
Odd01 |
float |
8 |
0-1球 |
欧赔用 |
16 |
Odd23 |
float |
8 |
2-3球 |
欧赔用 |
17 |
Odd46 |
float |
8 |
4-6球 |
欧赔用 |
18 |
OddSingle |
Float |
8 |
单数球 |
欧赔用 |
19 |
OddDouble |
Float |
8 |
双数球 |
欧赔用 |
这些常见的指数表就介绍到这里,下一篇将继续介绍其他指数表的结构。
.NET数据挖掘与机器学习,作者博客: http://www.cnblogs.com/asxinyu
E-mail:1287263703@qq.com