3

我有两个以 1:M 关系相互关联的表:parentchild. 通过使用外键约束,我已将表中的parent_id列限制为child仅匹配 表 id 值。parent现在我想要第三个表 - 称为another_table- 有两个引用和表中的id列的FK 列。parentchild

如何child_id将第三个表中的 FK 列限制为child表中与值匹配的parent_id值?

在此处输入图像描述

编辑


EG:正如我上面提到的,我有三个表 -parent和。他们的内容如下所示:childanother_table

SELECT * FROM public.parent

id  name
1   A
2   B
3   C

SELECT * FROM public.child

id name parent_id 
1   A1  1
2   A2  1
3   A3  1
4   B1  2
5   C1  3
6   C2  3

SELECT * FROM public.another_table

在此处输入图像描述

我想在数据库结构中找到一种方法(同时),以防止在第三个表的child_id列中插入或更新不符合child表数据的值。

4

1 回答 1

1

由于父级链接到子级,因此子级具有父级链接。您不需要将父母和孩子都链接到您孩子的孩子。您只需要将孩子的孩子链接到已经拥有父母的孩子。

    Parent
      /\
child1  child2
           /\
   pc_child  pc_child2

视觉解释

于 2018-12-01T00:47:43.413 回答