【原创】C#搭建足球赛事资料库与预测平台(3) 基础数据表设计

简介:

          本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 

开源C#彩票数据资料库系列文章总目录http://www.cnblogs.com/asxinyu/p/4329642.html 

  本篇文章开始将逐步介绍使用C#搭建足球赛事资料库与预测平台的相关细节。还是先从数据库开始,从本文开始将逐步对每个核心实体类和数据库设计相关的内容进行讲解,并公布源代码,至于能不能跑起来,看的看个人努力。数据库很庞大,且采用了XCode非常牛逼的分库技术,秒杀千万级乃至上亿的数据需求。而只需要最基本的C#技术,对我这种数据库文盲来说,真的帮助非常大。

  由于数据表和业务是直接相关的,没有时间将所有相关业务都简述清楚,所以也只好将需求和表设计一起进行。相辅相成吧,如果思路有问题,大家可以交流提出自己的想法,当然必须要对足球赛事资料库有一定的了解和接触才行,本人也是走了很多弯路的。考虑到系统数据表很多,按照功能不同,分为基础数据表,比赛相关表,赔率相关表,以及特殊数据表4个部分分别进行讲解,请大家关注博客。

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

1.基础数据表的范围

  基础数据表虽然不重要,但是必不可少的部分,主要包括以下几个表及其作用:

1.赛事资料表:表明某一项赛事属于哪个国家,哪个洲,以及对应的赛事级别,赛事类型等信息,不同的级别在分析预测时筛选场次有用。

2.赛季资料表:赛季是一个重要的东西,每一场比赛(除了友谊赛之外)都属于某个赛季,而赛季又属于某个联赛的,赛季名称以及编号是查询中经常要用到的东西,历史赛季可以用于数据检验和统计,当前赛季才是我们要预测和掌握的,都是非常重要的。

3.球队资料表:主要存储球队的名称,以及缩写,球队编号等信息,主要目的是标识球队的唯一性,在混合数据源采集的时候,需要对名称进行统一,本平台只是考虑到以后的对接,可能用得上,先规划好,实际上前2个版本也有过类似的情况,非常复杂,所以最好还是要稳定一个数据源。

4.赛季轮次表:每个赛季,不管是联赛还是杯赛,都是按照轮进行的,每一轮不仅有轮号,最好是划分一个编号,这样便于操作。这种数据量比较小,没必要分库。

5.赔率公司信息表:赔率公司信息表主要存储常规的的赔率公司的信息,以及是否采集相关的赔率类型,数据库初始化的时候就已经固定好了,除非特殊要求可以自己添加,一般不需要管。已经默认包括了很多权威的赔率公司,足够使用。

  下面将对上述5个基础的数据库的结构进行分析。

2.赛事资料表

   根据联赛的重要程度、权威性,我们手动对联赛的等级进行了分类,1-7,1最高,像欧洲五大联赛就属于第1级别的。其他二级联赛或者欧洲其他一些联赛都分为2,3级别。赛事资料的国家和洲际名称,可以根据实际情况进行更新,由于我的数据源中已经规划得比较好,采集的时候,流程控制一下,所以也没有特殊处理。赛事类型暂时只有2种:联赛和杯赛,分布是1和2,详细的结构如下,本项目的所有数据表设计都遵循了XCode推荐的用法。

编号

字段名

类型

长度

描述

备注

1

Id

int

10

编号

自增主键

2

EventId

int

10

赛事编号

索引

3

EventName

nvarchar(50)

50

赛事名称

索引

4

Country

nvarchar(20)

20

国家

 

5

Levels

int

10

赛事级别

 

6

TeamCount

int

10

球队数

 

7

InternalName

nvarchar(50)

50

洲名称

 

8

EventType

int

10

赛事类型

 

9

IsUse

bit

1

使用有效

 

3.赛季资料表

  1个赛事,分为多个赛季,一般是1年1个赛季,赛季编号也是一个重要的信息,在很多地方都有用。赛季资料表,基本在第一次更新后,其他很少更新,一年一次。亚洲一般是1年1个赛季,3-11月,像欧洲一般是每年的8月到第二年的5左右,每个国家不一样,但更新频率很低。本项目在设计的时候,对一些简单的字段都进行了冗余,比如赛季表中也要包括赛事编号,名称等信息,是因为这些信息的使用非常频繁,如果频繁通过扩展属性去获取,哪怕丝毫缓存也不适当,所以基础信息表以至于实际的场次表中,对这些常规信息字段都进行了冗余。如下图所示:

编号

字段名

类型

长度

描述

备注

1

Id

int

4

编号

自增主键

2

EventId

int

4

赛事编号

索引

3

EventName

nvarchar(50)

50

赛事名称

 

4

SeasonId

int

4

赛季编号

索引

5

SeasonName

nvarchar(50)

100

赛季名称

 

6

IsHistory

bit

1

是否历史

 

4.球队资料表

  作为一个备用资料,可以比较简单的看一看,主要是球队的名称和编号,以及当前的赛季信息:

编号

字段名

类型

长度

描述

备注

1

Id

int

4

编号

自增主键

2

TeamId

int

4

球队编号

索引

3

Name

nvarchar(30)

60

球队名称

索引

4

OnceName

nvarchar(60)

60

曾用名

 

5

EventName

nvarchar(30)

60

赛事

 

6

SeasonId

int

4

赛季编号

索引

7

SeasonName

nvarchar(30)

60

赛季名称

 

5.赛季轮次表

  赛季轮次表将每个赛季每一轮的信息保存下来,每一场比赛都属于1个轮次,同时考虑到杯赛的轮,是晋级形式,如小组赛,半决赛,决赛等等,就不保存轮次号,而是保存轮名称(RoundName),是联赛的时候,RoundName等于字符串的RoundId。  

编号

字段名

类型

长度

描述

备注

1

Id

int

4

编号

 

2

SeasonID

int

4

赛季编号

 

3

RoundId

int

4

轮编号

 

4

RoundName

nvarchar(30)

60

轮名称

杯赛

5

EventName

nvarchar(30)

60

赛事名称

 

6

EventId

int

4

赛事编号

 

7

EventType

int

10

赛事类型

 

6.赔率公司信息表

  这里的赔率公司主要是采集欧赔和亚盘及大小盘的动态赔率用的。其他半全场,比分的指数基本都只采集几个固定的公司,如澳门,威廉。

编号

字段名

类型

长度

描述

备注

1

Id

int

4

编号

自增主键

2

Name

nvarchar(30)

60

名称

索引

3

OnceName

nvarchar(30)

60

曾用名

 

4

ComanyID

int

4

公司编号

索引

5

IsTrading

bit

1

是否交易平台

 

6

IsAuthority

bit

1

是否权威

 

7

IsEurope

bit

1

是否欧盘

 

8

IsAsia

bit

1

是否亚盘

 

9

IsBigSmall

bit

1

是否大小盘

 

10

IsGolas

bit

1

是否进球盘

 

今天的基础数据库设计就到此为止,由于全部采用XCode进行设计和开发,所以数据库的设计直接使用的XML文件,然后用XCoder生成实体类即可,如下图所示:

是不是很爽,我这里直接提供了XML文件,懂XCode的朋友可以先睹为快,至于不懂X组件的,接着往下看,这些数据库的实体操作类都会逐步公开的。

下载:基础信息实体.xml

本文转自叶小钗 h数据之巅博客园博客,原文链接:http://www.cnblogs.com/asxinyu/p/Smart_Lottery_FootBall_DataBase_3.html,如需转载请自行联系原作者



相关文章
|
3月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
3月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
69 8
|
1月前
|
缓存 编译器 API
C# 一分钟浅谈:Roslyn 编译器平台介绍
【10月更文挑战第27天】Roslyn 是 Microsoft 开发的开源编译器平台,支持 C# 和 VB.NET。它将编译过程分解为多个阶段,并提供丰富的 API 供开发者分析、生成和修改代码。本文介绍了 Roslyn 的基本概念、安装配置、基础示例和高级应用,帮助开发者更好地理解和使用这一强大工具。
47 0
|
3月前
|
编译器 C# Android开发
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
327 8
|
3月前
|
SQL 开发框架 安全
并发集合与任务并行库:C#中的高效编程实践
在现代软件开发中,多核处理器普及使多线程编程成为提升性能的关键。然而,传统同步模型在高并发下易引发死锁等问题。为此,.NET Framework引入了任务并行库(TPL)和并发集合,简化并发编程并增强代码可维护性。并发集合允许多线程安全访问,如`ConcurrentQueue<T>`和`ConcurrentDictionary<TKey, TValue>`,有效避免数据不一致。TPL则通过`Task`类实现异步操作,提高开发效率。正确使用这些工具可显著提升程序性能,但也需注意任务取消和异常处理等常见问题。
55 1
|
4月前
|
C# 数据库
C# 使用 DbDataReader 来访问数据库
C# 使用 DbDataReader 来访问数据库
73 2
|
4月前
|
数据库 C#
C# 使用SqlDataAdapter和DataSet来访问数据库
C# 使用SqlDataAdapter和DataSet来访问数据库
37 0
|
7月前
|
数据采集 前端开发 数据挖掘
Fizzler库+C#:从微博抓取热点的最简单方法
本文介绍如何使用Fizzler库和C#构建微博热点信息爬虫。通过Fizzler的CSS选择器定位关键信息,提取热点标题和排名,实现微博内容的智能挖掘。示例代码展示单线程和多线程采集方法,并涉及代理IP使用。
Fizzler库+C#:从微博抓取热点的最简单方法
|
7月前
|
算法 安全 C#
C#版开源免费的Bouncy Castle密码库
C#版开源免费的Bouncy Castle密码库