mysql - A拥有多个C,B拥有多个C,一个C只能属于A或者B,如何建立关系?
迷茫
迷茫 2017-04-17 13:39:52
[MySQL讨论组]

A表拥有多个C表,B表拥有多个C表,一个C表只能属于A表或者B表,如何优雅地建立关系,使可以用最少的查询次数将A和B以及他们拥有的C一起查询出来

现在我有一个方案,就是C里面放两个外键,AId,BId,但是总觉得这样不够优雅。而且如果将来有了D表想要关联C表,还得改C表。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
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

黄舟

分开多表 一个存为关键索引 一个为数据

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号