多方位关系在两个方向上都有所不同

时间:2018-03-07 14:45:38

标签: database many-to-many relationship bidirectional

我一直在浏览这里的答案以及有关数据库结构的书籍,但我怀疑找不到答案的原因是缺乏合适的术语。

我正在我的数据库中创建一个名为 Genres 的表。它有一个 ID 以及与另一个表的关系:图书。但是,我想与自己建立另一种关系,其中某些流派孩子 / 父母,用于其他流派。有没有办法标记双向关系,以便它有一个"方向"?即所以我知道哪一对是(=包含),哪个是孩子(=包括在内)?让我们假设任何给定的类型都可以是孩子

如何用适当的术语描述这种关系?

2 个答案:

答案 0 :(得分:3)

如果我理解,你有两张桌子:

流派

  • ID
  • PARENT_ID
  • book_id

图书

  • ID

最大的父级将使parent_genre_id等于null。

您可以在此处找到一些文档:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-self-referencing

答案 1 :(得分:1)

一种方式(不一定是最佳的)就是只有一个GenreSelfRelationship列(或任何你想要的名字),0表示既不是父也不是孩子,1表示子(仅),2表示父(仅),3表示父母和孩子。当然,可能有更好的方法。