父/子关系:加入两个表还是坚持一个?

时间:2015-11-24 05:22:57

标签: mysql sql database

我想知道在两个大型表之间是否存在父子关系但基本上是相同的数据。

这种关系是一对多的,一个表当然比另一个表小得多(但仍然是数百万行)。另一个表有数亿行。

将它们放在同一个表中或将它们放在一个表中并使用外键引用另一个表会更好吗?

如果在一个表中,如何最好地处理父子关系?我知道我可以在主表中放置一个parent_id列,但在这两种情况下我都关注缩放。

选项1(一个表格):

+----+-----------+-----------+
| id |   value   | parent_id |
+----+-----------+-----------+
|  1 | Value 1   |         0 |
|  2 | Value 2   |         1 |
|  3 | Value 3   |         1 |
|  4 | Value 4   |         1 |
|  5 | Value 5   |         2 |
|  6 | Value 6   |         2 |
+----+-----------+-----------+

选项2(两个表格):

+----+-----------+-----------+
| id |   value   | parent_id |
+----+-----------+-----------+
|  1 | Value 1   |         0 |
|  2 | Value 2   |         1 |
|  3 | Value 3   |         1 |
|  4 | Value 4   |         1 |
|  5 | Value 5   |         2 |
|  6 | Value 6   |         2 |
+----+-----------+-----------+

父表(也将是巨大的):

+----+----------+
| id |  value   |
+----+----------+
|  1 | Parent 1 |
|  2 | Parent 2 |
|  3 | Parent 3 |
|  4 | Parent 4 |
|  5 | Parent 5 |
|  6 | Parent 6 |
+----+----------+

通常我认为这是一个简单的答案,但考虑到以下是我遇到问题的地方:

  1. 这两个表都需要支持数亿个 在查询时支持父关系时记录每一个。

  2. 我们也经常在不需要的情况下单独查询每个表 亲子关系。

  3. 如果我还有其他任何可以添加的内容,请告诉我。

0 个答案:

没有答案