6
回答
数据库多对多关联的问题,求解答
终于搞明白,存储TCO原来是这样算的>>>   

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

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

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

一次查询出某个用户所有属性信息的sql怎么写,现有表设计是否合理,如何优化
举报
暗夜孤灯
发帖于3年前 6回/141阅

以下是问题补充:

  • @暗夜孤灯 :user,imgurl,address,profession,之间没有任何关系,他们的关系都是通过uer_imgurl,user_address,user_profession维系 (3年前)
共有6个答案 最后回答: 3年前

引用来自“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

假设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

--- 共有 1 条评论 ---
暗夜孤灯用户表user中不与属性表直接关联,查询用户的信息时就需要关联中间表,就是说用户表中不存在属性表的主键 3年前 回复
根据用户表的主键去每个中间表找对应属性的主键然后查出对应属性。好像有点乱。
--- 共有 2 条评论 ---
别说回复 @暗夜孤灯 : 对这个表示不精通,觉得目前的方案就合理的。 3年前 回复
暗夜孤灯嗯,目前的表结构是这样的,有没有其他策略 3年前 回复

引用来自“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
感觉还是很复杂,不知数据量大了对性能的影响,表要如何设计才能更合理
顶部