mysql - 如果关系依赖于另一个关系,则基数
问题描述
我有一个与其他两个表有关系的表,问题是两个外键之一将为空。
问题是图片可以属于治疗或客户,治疗属于客户。问题是,如果我只链接到客户,我不知道哪张图片与治疗相关,哪张不相关。
解决方案?:
谢谢你的任何想法
解决方案
解决这个问题的一种方法是创建单独的映射表来表示一方面图片和治疗,另一方面图片和客户之间的关系。
create table pictures_treatments(
idPicture int,
idTreatment int,
primay key(idPicture),
foreign key (idPicture) references t_pictures(idPicture),
foreign key (idTreatment) references t_treatment(idTreatment)
);
create table pictures_clients(
idClient int,
idTreatment int,
primay key(idPicture),
foreign key (idPicture) references t_pictures(idPicture),
foreign key (idClient) references t_client(idClient)
);
有了这个设置,您可以轻松地恢复与治疗相关的图片或具有两个左连接的客户:
select t.*, p.picPath
from t_treatments t
left join pictures_treatments pt on pt.idTreatment = t.idTreatment
left join t_pictures p on p.idPicture = pt.idPicture;
select c.*, p.picPath
from t_clients t
left join pictures_clients pc on pc.idClient = c.idClient
left join t_pictures p on p.idPicture = pt.idPicture
推荐阅读
- c# - Xamarin Forms 4.0 的简单注入器支持
- javascript - 导入的 JS 脚本在 ASP.NET 视图中不起作用
- android - Android WebRTC 发送 TURN 消息失败,err=22
- android - 如何防止 EditText 中的数据更新?
- django - Django CMS 多行字段
- javascript - 如何使用其他 div 的类名访问 div
- javascript - 从本地目录获取 csv 文件以制作图表而不使用服务器
- css - 很难找到页面的活动父类,应该显示为两个主菜单的子菜单
- c# - 在同一解决方案中使用 Fody 添加的方法
- java - /usr/lib/x86_64-linux-gnu/libc.so:无效的 ELF 标头