基数,如果一个关系依赖于另一个关系

问题描述 投票:0回答:1

我有一个与其他两个表有关系的表,要注意的是两个外键之一将为空。

事实是,图片可以属于治疗或服务对象治疗属于客户。问题是,如果我仅链接到客户,我不知道哪张照片与治疗相关而不是。

Tables to join

解决方案? :

enter image description here

谢谢您的任何想法

mysql sql database erd
1个回答
0
投票

解决此问题的一种方法是创建单独的映射表,以表示一方面是图片和处理方式,另一方面是图片和客户之间的关系。

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
© www.soinside.com 2019 - 2024. All rights reserved.