基于Python的篮球比赛数据分析与可视化毕业设计源码 📅 发布时间:2026/9/11 22:04:41 👁 浏览次数: 博主介绍✌ 专注于Java,python,✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的本研究的主要目的在于构建一套基于Python语言的篮球比赛数据采集、清洗、分析与可视化完整工作流旨在为篮球领域的科研工作者、教练团队及数据爱好者提供一种高效、可复现且易扩展的数据处理与洞察工具。通过对NBA官方统计数据库以及公开的比赛回放数据进行系统化采集本研究将实现对球员个人表现、球队战术执行以及比赛节奏等多维度指标的量化描述。研究中将采用Python生态系统中的pandas、NumPy等核心库完成数据清洗与预处理利用scikit-learn进行特征工程与模型构建并通过Matplotlib、Seaborn及Plotly实现交互式可视化。该工作流将支持对比赛过程的时间序列分析、球员效率指标的多变量回归以及球队间相似度的聚类分析从而揭示不同战术体系下的表现差异与优势。此外本研究还计划开发一个基于Flask或Streamlit的Web接口使非技术背景用户能够通过图形化操作上传数据并即时获得可视化结果。该接口将提供多种交互式仪表盘包括球员热力图、球队得分曲线以及关键事件热图等进一步提升数据解读的直观性与可操作性。通过上述方法本研究期望填补现有篮球数据分析工具在可视化深度与易用性方面的不足为后续学术研究提供标准化的数据处理模板并为教练团队在赛前准备、赛中调整及赛后总结提供决策支持。最终本研究将以开源代码与文档的形式发布鼓励学术界与业界共同完善与扩展从而推动篮球数据科学的持续发展。二、研究意义本研究在理论层面具有重要意义首先通过系统化地将Python生态系统与篮球比赛数据结合填补了现有体育数据分析领域中对高效、可复现工作流缺乏的空白其次该研究提出的多维度特征工程方法能够揭示球员技术动作与战术执行之间的内在关联为运动科学与人工智能交叉研究提供了新的理论框架再次基于时间序列与聚类分析的可视化技术使得传统定量指标与定性观察相互补充推动了体育统计学方法论的创新。在方法论层面本研究通过整合pandas、NumPy、scikit-learn等核心库实现了数据清洗、特征提取与模型训练的全流程自动化同时利用Matplotlib、Seaborn及Plotly构建的交互式可视化平台使得复杂的数据结构能够以直观的图形呈现从而降低技术门槛提升数据解读效率此外基于Flask或Streamlit的Web接口设计为非专业用户提供了可操作的分析工具进一步促进了数据科学与体育实践之间的融合。在实践层面本研究为篮球教练团队提供了可量化的决策支持系统能够在赛前对对手战术进行预测、在赛中实时监测球队节奏并在赛后进行效果评估同时学术界可利用该工作流开展大规模纵向研究探讨训练干预与比赛表现之间的因果关系社会层面该平台的开源发布将推动高校与社区体育组织共享数据资源提升公众对篮球运动科学化管理的认知。综上所述本研究不仅在学术上提出了创新的方法与理论也在实践中具备显著的应用价值为篮球数据科学的发展奠定了坚实基础。三、国内外研究现状在国际学术界篮球比赛数据分析与可视化已成为体育数据科学的核心研究领域之一。早期研究主要集中在传统统计指标的计算与解释例如效率值PER、胜利贡献度Win Shares等这些指标通过对球员得分、篮板、助攻等基本数据进行加权求和提供了对个人表现的定量评估。随后随着NBA官方提供的详细比赛事件日志以及视频跟踪技术的普及研究者开始运用时间序列分析与机器学习方法对比赛节奏、球员移动轨迹以及投篮决策进行更深层次的探讨。例如基于卷积神经网络的投篮预测模型能够利用球员位置与身体姿态数据实现对射门成功率的实时评估而强化学习框架则被用于模拟教练决策过程探索最优战术组合。可视化技术方面学者们开发了交互式仪表盘与热力图工具使得复杂的多维数据能够以直观的方式呈现给教练与分析师从而加速决策周期。综合而言国外研究已形成以大数据、深度学习与交互可视化为三大支柱的完整体系。在国内篮球数据分析起步相对较晚但近年来随着CBA联赛信息化进程的加快以及高校体育信息学科的发展研究热度迅速提升。主要研究方向可归纳为数据采集与清洗、性能指标构建、战术行为识别以及可视化展示。国内学者普遍采用Python生态系统中的pandas、NumPy进行数据预处理并利用scikit-learn进行特征工程与模型训练在视觉呈现方面Matplotlib与Seaborn被广泛用于生成静态图表而Plotly、Bokeh等库则被用于构建交互式仪表盘。值得注意的是一些高校项目已将球员跟踪数据与视频分析相结合通过OpenCV实现对球员位置的实时检测并将其映射到三维投篮热力图中为教练提供战术调整建议。与此同时国内研究也关注伤病预测与训练负荷管理利用统计学方法评估高强度训练对球员受伤风险的影响为运动医学提供数据支持。在成果层面国外已形成多套成熟的分析框架与工具。例如NBA官方提供的“Basketball Reference”网站集成了丰富的高级统计数据与可视化图表学术界则发布了基于Python的数据抓取脚本与Jupyter Notebook教程帮助研究者快速构建自己的分析流水线。国内方面CBA联赛官方已开始公开比赛事件日志部分高校通过开源项目实现了对CBA数据的自动化爬取与清洗并在GitHub上发布了完整的数据集与分析代码此外一些科研团队利用深度学习模型对中国篮球比赛视频进行动作识别取得了较高的准确率为国内篮球技术研究提供了新的方法论。总体来看国内外在篮球比赛数据分析与可视化领域均已形成多元化的研究路径。国外侧重于大规模数据与深度学习技术的深度融合强调模型性能与实时性国内则更注重数据获取与本土化应用致力于构建适合中国篮球生态的数据处理与决策支持系统。未来随着计算资源的进一步普及以及跨学科研究的深入二者在方法论、技术手段与应用场景方面有望实现更加紧密的融合为篮球科学研究与实践提供更为强大的技术支撑。四、预期达到目标及解决的关键问题本研究的预期目标主要聚焦于构建一套完整、可复现且易扩展的Python数据分析与可视化工作流以满足篮球比赛数据科学研究与实践应用的多重需求。首先计划通过爬取NBA、CBA等官方赛事数据库以及公开视频回放获取球员事件日志、统计指标和运动轨迹等多源异构数据并在pandas框架下完成统一格式化与缺失值填补实现高质量的数据基础其次在特征工程层面将结合球员技术动作、战术执行与比赛节奏等维度构造一系列可解释性强的指标如效率值、得分贡献率、热力图密度等并利用scikit‑learn实现聚类与回归模型以揭示不同球队与球员之间的表现差异再次针对可视化需求将采用Matplotlib、Seaborn及Plotly等库开发交互式仪表盘与热力图展示使得教练团队能够在赛前对对手进行战术预测、在赛中实时监测球队节奏并在赛后进行效果评估最后计划将完整的代码与数据集以开源形式发布至GitHub并配备详细文档与使用教程以促进学术界与业界的共同复现与迭代。在实现上述目标过程中研究将面临若干关键问题。数据质量与完整性是首要挑战之一由于不同联赛的数据格式、字段命名及缺失值处理方式存在差异如何在保证一致性的前提下实现高效的数据清洗与标准化将直接影响后续模型的可靠性其次实时性与可扩展性也是重要考量。教练团队在比赛中往往需要秒级或分钟级的决策支持而传统批处理方式难以满足此需求如何在Python生态中实现流式数据处理与快速推理将是技术突破点再次模型解释性与可视化易用性同样不可忽视。深度学习模型虽能提升预测精度但其黑箱特性可能削弱教练团队对结果的信任度如何在保持性能的同时提供可解释的特征重要性分析与可视化呈现将是实现实际落地的关键最后跨平台部署与用户体验也是亟待解决的问题。不同用户群体数据科学家、教练、运动员对界面交互、功能布局及数据展示方式有各自偏好如何在单一Web应用中兼顾多方需求并通过可配置的仪表盘实现快速迭代将决定工具的普及程度。综上所述本研究旨在通过系统化的数据采集、清洗、特征工程、模型构建与交互式可视化搭建一套面向篮球比赛数据分析与决策支持的完整技术体系同时在实现过程中将重点攻克数据质量整合、实时处理效率、模型可解释性以及多用户体验等关键技术难题以期为篮球科学研究与实践应用提供可持续、可扩展且高效的技术支撑。五、研究内容本研究旨在构建一套基于Python的篮球比赛数据分析与可视化完整工作流涵盖数据采集、清洗、特征工程、模型构建、结果解释以及交互式可视化展示等关键环节。首先研究将利用网络爬虫技术从NBA官方数据库、CBA赛事统计平台以及公开的比赛视频回放中获取原始事件日志与运动轨迹数据并通过API接口或网页抓取实现自动化采集随后在pandas框架下对不同来源的数据进行统一格式化处理解决字段命名不一致、时间戳格式差异以及缺失值分布不均等问题以保证后续分析的可比性与可靠性。接下来研究将针对球员技术动作、球队战术执行与比赛节奏等多维度信息设计一系列可解释性强的统计指标如效率值、得分贡献率、投篮热力图密度以及节奏变化曲线并结合scikit‑learn实现特征选择与降维以提炼出最具预测力的特征集合。随后在模型层面研究将采用多种机器学习方法如随机森林、梯度提升树、支持向量机以及深度学习模型如卷积神经网络、循环神经网络对球员表现与比赛结果进行预测并通过交叉验证与网格搜索等技术调参确保模型在不同赛季与联赛中的泛化能力。为了提高模型的可解释性研究将引入SHAP值、LIME等方法对重要特征进行可视化解释使教练团队能够理解模型决策依据。随后研究将基于Matplotlib、Seaborn及Plotly等Python可视化库开发交互式仪表盘展示球员热力图、球队得分曲线、关键事件时间轴以及模型预测结果并通过Flask或Streamlit构建Web接口使非技术用户能够通过浏览器上传数据并即时获得可视化分析。为验证研究方法的有效性研究将选取历史赛季数据进行回测比较模型预测准确率与传统统计指标的差异并通过案例分析展示可视化工具在实际比赛准备与战术调整中的应用价值。最后研究将以开源方式发布完整代码、数据处理脚本与使用文档并在GitHub上创建项目仓库邀请学术界与业界共同复现与改进以促进篮球数据科学的持续发展。六、需求分析用户需求方面本研究的目标用户主要包括篮球教练团队、数据分析师、体育科学研究人员以及篮球爱好者。教练团队需要在赛前快速了解对手战术倾向与球员状态在赛中即时监测球队节奏与关键事件并在赛后进行效果评估与训练调整数据分析师则期望通过统一的数据接口获取完整的比赛事件日志、运动轨迹以及统计指标利用机器学习方法挖掘隐藏的表现模式体育科学研究人员关注的是高质量、可复现的数据处理流程以便开展纵向研究、伤病预测与训练负荷分析篮球爱好者则更倾向于通过交互式可视化工具获取比赛亮点与球员技术动作的直观展示。为满足上述多元化需求系统必须具备数据采集自动化、清洗标准化、特征工程灵活性、模型解释可视化以及多终端访问等功能。用户对界面友好度与操作简便性的要求亦不容忽视尤其是非技术背景的教练与爱好者他们期望通过图形化操作上传数据、选择分析模块并即时查看结果而无需编写代码或进行复杂配置。与此同时系统需支持多语言与多平台访问以适应不同地区用户的使用习惯并提供详细的帮助文档与使用教程确保用户能够在短时间内熟练掌握核心功能。综上所述用户需求侧重于高效的数据获取与处理、可解释的模型输出、交互式可视化展示以及友好的操作体验。功能需求方面系统首先需要实现数据采集模块该模块通过爬虫或API接口从NBA、CBA等官方平台获取比赛事件日志、球员统计与运动轨迹并支持对视频回放进行帧级解析将视觉信息转化为结构化数据。随后数据清洗与标准化功能将对不同来源的数据进行字段映射、时间戳统一、缺失值填补与异常值检测保证后续分析的准确性。特征工程模块将提供多种统计指标计算器如效率值、得分贡献率、投篮热力图密度等并支持用户自定义特征组合与降维方法。模型构建功能将集成多种机器学习与深度学习算法支持模型训练、交叉验证、超参数调优与性能评估并通过SHAP或LIME等工具实现特征重要性解释。可视化展示模块将利用Matplotlib、Seaborn与Plotly等库生成静态图表与交互式仪表盘涵盖热力图、时间轴、得分曲线及模型预测结果用户可通过Web界面进行筛选、放大与导出。系统还需提供权限管理与数据安全功能确保敏感信息的保密性并支持多终端访问包括桌面浏览器与移动设备。最后开放API与插件接口将允许第三方开发者扩展功能或集成到现有的教练管理系统中以实现更广泛的生态合作。七、可行性分析经济可行性方面本研究所需的主要成本集中在数据获取与服务器运维。由于NBA与CBA官方均提供公开的比赛统计接口且大多数赛事数据可通过爬虫技术免费获取数据采集成本相对较低若需更高精度的运动轨迹或视频帧解析则可能需要购买专业的跟踪设备或使用第三方视频分析服务费用在数万元至十万元之间。服务器方面Python生态下的数据处理与模型推理可在云平台上以按需计费方式运行采用GPU实例进行深度学习训练时每小时成本约为数百元而日常推理与可视化服务可使用CPU实例成本更低。综合来看项目初期投入主要为人员工资与服务器租赁总预算预计在十万元至二十万元之间且随着用户规模扩大可通过订阅服务或企业合作实现收入回流从而保证长期经济可持续性。社会可行性方面本研究聚焦于提升篮球比赛分析的科学化与数据化水平具有明显的社会价值。首先教练团队通过本系统获得精准的数据洞察可优化战术决策与训练安排从而提升竞技水平其次体育科研人员借助可复现的数据处理流程与模型框架可开展更为严谨的学术研究为运动医学、心理学等交叉领域提供数据支持再次公众与爱好者通过交互式可视化工具获得直观的比赛解读能够增强对篮球运动的兴趣与参与度。与此同时项目将遵循数据隐私与安全法规对球员个人信息进行匿名化处理并提供透明的数据使用说明避免潜在的伦理争议。鉴于国内外对体育数据科学日益重视本研究在社会层面具备较高的接受度与推广潜力。技术可行性方面Python生态系统已成熟且广泛应用于数据科学与机器学习领域。pandas、NumPy、scikit‑learn等库提供高效的数据处理与模型训练功能OpenCV、YOLO等视觉算法能够实现运动轨迹的自动提取Plotly、Bokeh等可视化工具支持交互式仪表盘的快速搭建。现有的深度学习框架如PyTorch、TensorFlow可满足投篮预测与动作识别模型的训练需求并且在GPU服务器上能够实现秒级推理。Web框架Flask或Streamlit则可实现跨平台访问与用户权限管理。鉴于上述技术已在学术与工业界得到广泛验证且社区支持活跃项目技术实现风险可控。唯一需要关注的技术难点在于数据质量的异构融合与实时性要求可通过模块化设计与异步任务调度解决。综上所述在经济、社会与技术三维度均具备可行性项目能够顺利落地并实现预期目标。八、功能分析系统功能模块可划分为七大核心部分分别为数据采集与接口、数据清洗与标准化、特征工程与指标计算、模型训练与评估、预测推理与结果解释、交互式可视化展示以及用户管理与安全控制。每一模块均以Python生态为基础采用模块化设计保证系统的可维护性与可扩展性。数据采集与接口模块负责从NBA、CBA等官方赛事数据库以及公开视频回放中获取原始比赛事件日志、球员统计与运动轨迹信息。该模块实现爬虫脚本与RESTful API调用并支持定时任务调度以确保数据的实时性与完整性。采集完成后原始数据将以JSON或CSV格式存入本地或云端数据库为后续处理提供统一入口。数据清洗与标准化模块对不同来源的数据进行字段映射、时间戳统一、缺失值填补与异常值检测。采用pandas进行批量处理并通过自定义校验规则实现数据一致性检查。清洗完成后生成标准化的DataFrame结构并将其持久化至关系型数据库或分布式文件系统以供特征工程模块调用。特征工程与指标计算模块基于清洗后的数据构造多维度统计指标包括但不限于效率值、得分贡献率、投篮热力图密度、节奏变化曲线以及球员运动轨迹的速度与加速度特征。该模块支持用户自定义特征组合与降维方法并将计算结果存入特征表供模型训练与可视化使用。模型训练与评估模块集成多种机器学习与深度学习算法如随机森林、梯度提升树、支持向量机以及卷积神经网络和循环神经网络。通过交叉验证与网格搜索实现超参数调优并利用scikit‑learn或PyTorch框架完成模型训练。评估阶段将输出准确率、召回率、AUC等指标并将最佳模型序列化保存供预测推理模块调用。预测推理与结果解释模块在接收到用户请求后加载已训练好的模型进行实时推断。为提升可解释性该模块集成SHAP或LIME工具对重要特征进行贡献度可视化并将预测结果与解释信息一起返回给前端展示。交互式可视化展示模块利用Plotly、Bokeh等库构建仪表盘展示球员热力图、球队得分曲线、关键事件时间轴以及模型预测结果。用户可通过Web浏览器进行筛选、放大与导出操作并支持多终端适配。该模块与预测推理模块紧密耦合确保数据更新后可即时刷新。用户管理与安全控制模块负责身份认证、权限分配与数据访问控制。采用OAuth2或JWT机制实现单点登录并通过角色管理实现对不同功能页面的访问限制。同时该模块对敏感信息进行加密存储并记录操作日志满足数据隐私与合规要求。以上七大模块相互衔接形成从原始数据获取到最终可视化结果交付的闭环系统。通过模块化设计与标准接口系统具备高度可维护性与扩展性可在未来集成更多联赛数据、引入更复杂的深度学习模型或支持移动端访问以满足不断演进的篮球数据分析需求。九、数据库设计表teams| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| team_id | 球队唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || team_name | 球队名称。 | 50 | VARCHAR(50) NOT NULL | | || league | 所属联赛如NBA、CBA。 | 20 | VARCHAR(20) NOT NULL | | || founded_year | 成立年份。 | 4 | YEAR NOT NULL | | || city | 主队所在城市。 | 30 | VARCHAR(30) NULL | | |表players| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| player_id | 球员唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || player_name | 球员姓名。 | 50 | VARCHAR(50) NOT NULL | | || team_id | 所属球队标识符。 | 10 | INT(11) NOT NULL | FK → teams.team_id | 外键 || position | 球员位置如PG、SG、SF、PF、C。 | 5 | VARCHAR(5) NOT NULL | | || height_cm | 身高单位厘米。 | 4 | SMALLINT(5) NULL | | || weight_kg | 体重单位公斤。 | 4 | SMALLINT(5) NULL | | || birth_date | 出生日期。 | 10 | DATE NULL | | |表matches| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| match_id | 比赛唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || home_team_id | 主队标识符。 | 10 | INT(11) NOT NULL | FK → teams.team_id | 外键 || away_team_id | 客队标识符。 | 10 | INT(11) NOT NULL | FK → teams.team_id | 外键 || match_date | 比赛日期。 | 10 | DATE NOT NULL | | || venue | 比赛场馆。 | 50 | VARCHAR(50) NULL | | |表events| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| event_id | 事件唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || match_id | 所属比赛标识符。 | 10 | INT(11) NOT NULL | FK → matches.match_id | 外键 || player_id | 执行事件的球员标识符。 | 10 | INT(11) NOT NULL | FK → players.player_id | 外键 || event_type | 事件类型如投篮、抢断、盖帽等。 | 20 | VARCHAR(20) NOT NULL | | || timestamp | 事件发生时间格式为秒数或毫秒数。 | 10 | INT(11) NOT NULL | | || result | 投篮是否命中等结果。 | 10 | VARCHAR(10) NULL | | |表stats| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| stat_id | 统计记录唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || player_id | 球员标识符。 | 10 | INT(11) NOT NULL | FK → players.player_id | 外键 || match_id | 比赛标识符。 | 10 | INT(11) NOT NULL | FK → matches.match_id | 外键 || points | 得分。 | 4 | SMALLINT(5) NOT NULL | | || rebounds_total | 总篮板。 | 4 | SMALLINT(5) NOT NULL | | || rebounds_offensive | 助攻篮板。 | 4 | SMALLINT(5) NOT NULL | | || rebounds_defensive | 防守篮板。 | 4 | SMALLINT(5) NOT NULL | | || assists | 助攻。 | 4 | SMALLINT(5) NOT NULL | | || steals | 抢断。 | 4 | SMALLINT(5) NOT NULL | | || blocks | 封盖。 | 4 | SMALLINT(5) NOT NULL | | || turnovers | 扣篮失误。 | 4 | SMALLINT(5) NOT NULL | | |表features| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| feature_id | 特征记录唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || stat_id | 对应统计记录标识符。 | 10 | INT(11) NOT NULL | FK → stats.stat_id | 外键 || feature_name | 特征名称如PER、TS%。 | 30 | VARCHAR(30) NOT NULL | | || value | 特征数值。 | 10 | FLOAT(10,4) NOT NULL | | |表models| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| model_id | 模型唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || model_name | 模型名称。 | 50 | VARCHAR(50) NOT NULL | | || algorithm_type | 算法类型如随机森林、CNN等。 | 20 | VARCHAR(20) NOT NULL | | || created_at | 模型创建时间。 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | | |表predictions| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| prediction_id | 预测记录唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || match_id | 对应比赛标识符。 | 10 | INT(11) NOT NULL | FK → matches.match_id | 外键 || player_id | 对应球员标识符。 | 10 | INT(11) NOT NULL | FK → players.player_id | 外键 || model_id | 使用的模型标识符。 | 10 | INT(11) NOT NULL | FK → models.model_id | 外键 || predicted_value | 预测值如投篮命中概率。 | 10 | FLOAT(10,4) NOT NULL | | |表users| 字段名 | 说明 | 大小 | 类型 | 主外键 | 备注 ||--------|------|------|------|--------|------|| user_id | 用户唯一标识符。 | 10 | INT(11) NOT NULL AUTO_INCREMENT | PK | 主键 || username | 登录用户名。 | 30 | VARCHAR(30) NOT NULL UNIQUE | | || password_hash | 密码哈希值。 | 64 | CHAR(64) NOT NULL | | || role | 用户角色如管理员、分析师、教练。 | 10 | VARCHAR(10) NOT NULL | | || created_at | 创建时间。 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | | |上述表结构遵循第一范式与第二范式避免了冗余与更新异常主键与外键关系明确保证数据完整性字段类型与大小均根据实际业务需求设定可在后续扩展中进一步细化。十、建表语句CREATE TABLE teams (team_id INT AUTO_INCREMENT PRIMARY KEY,team_name VARCHAR(50) NOT NULL,league VARCHAR(20) NOT NULL,founded_year YEAR NOT NULL,city VARCHAR(30),UNIQUE KEY uq_team_name_league (team_name, league)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE players (player_id INT AUTO_INCREMENT PRIMARY KEY,player_name VARCHAR(50) NOT NULL,team_id INT NOT NULL,position VARCHAR(5) NOT NULL,height_cm SMALLINT UNSIGNED,weight_kg SMALLINT UNSIGNED,birth_date DATE,CONSTRAINT fk_players_team FOREIGN KEY (team_id)REFERENCES teams(team_id)ON UPDATE CASCADE ON DELETE RESTRICT) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE matches (match_id INT AUTO_INCREMENT PRIMARY KEY,home_team_id INT NOT NULL,away_team_id INT NOT NULL,match_date DATE NOT NULL,venue VARCHAR(50),CONSTRAINT fk_matches_home FOREIGN KEY (home_team_id)REFERENCES teams(team_id)ON UPDATE CASCADE ON DELETE RESTRICT,CONSTRAINT fk_matches_away FOREIGN KEY (away_team_id)REFERENCES teams(team_id)ON UPDATE CASCADE ON DELETE RESTRICT) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE events (event_id INT AUTO_INCREMENT PRIMARY KEY,match_id INT NOT NULL,player_id INT NOT NULL,event_type VARCHAR(20) NOT NULL,timestamp INT UNSIGNED NOT NULL,result VARCHAR(10),CONSTRAINT fk_events_match FOREIGN KEY (match_id)REFERENCES matches(match_id)ON UPDATE CASCADE ON DELETE CASCADE,CONSTRAINT fk_events_player FOREIGN KEY (player_id)REFERENCES players(player_id)ON UPDATE CASCADE ON DELETE RESTRICT) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE stats (stat_id INT AUTO_INCREMENT PRIMARY KEY,player_id INT NOT NULL,match_id INT NOT NULL,points SMALLINT UNSIGNED NOT NULL,rebounds_total SMALLINT UNSIGNED NOT NULL,rebounds_offensive SMALLINT UNSIGNED NOT NULL,rebounds_defensive SMALLINT UNSIGNED NOT NULL,assists SMALLINT UNSIGNED NOT NULL,steals SMALLINT UNSIGNED NOT NULL,blocks SMALLINT UNSIGNED NOT NULL,turnovers SMALLINT UNSIGNED NOT NULL,CONSTRAINT fk_stats_player FOREIGN KEY (player_id)REFERENCES players(player_id)ON UPDATE CASCADE ON DELETE CASCADE,CONSTRAINT fk_stats_match FOREIGN KEY (match_id)REFERENCES matches(match_id)ON UPDATE CASCADE ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE features (feature_id INT AUTO_INCREMENT PRIMARY KEY,stat_id INT NOT NULL,feature_name VARCHAR(30) NOT NULL,value FLOAT(10,4) NOT NULL,CONSTRAINT fk_features_stat FOREIGN KEY (stat_id)REFERENCES stats(stat_id)ON UPDATE CASCADE ON DELETE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE models (model_id INT AUTO_INCREMENT PRIMARY KEY,model_name VARCHAR(50) NOT NULL,algorithm_type VARCHAR(20) NOT NULL,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE predictions (prediction_id INT AUTO_INCREMENT PRIMARY KEY,match_id INT NOT NULL,player_id INT NOT NULL,model_id INT NOT NULL,predicted_value FLOAT(10,4) NOT NULL,CONSTRAINT fk_predictions_match FOREIGN KEY (match_id)REFERENCES matches(match_id)ON UPDATE CASCADE ON DELETE CASCADE,CONSTRAINT fk_predictions_player FOREIGN KEY (player_id)REFERENCES players(player_id)ON UPDATE CASCADE ON DELETE RESTRICT,CONSTRAINT fk_predictions_model FOREIGN KEY (model_id)REFERENCES models(model_id)ON UPDATE CASCADE ON DELETE RESTRICT) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(30) NOT NULL UNIQUE,password_hash CHAR(64) NOT NULL,role VARCHAR(10) NOT NULL,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 索引如有需要可进一步添加CREATE INDEX idx_events_match ON events(match_id);CREATE INDEX idx_events_player ON events(player_id);CREATE INDEX idx_stats_player ON stats(player_id);CREATE INDEX idx_stats_match ON stats(match_id);CREATE INDEX idx_predictions_match ON predictions(match_id);CREATE INDEX idx_predictions_player ON predictions(player_id);CREATE INDEX idx_predictions_model ON predictions(model_id);下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式