同一个表中的一对多关系

sea*_*ant 4 mysql doctrine one-to-many

我试图用来在一个表中定义一对多的关系.例如,假设我有一个包含这些条目的Groups表:

Group:
  Group_1:
    name: Atlantic Records
  Group_2:
    name: Capital Records
  Group_3:
    name: Gnarls Barkley
  Group_4:
    name: Death Cab For Cutie
  Group_5:
    name: Coldplay
  Group_6:
    name: Management Company

Coldplay集团可能是Capital Records集团的子女,也是集团管理公司的子女,而Gnarls Barkley只能成为Atlantic Records的孩子.

表达这种关系的最佳方式是什么?我正在使用PHP和mySQL.我也使用PHP-Doctrine作为我的ORM,如果有帮助的话.

我以为我需要创建一个名为group_groups的链接表,该表有2列.owner_id和group_id.但是我不确定这是否是最好的方法.

任何见解将不胜感激.如果我解释好我的问题,请告诉我.

Ken*_*tle 7

这种方法存在许多可能的问题,但是对要求的理解很少,这里有:

这里似乎有三个"实体":艺术家/乐队,标签/录音公司和管理公司.

艺术家/乐队可以有标签/录音CO艺术家/乐队可以有一个管理公司

标签/录制公司可以有多个艺术家/乐队

管理公司可以有多个艺术家/乐队

因此,唱片公司和艺术家之间以及管理公司和艺术家之间存在着一对多的关系.

仅使用唯一ID在自己的表中记录每个实体一次.

将"one"的键放在"many"的每个实例中 - 在这种情况下,Artist/Band将同时具有Recording Co ID和Management Co ID

然后您的查询将最终加入Artist,Recording Co和Management Co.

有了这个结构,你不需要交集表,有一个明确的"实体"分离,查询相对简单.


Bra*_*adC 3

有几个选项:

最简单:如果每个组只能有一个父组,那么您只需要在主表中添加一个“ParentID”字段。

如果关系可能比这更复杂,那么是的,您需要某种链接表。甚至可能有一个“关系类型”列来定义两个组之间的关系类型