数据库多对多关联的问题,求解答

暗夜孤灯 发布于 2014/08/05 13:40
阅读 151
收藏 0

现有基础表用户表(user),每个用户的属性如图片URL、地址、职业与用户都是多对多的关系即一个用户可有多个图片、地址和职业。

对应的属性表为图片表(imgurl)、地址表(address)、职业表(profession),用户表user中不与属性表直接关联,

查询用户的信息时就需要关联中间表,用户图片表(user_imgurl),用户地址表(user_address),用户职业表(user_profession)

一次查询出某个用户所有属性信息的sql怎么写,现有表设计是否合理,如何优化

以下是问题补充:

@暗夜孤灯:user,imgurl,address,profession,之间没有任何关系,他们的关系都是通过uer_imgurl,user_address,user_profession维系 (2014/08/05 14:33)
加载中
0
gat205
gat205

引用来自“gat205”的评论

假设user_id每张表都有

select * from user a left join imgurl b on a.user_id=b.user_id left join on address c on a.user_id=c.user_id left join profession d on a.user_id=d.user_id

select * from user a 
left join user_imgurl b on a.user_id=b.user_id
left join user_address c on a.user_id=c.user_id
left join user_profession d on a.user_id=d.user_id
left join imgurl e on e.uer_imgurl=b.uer_imgurl 
left join on address f on f.user_address=c.user_address 
left join profession g on g.user_profession=d.user_profession
0
gat205
gat205

假设user_id每张表都有

select * from user a left join imgurl b on a.user_id=b.user_id left join on address c on a.user_id=c.user_id left join profession d on a.user_id=d.user_id

暗夜孤灯
暗夜孤灯
用户表user中不与属性表直接关联,查询用户的信息时就需要关联中间表,就是说用户表中不存在属性表的主键
0
mark35
mark35
用户表左连接其他属性表
0
紫川云
紫川云
楼上已经给出答案了,我也是这么想的。不知楼下可有更好的?
0
别说
别说
根据用户表的主键去每个中间表找对应属性的主键然后查出对应属性。好像有点乱。
别说
别说
回复 @暗夜孤灯 : 对这个表示不精通,觉得目前的方案就合理的。
暗夜孤灯
暗夜孤灯
嗯,目前的表结构是这样的,有没有其他策略
0
暗夜孤灯
暗夜孤灯

引用来自“gat205”的评论

假设user_id每张表都有

select * from user a left join imgurl b on a.user_id=b.user_id left join on address c on a.user_id=c.user_id left join profession d on a.user_id=d.user_id

引用来自“gat205”的评论

select * from user a 
left join user_imgurl b on a.user_id=b.user_id
left join user_address c on a.user_id=c.user_id
left join user_profession d on a.user_id=d.user_id
left join imgurl e on e.uer_imgurl=b.uer_imgurl 
left join on address f on f.user_address=c.user_address 
left join profession g on g.user_profession=d.user_profession
感觉还是很复杂,不知数据量大了对性能的影响,表要如何设计才能更合理
返回顶部
顶部