需要指导在数据库中创建父子关系
Need guidance creating parent - child relationship in database
有许多与 parent/child 和多对多关系相关的问题,但我找不到一个似乎对我的需求有意义的问题。
我有一个“样本”数据库,让我们将其视为桶中的某种粘液。每个样本都有一个关联的 ID。我想捕捉的是任何给定的样本都可以有一个父样本(即一个样本可以通过将桶倒入一堆较小的罐子中来分成多个新样本)。此外,一个样本可以有多个父样本;通过组合多个父样本创建一个新的 jar。这里的关键是子样本和父样本代表相同的事物(样本),因此应该是相同 table.
的成员
我从 samples
table 开始,其中列是 id
、date
、project
和 parent
。 id
是一个字母数字 ID(即 A0001
、A0002
),parent
是一个 ID 数组,应该返回样本列表。换句话说,父 必须 是 samples
.
的成员
我无法在 id
和 parent
中的 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]
我还有一个情况需要在CHAR
和CHAR[]
之间使用外键关系。
我希望能够通过父数组中可用的 id
查询信息(例如 date
和 project
)。我想我可以在数据库之外处理这个问题,但这似乎是一种 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
。
有许多与 parent/child 和多对多关系相关的问题,但我找不到一个似乎对我的需求有意义的问题。
我有一个“样本”数据库,让我们将其视为桶中的某种粘液。每个样本都有一个关联的 ID。我想捕捉的是任何给定的样本都可以有一个父样本(即一个样本可以通过将桶倒入一堆较小的罐子中来分成多个新样本)。此外,一个样本可以有多个父样本;通过组合多个父样本创建一个新的 jar。这里的关键是子样本和父样本代表相同的事物(样本),因此应该是相同 table.
的成员我从 samples
table 开始,其中列是 id
、date
、project
和 parent
。 id
是一个字母数字 ID(即 A0001
、A0002
),parent
是一个 ID 数组,应该返回样本列表。换句话说,父 必须 是 samples
.
我无法在 id
和 parent
中的 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]
我还有一个情况需要在CHAR
和CHAR[]
之间使用外键关系。
我希望能够通过父数组中可用的 id
查询信息(例如 date
和 project
)。我想我可以在数据库之外处理这个问题,但这似乎是一种 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
。