## 上下文
我和我的团队最近在一个拥有数百万页面的足球迷网站上工作。该网站的想法是成为足球支持者的权威资源,尤其是在投注方面。数据库和[应用程序架构]不是特别复杂。这是因为调度程序负责定期重新计算复杂数据并将其存储在表中,这样查询就不必涉及[SQL 聚合]。因此,真正的挑战在于[非功能性需求],例如性能和页面加载时间。
应用领域
体育行业有多个数据提供者,每个提供者都为其客户提供不同的数据集。具体来说,足球行业有四种类型的数据:
- 传记数据:身高、宽度、年龄、他们效力的球队、获得的奖杯、获得的个人奖项以及足球运动员和教练。
- 历史数据:过去比赛的结果和那些比赛中的事件,如进球、助攻、黄牌、红牌、传球等。
- 当前和未来数据:当前赛季的比赛结果和这些比赛中发生的事件,以及未来比赛的表格。
- 实时数据:正在进行的游戏的实时结果和实时事件。
我们的网站涉及所有这些类型的数据,特别关注出于 SEO 原因的历史数据和支持投注的实时数据。
分层表结构
由于我签署了NDA ,我无法与您分享整个数据结构。同时,了解足球赛季的结构就足以了解这种现实情况。
详细地说,足球提供商通常按如下方式组织赛季中的比赛数据:
- 季节:有开始和结束日期,通常持续一个日历年
- 比赛:比赛所属的联赛。竞争的一个实例存在于一个赛季中。[在此处]解有关足球比赛如何运作的更多信息。
- 阶段:与比赛相关的阶段(例如,资格赛阶段、淘汰赛阶段、决赛阶段)。每场比赛都有自己的规则,很多比赛只有一个阶段。
- 组:与阶段相关的组(例如,A 组、B 组、C 组……)。一些比赛,例如世界杯,涉及不同的团体,每个团体都有自己的球队。大多数比赛只有一个通用组适用于所有团队。
- 转:从逻辑的角度来看,对应于一天的比赛。它通常持续一周,涵盖了属于一个小组的所有球队的比赛(例如,MLS 有 17 场主场比赛和 17 场客场比赛;因此,它有 34 个回合)。
- 比赛:两支足球队之间的比赛。