SQL与数据库设计.md 3.2 KB


title: SQL与数据库设计 tags:

  • module
  • database
  • sql
  • design
  • joplin type: module source_type: reconstructed created: 2026-04-22 updated: 2026-04-22 ---

SQL与数据库设计

[!abstract] 这一模块讨论“数据库怎么用、怎么设计”两个问题。SQL 负责对数据进行声明式操作,数据库设计负责让这些操作建立在合理结构上。

模块结论

  • [[SQL]] 的价值在于声明式、面向集合和综合统一,而不是单纯“会写语句”。
  • 视图、索引、存储过程、触发器分别在抽象、安全、性能和自动化规则上发挥作用。
  • 数据库设计的关键不是画图本身,而是把业务对象和关系稳定地落成结构良好的模式。

一、SQL 的核心特点

  • 综合统一:兼顾定义、操纵、控制等多种功能。
  • 高度非过程化:重点描述“要什么”,不是“怎么一步步做”。
  • 面向集合:一次操作一组元组,而不是默认逐行处理。

常见分类

  • DDL:定义数据库对象,如 CREATEALTERDROP
  • DML:插入、更新、删除数据。
  • DQL:查询数据。
  • DCL:授权、回收权限。

二、SQL 查询思维

  • 先明确数据来自哪些表。
  • 再明确筛选条件、连接条件和需要输出的列。
  • 最后判断是否需要分组、聚合、排序、嵌套。

高频查询类型

  • 单表筛选
  • 多表连接
  • 分组聚合
  • 嵌套查询
  • 全称查询和存在性查询

易错点

  • 把连接条件写成筛选条件,导致笛卡尔积。
  • 不理解 GROUP BYHAVING 的职责区别。
  • 只会写语句模板,不理解它背后的关系代数意义。

三、视图、索引、存储过程、触发器

视图

  • 本质是虚表,数据来自基本表。
  • 作用包括简化复杂查询、隐藏敏感字段、提供一定逻辑独立性。

索引

  • 本质是辅助查找结构,用空间换时间。
  • B+ 树适合范围查询和有序访问。
  • Hash 索引更适合等值查询。

存储过程与触发器

  • 存储过程:显式调用的一组预编译 SQL。
  • 触发器:由特定事件自动触发执行。

四、数据库设计方法

六个阶段

  1. 需求分析
  2. 概念设计
  3. 逻辑设计
  4. 物理设计
  5. 实施
  6. 运行维护

E-R 到关系模式的转换

  • 1:1 联系:可并入任一方或单独处理。
  • 1:n 联系:通常在 n 方加入 1 方主键。
  • m:n 联系:通常新建关联表。

设计时要处理的冲突

  • 命名冲突
  • 属性冲突
  • 结构冲突

五、设计与性能的关系

  • 合理的范式减少异常和冗余。
  • 合理的索引降低查询成本。
  • 逻辑设计和物理设计不能割裂看。

六、复习提问

  • SQL 为什么说是声明式、面向集合的语言?
  • 视图和索引分别在解决什么问题?
  • E-R 图中的 1:n 和 m:n 联系该如何转成表结构?

来源

  • [[raw/Joplin/计算机专业基础/数据库/_计算机考研复试数据库核心知识点整理.md]]
  • [[raw/Joplin/计算机专业基础/数据库/3.数据库——SQL与数据库设计.md]]

相关页面

  • [[数据库]]
  • [[关系数据库核心]]
  • [[SQL]]
  • [[范式]]