当前位置:  开发笔记 > 编程语言 > 正文

同一个表中的一对多关系

如何解决《同一个表中的一对多关系》经验,为你挑选了1个好方法。

我试图用来在一个表中定义一对多的关系.例如,假设我有一个包含这些条目的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.但是我不确定这是否是最好的方法.

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



1> Ken Gentle..:

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

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

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

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

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

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

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

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

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

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

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有