需要指导在数据库中创建父子关系

Need guidance creating parent - child relationship in database

有许多与 parent/child 和多对多关系相关的问题,但我找不到一个似乎对我的需求有意义的问题。

我有一个“样本”数据库,让我们将其视为桶中的某种粘液。每个样本都有一个关联的 ID。我想捕捉的是任何给定的样本都可以有一个父样本(即一个样本可以通过将桶倒入一堆较小的罐子中来分成多个新样本)。此外,一个样本可以有多个父样本;通过组合多个父样本创建一个新的 jar。这里的关键是子样本和父样本代表相同的事物(样本),因此应该是相同 table.

的成员

我从 samples table 开始,其中列是 iddateprojectparentid 是一个字母数字 ID(即 A0001A0002),parent 是一个 ID 数组,应该返回样本列表。换句话说,父 必须 samples.

的成员

我无法在 idparent 中的 id 列表之间设置外键关系。

有办法吗?

我想过创建一个 parents table,但我可能会有这样的东西:

samples
-------
id      date          project      parent
A0001   2020/11/01    alpha        []
A0002   2020/11/01    beta         []
A0003   2020/11/05    gamma        [A0001, A0002]
A0004   2020/11/05    gamma        [A0002]

parents
-------
id      children
A0001   [A0003]
A0002   [A0003, A0004]

我还有一个情况需要在CHARCHAR[]之间使用外键关系。

我希望能够通过父数组中可用的 id 查询信息(例如 dateproject)。我想我可以在数据库之外处理这个问题,但这似乎是一种 hack,而不是正确的方法。

对于上下文,我使用的是 Postgresql v13.0 和 Hasura GraphQL v1.3.3。

如有任何帮助或建议,我们将不胜感激。

通常在谈论人际关系时,child 只有一个 parent -- 尽管这并不是人际关系运作的方式。典型的例子是树结构。

您似乎只想要一个有向图。这表明两个 tables:

样本

sample_id date project
A0001 2020/11/01 alpha
A0002 2020/11/01 beta
A0003 2020/11/05 gamma
A0004 2020/11/05 gamma

关系:

parent_sample_id child_sample_id
A0001 A0003
A0002 A0003
A0002 A0004
  • 编辑 * 我已经修复了上面 child_sample_id table 中缺失的 0