我试图用来在一个表中定义一对多的关系.例如,假设我有一个包含这些条目的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.但是我不确定这是否是最好的方法.
任何见解将不胜感激.如果我解释好我的问题,请告诉我.
这种方法存在许多可能的问题,但是对要求的理解很少,这里有:
这里似乎有三个"实体":艺术家/乐队,标签/录音公司和管理公司.
艺术家/乐队可以有标签/录音CO艺术家/乐队可以有一个管理公司
标签/录制公司可以有多个艺术家/乐队
管理公司可以有多个艺术家/乐队
因此,唱片公司和艺术家之间以及管理公司和艺术家之间存在着一对多的关系.
仅使用唯一ID在自己的表中记录每个实体一次.
将"one"的键放在"many"的每个实例中 - 在这种情况下,Artist/Band将同时具有Recording Co ID和Management Co ID
然后您的查询将最终加入Artist,Recording Co和Management Co.
有了这个结构,你不需要交集表,有一个明确的"实体"分离,查询相对简单.