首页 > 解决方案 > 如果关系依赖于另一个关系,则基数

问题描述

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

问题是图片可以属于治疗或客户,治疗属于客户。问题是,如果我只链接到客户,我不知道哪张图片与治疗相关,哪张不相关。

要加入的表

解决方案?:

解决方案

谢谢你的任何想法

标签: mysqlsqldatabaseerd

解决方案


解决这个问题的一种方法是创建单独的映射表来表示一方面图片和治疗,另一方面图片和客户之间的关系。

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

推荐阅读