MySQL查询中多表连接查询存在的必要性?

前言

在业务系统开发过程中,对于一些涉及多张表数据查询的时候,我们通常会采用连表查询(LEFT JOIN、RIGHT JOIN、INNER JOIN)或者嵌入子查询、在写这种涉及多张表的时候,其实都会考虑查询性能的问题,往往一般的解决方法就是小表做驱动表、建索引这些等,甚至有些公司开发过程中明确要求不使用连表查询!在写涉及多张表数据查询的时候并不是不建议使用多表连接查询,而是可以使用多表连接查询,但是需要考虑表连接的层数!

解释

现在有A、B、C、D表

SELECT a.* FROM A a
LEFT JOIN B b ON a.id=b.x_id
LEFT JOIN C c ON a.id=c.x_id
LEFT JOIN D d ON a.id=d.x_id

以上SQL表连接查询层数为一层,都和主表关联,关联层级为1

如下SQL查询表连接查询层数为二层
SELECT a.* FROM A a
LEFT JOIN B b ON a.id=b.x_id
LEFT JOIN C c ON b.id=c.x_id
LEFT JOIN D d ON a.id=d.x_id

以上SQL表连接询最深层数为二层,以A为主表,A表驱动B表,然后B表关联C表,那么此表连接查询层级为2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQLServer数据库设计 数据库设计 ⼀、数据库设计的必要性 在实际的软件项⽬,如果系统需要存储的数据量⽐较⼤,需要设计的表⽐较多,表与表之间的关系⽐较复杂,那我们就需要进⾏规 范的数据库设置。如果不经过数据库的设计,我们构建的数据库不合理、不恰当,那么数据库的维护、运⾏效率会有很⼤的问题。这将直接 影响到项⽬的运⾏性和可靠性。 ⼆、什么是数据库设计 数据库设计实际上就是规划和结构化数据库的数据对象以及这些数据对象之间的关系过程。 三、数据库设计的重要性 Ø 不经过设计的数据库或是设计糟糕的数据库很可能导致 1、 数据库运⾏效率地下 2、 更新、删除、添加数据出现问题 Ø 良好设计的数据库 1、 执⾏效率⾼ 2、 使应⽤程序更便于开发 3、 扩展性好 4、 维护性好 四、数据模型 数据模型就像是数据间联系的⼀个轮廓图,整个模型就像⼀个框架。 如果按照记录间联系的表⽰⽅式,对数据模型进⾏分类,可以分为:层次模型、⽹状模型、关系模型。前两种⼜称为格式化数据模型。 数据模型的好坏直接影响到数据库的性能,所以数据模型的选择是数据库设计的⾸要任务。 Ø 实体-关系(E-R)数据模型 E-R数据模型(Entity-Relationship data model),即实体-关系数据模型。E-R数据模型不同于传统的关系数据模型,它不是⾯向实 现,⽽是⾯向现实物体的。 Ø 实体(Entity) 数据是⽤来描述现实的物体的,⽽描述的对象都是形形⾊⾊的,有具体的、也有抽象的;有物理上存在的、也有概念性的。凡是 可以互相区别⽽且可以被⼈们认识的事、物、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E-R 数据模型,也有型与值之分;实体可以作为型来定义,每个实体可以是它的实例和值。 Ø 属性(Attribute) 实体⼀般具体若⼲特征,这些特征称为实体的属性。⽽每个属性都有⾃⼰的取值范围,在E-R数据模型称为值集(value set)。在 同⼀实体集,每个实体的属性及其值集都是相同的,但可能取不同的值。属性对应数据库表的列。 Ø 关系(Relationship) 实体之间会有各种关系,这些关系抽象为联系。不但实体可以有属性,关系也可以有属性。 五、数据库设计步骤 Ø 数据库设计可以分为以下⼏个阶段 1、 需求分析阶段:分析客户的业务需求,特别是数据⽅⾯的需求 2、 概要设计阶段:绘制数据库的E-R图,并确认需求⽂档的正确性和完整性,E-R图是项⽬的设计⼈员、开发⼈员、测试⼈员,以 及和客户进⾏沟通的重要凭据 3、 详细设计阶段:将概要设计阶段的E-R图转换为数据库表,进⾏逻辑设计,确定各个表之间的主外键关系,运⽤数据库的三范式 进⾏审核,并进⾏技术评审。最后决定选哪种数据库(Oracle、SQLServer、MySQL)来建库、建表。 Ø 需求分析阶段:数据库系统分析 秀⽓分析阶段的重点是调查、收集、分析客户的业务数据需求以及数据的安全性、完整性需求等。 需求分析步骤: 1、 确认业务需求 2、 标识关系实体 3、 标识每个实体的具有的属性 4、 确认实体之间的关系 Ø 概要设计阶段:绘制E-R图 作为数据库设计者,你需要和项⽬组内其他成员分享你的设计思路,共同研讨数据库设计的合理性、安全性、完整性,并确认是否 符合客户的业务需求。那么使⽤E-R图,这种图形化的表⽰⽅式最为直观。 * E-R图的实体、属性和关系 上⾯的简单E-R图可以看出⽤户和收⽀之间的关系。在上图可以看出:⽤矩形表⽰实体,实体是⼀般名词;椭圆表⽰属性,⼀般也 是名词;菱形表⽰关系,⼀般是动词。 * 映射基数 映射基数表⽰可以通过关系与该实体的个数。对于实体集A和B之间的⼆元关系,可能的映射基数有: 1、 ⼀对⼀:也就是A实体最多只有⼀个B实体的关联,⽽B实体的最多只有⼀个A实体的关联。⽤E-R图表⽰: 2、 ⼀对多:A实体可以与B实体任意数量的进⾏关联,B的实体最多与A的⼀个实体关联。E-R图表⽰: 3、 多对⼀:A实体最多与⼀个B实体进⾏关联,⽽B实体可以和任意多个A实体进⾏关联。E-R图表⽰: 4、 多对多:A实体可以有多个B实体,⽽B实体也可以有任意多个A实体。E-R图表⽰: * E-R图 E-R图可以以图形化的⽅式将数据库的整个逻辑结构表⽰出来,组成部分有: 1、 矩形表⽰实体集 2、 椭圆表⽰属性 3、 菱形表⽰关系、 4、 直线⽤来连接实体集与属性、实体集和关系 5、 直线箭头表⽰实体集之间映射基数 Ø 详细设计阶段:将E-R图转换为表 步骤如下: 1、 将各个实体转换为对应的表,将各属性转换为对应的列 2、 标识每张表的主键 3、 将实体之间的关系转换为表与表之间的主外键关系 六、数据库设计规范化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员劝退师-TAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值