一 前言
二 数据库选择
2.1 MySQL数据库
2.2 MySQL优点
1. MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3.为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
4.支持多线程,充分利用 CPU 资源。
5.优化的 SQL查询算法,有效地提高查询速度。
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7.提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
8.提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
9.提供用于管理、检查、优化数据库操作的管理工具。
10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
11.支持多种存储引擎。
12.MySQL 是开源的,所以你不需要支付额外的费用。
13.MySQL 使用标准的 SQL数据语言形式。
14.MySQL 对 PHP 有很好的支持,PHP是比较流行的 Web 开发语言。
15.MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
三 数据库设计
数据来源
数据表
3.1 用户信息表
package models
import "time"
type User struct {
ID int `json:"id" gorm:"column:id"`
Email string `json:"email" gorm:"column:email"`
Password string `json:"password" gorm:"column:password"`
CreateTime time.Time `json:"create_time" gorm:"column:create_time"`
IsValid string `json:"is_valid" gorm:"column:is_valid"`
}
3.2 历届冬奥会国家参赛人数表
package models
type CountryHuman struct {
ID int `json:"id" gorm:"column:id"`
Noc string `json:"noc" gorm:"column:noc"`
Country string `json:"country" gorm:"column:country"`
CountryMap string `json:"country_map" gorm:"column:country_map"`
Men int `json:"men" gorm:"column:men"`
Women int `json:"women" gorm:"column:women"`
Total int `json:"total" gorm:"column:total"`
Year int `json:"year" gorm:"column:year"`
}
3.3 历届冬奥会国家获得奖牌总表
package models
type CountryMedals struct {
ID int `json:"id" gorm:"column:id"`
Country string `json:"country" gorm:"column:country"`
Noc string `json:"noc" gorm:"column:noc"`
Gold int `json:"gold" gorm:"column:gold"`
Silver int `json:"silver" gorm:"column:silver"`
Bronze int `json:"bronze" gorm:"column:bronze"`
Total int `json:"total" gorm:"column:total"`
Year int `json:"year" gorm:"column:year"`
}
3.4 历届冬奥会国家获得奖牌比赛项目表
package models
type CountryEventMedals struct {
ID int `json:"id" gorm:"column:id"`
Country string `json:"country" gorm:"column:country"`
Noc string `json:"noc" gorm:"column:noc"`
Gold int `json:"gold" gorm:"column:gold"`
Silver int `json:"silver" gorm:"column:silver"`
Bronze int `json:"bronze" gorm:"column:bronze"`
Total int `json:"total" gorm:"column:total"`
Sport string `json:"sport" gorm:"column:sport"`
Year int `json:"year" gorm:"column:year"`
}
3.5 获得奖牌的运动员信息表
package models
type AthleteInformation struct {
ID int `json:"id" gorm:"column:id"`
Name string `json:"name" gorm:"column:name"`
Information string `json:"information" gorm:"column:information"`
Prize string `json:"prize" gorm:"column:prize"`
Picture string `json:"picture" gorm:"column:picture"`
}
3.6 具体比赛项目获得奖牌的运动员表
package models
type AthletesMedals struct {
ID int `json:"id" gorm:"column:id"`
Event string `json:"event" gorm:"column:event"`
Gold string `json:"gold" gorm:"column:gold"`
GoldNoc string `json:"gold_noc" gorm:"column:gold_noc"`
Silver string `json:"silver" gorm:"column:silver"`
SilverNoc string `json:"silver_noc" gorm:"column:silver_noc"`
Bronze string `json:"bronze" gorm:"column:bronze"`
BronzeNoc string `json:"bronze_noc" gorm:"column:bronze_noc"`
Sport string `json:"sport" gorm:"column:sport"`
Year int `json:"year" gorm:"column:year"`
}
3.7 比赛项目信息表
package models
type SportDescription struct {
ID int `json:"id" gorm:"column:id"`
Sport string `json:"sport" gorm:"column:sport"`
Description string `json:"description" gorm:"column:description"`
}
3.8 比赛项目精彩视频表历届冬奥会
package models
type SportVideo struct {
ID int `json:"id" gorm:"column:id"`
Name string `json:"name" gorm:"column:name"`
Describe1 string `json:"describe1" gorm:"column:describe1"`
Video1 string `json:"video1" gorm:"column:video1"`
Img1 string `json:"img1" gorm:"column:img1"`
Describe2 string `json:"describe2" gorm:"column:describe2"`
Video2 string `json:"video2" gorm:"column:video2"`
Img2 string `json:"img2" gorm:"column:img2"`
Describe3 string `json:"describe3" gorm:"column:describe3"`
Video3 string `json:"video3" gorm:"column:video3"`
Img3 string `json:"img3" gorm:"column:img3"`
Year int `json:"year" gorm:"column:year"`
}
3.9 下届冬奥会预测因素表
package models
type Predict struct {
ID int `json:"id" gorm:"column:id"`
Name string `json:"name" gorm:"column:name"`
Noc string `json:"noc" gorm:"column:noc"`
Men int `json:"men" gorm:"column:men"`
Women int `json:"women" gorm:"column:women"`
IsHome int `json:"is_home" gorm:"column:is_home"`
HumanGdp float64 `json:"human_gdp" gorm:"column:human_gdp"`
Gdp float64 `json:"gdp" gorm:"column:gdp"`
HumanTotal int `json:"human_total" gorm:"column:human_total"`
SocialSystem int `json:"social_system" gorm:"column:social_system"`
GoldRank int `json:"gold_rank" gorm:"column:gold_rank"`
SilverRank int `json:"silver_rank" gorm:"column:silver_rank"`
BronzeRank int `json:"bronze_rank" gorm:"column:bronze_rank"`
GoldPercent float64 `json:"gold_percent" gorm:"column:gold_percent"`
SilverPercent float64 `json:"silver_percent" gorm:"column:silver_percent"`
BronzePercent float64 `json:"bronze_percent" gorm:"column:bronze_percent"`
GoldCount int `json:"gold_count" gorm:"column:gold_count"`
SilverCount int `json:"silver_count" gorm:"column:silver_count"`
BronzeCount int `json:"bronze_count" gorm:"column:bronze_count"`
Year int `json:"year" gorm:"column:year"`
}
3.10 下届冬奥会预测奖牌表
package models
type PredictResult struct {
ID int `json:"id" gorm:"column:id"`
CountryName string `json:"country_name" gorm:"column:country_name"`
GoldCount int `json:"gold_count" gorm:"column:gold_count"`
SilverCount int `json:"silver_count" gorm:"column:silver_count"`
BronzeCount int `json:"bronze_count" gorm:"column:bronze_count"`
}