1

我有一些看起来像这样的数据:
1:事件
2:事件 1
3:事件 1.1
4:事件 2
5:事件 2.2
6:事件 2.2.1
7:事件 2.2.1.1
8:事件 2.2.1.2
9:事件 2.2 .1.3
10:事件 2.2.1.3.1
11:事件 3
12:事件 4
13:事件 4.1

事件 1、2、3 和 4 都将嵌套在“事件”下 事件 1.1 将嵌套在事件 1 下,等等。

我应该如何将它存储在数据库的同一个表中?我可以只包含另一个要包含 id 的字段吗?

看起来像这样:

字段
id(事件 ID)
名称(事件名称)
ids_to_include(在此事件中发生的事件)

此(示例)数据最多嵌套 4 级(2.2.1.3.1)。但在我的脑海中,我正在考虑历史数据,历史上的每一个事件都有更多的子事件,所以嵌套需要是无限的。我不想为每种“类型”的历史事件创建一个新表,我宁愿只为没有嵌套的长期时期(如 WW2:1939-1945)和事件创建一个表尽可能多的嵌套。

还是我会以完全错误的方式解决这个问题?谢谢。

4

2 回答 2

1

有一些模型可以将分层数据存储在关系表中,其中最常用的两个是nested setsadjacency list

根据您要针对这些模型运行的查询类型,任何一种都可能更有效。

MySQL中,邻接表更难查询,因为它需要集合递归,虽然它MySQL缺乏,但仍然可能。

请参阅我的博客中的此条目以比较这两种模型:

于 2012-04-26T14:07:06.793 回答
0

您 cad 指定对父元素的外键引用:

Id    Name        ParentId
==========================
 1    Events      null
 2    Event 1     1
 3    Event 1.1   2
 4    Event 2     1
 5    Event 2.2   4
 . . .
于 2012-04-26T14:05:25.383 回答