如何解决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. % 总 STR。 TD TD % SUB。 ATT REV。 CTRL) 和
- 重大罢工 属性(SIG.STR SIG.STR. % 头部身体腿部距离压紧地面)。
- 一场比赛有 3 到 5 轮。每轮都有统计数据。它们分为两种类型:
- 总计(带有属性 KD SIG.STR.SIG.STR. % 总 STR。 TD TD % SUB。 ATT REV。 CTRL) 和
- 重大罢工 属性(SIG.STR SIG.STR. % 头部身体腿部距离压紧地面)。
然后您在表格中对其进行建模:
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,%HEAD
....
您可以在单个表中对统计数据建模,使用组合外键 match_id、participant_id 链接到比赛和参与者,并将所有统计数据包含在一个表中;这是一个品味问题。
我包含了一个名为 round
的表,因为它允许您确保统计表中的参照完整性 - 应用程序不可能在这些表中存储无效轮次,因为您需要将这些轮次与条目匹配在“圆”桌上。这是一个品味问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。