据我所知,关系数据库不具备处理多态关系的能力,但是有多种简单的方法可以将多个表集成到一个标签表中。基本上我想要实现的是拥有一个标签表,但标签名称来自3个表中的一个(游戏,平台或公司)。请将以下设计视为模型:
我是从错误的方式看这个还是我走在正确的轨道上?有人会建议采用不同的方法吗?
答案 0 :(得分:1)
您的案例听起来像是关系建模和对象建模之间的不匹配。如果您有兴趣设计提供最接近继承(而不是多态)的关系表,那么在这些标记下查找问题,答案和信息: single-table-inheritance class-table-inheritance
如果您对更多细节感兴趣,请查看Martin Fowler对相同技术的处理。
如果你的兴趣在于描绘游戏,平台或公司与一些我称之为“标签提供商”的未命名超类之间的IS-A关系,那么请查看“EER泛化/专业化”。 (EER代表增强实体关系)。这显示了如何绘制关系图,而不提供有关如何实现它的任何细节。
答案 1 :(得分:0)
你是正确的,因为文章,视频和文章之间有很多关系。标签
请参阅, 一篇文章=> with =>很多标签 一个标签=>属于=>很多文章。
因此,为了保留第3个映射,需要第4个映射表。
第3表将包含文章+标签
之间的关系第4张表格将包含视频+标签
更新=>
对于与Tags表相关的其他表,再制作3个表:
第5表将公司+标签=>之间的关系。 companies_tags
第6表将有Game + Tags =>之间的关系。 games_tags
第7表将具有Platform + Tags =>之间的关系。 platforms_tags