扫码关注官方订阅号
A表拥有多个C表,B表拥有多个C表,一个C表只能属于A表或者B表,如何优雅地建立关系,使可以用最少的查询次数将A和B以及他们拥有的C一起查询出来
现在我有一个方案,就是C里面放两个外键,AId,BId,但是总觉得这样不够优雅。而且如果将来有了D表想要关联C表,还得改C表。
业精于勤,荒于嬉;行成于思,毁于随。
虽然不知道你是什么语言,不过你的需求很像Active Record中的多态关系。可以忽略图上的代码,只看上面的数据库表的关系:A可以对应为上图的employees, B对应products, C就是pictures
pictures表里面的imageable_type就是引用这个记录的表名(例如employees),imageable_id是引用这条记录的id(例如employee的id),两个字段合起来就可以找到具体是那个表里面的哪个字段引用这条记录。详细内容参照这里:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
imageable_type
imageable_id
一个字段保存主键,另一个字段保存表名
新建一个表 列名如下 cid relate_id relate_table
分开多表 一个存为关键索引 一个为数据
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
虽然不知道你是什么语言,不过你的需求很像Active Record中的多态关系。

可以忽略图上的代码,只看上面的数据库表的关系:A可以对应为上图的employees, B对应products, C就是pictures
pictures表里面的
imageable_type就是引用这个记录的表名(例如employees),imageable_id是引用这条记录的id(例如employee的id),两个字段合起来就可以找到具体是那个表里面的哪个字段引用这条记录。详细内容参照这里:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
一个字段保存主键,另一个字段保存表名
新建一个表 列名如下 cid relate_id relate_table
分开多表 一个存为关键索引 一个为数据