mysql - MYSQL 一个表里面有几千个表。是否可行且有效?
问题描述
我正在抓取 ufc 数据。数据分为三层。
我使用外键完成了 1 和 2 的数据库制作。
我的 1 表如下所示
Index | event | date |
0 | UFC 2: No Way Out | 1994-03-11 |
我的 2 表如下所示
| index | event_index |
| 0 | 0 |
问题是我不知道 3 与 2 有什么关系。从链接中可以看出,3 的统计信息太多。我想做一个由表组成的表,每个表都是3。但是MYSQL似乎没有“表内表”的特性。我怎么能组织这个?提前致谢。
当然,我应该稍后在引用 3 作为外键时由单个战斗机创建一个新的数据表。
解决方案
如果您以清晰、一致的语言陈述业务领域,将会有所帮助。
- 系统有很多事件。
- 事件具有日期、开始时间、位置和名称等属性。
- 一个事件有 1 个或多个匹配项。
- 每场比赛只有 2 名参与者。
- 比赛的属性包括重量等级、获胜者、持续时间、获胜方式。参与者有属性(不明白KD STR TD SUB是什么意思)。
- 对于每场比赛,每个参与者都有统计数据。这些分为两种类型:
- 总计(具有属性 KD SIG. STR. SIG. STR. % TOTAL STR. TD TD % SUB. ATT REV. CTRL)和
- 带有属性的重大打击(SIG. STR SIG. STR. % HEAD BODY LEG DISTANCE CLINCH GROUND)。
- 一场比赛有3到5轮。每一轮都有统计数据。这些分为两种类型:
- 总计(具有属性 KD SIG. STR. SIG. STR. % TOTAL STR. TD TD % SUB. ATT REV. CTRL)和
- 带有属性的重大打击(SIG. STR SIG. STR. % HEAD BODY LEG DISTANCE CLINCH GROUND)。
然后在表格中建模:
Events
-------
Event_id (PK)
Location (FK?)
date
start_time
....
Match
-----
Match_id (PK)
Event_id (FK)
Contestant_one_id (FK)
Contestant_two_id (FK)
weight_class (FK?)
winner
duration
method_of_win
Participants
--------------
participant_id (PK)
name
nick_name
match_stat_total
---------------
match_id (FK)
participant_id (FK)
KD
SIG
STR
...
match_stat_significant_strikes
-----------------
match_id (FK)
participant_id (FK)
SIG,
STR,
%HEAD
....
round
------
match_id (pk)(fk)
match_number(pk)
match_round_total
---------------
match_id (FK)
match_number (FK)
participant_id (FK)
KD
SIG
STR
...
match_round_significant_strikes
-----------------
match_id (FK)
match_number (FK)
participant_id (FK)
SIG,
STR,
%HEAD
....
您可以在单个表中建模统计数据,使用组合外键 match_id、participant_id 链接到比赛和参与者,并将所有统计数据包含在一个表中;这是一个品味问题。
我包含了一个名为的表,round
因为它允许您保护统计表中的引用完整性 - 应用程序不可能在这些表中存储无效轮次,因为您需要将这些与“轮”表中的条目相匹配。这是一个品味问题。
推荐阅读
- django - 初始化对象时何时调用 factory.DjangoModelFactory 的 _create() 方法?
- javascript - 删除以 EventListener 为目标的 DIV 的子项的问题
- python - 如何在 django 管理界面的管理 URL 中发送加密的 id?
- android - 无法解析“:app@debugUnitTest/compileClasspath”的依赖关系:无法解析项目
- reactjs - 如何修复多选的 Semantic-UI-React 下拉列表
- android - 如何在按钮单击时将原始文件夹中的 mp3 设置为铃声?
- javascript - 为什么在 Laravel 中获取 JavaScript 总是返回空值?
- html - 关键帧未显示所有项目
- c# - 如何保存进程的二进制输出并将其保存到文件
- c# - 如何摆脱 NetDataContractSerializer?