Logo
☆☆☆☆☆
0.0
Beginner
6h 45m

SQL反模式:避免数据库编程中的陷阱

结构化查询语言(SQL)被广泛用于管理关系型数据库并执行各种数据操作。非专业程序员常常采用一种危险且低效的解决方案,这种做法被称为反模式。这些常见的不良实践起初看似是合理的解决方案,实现起来也更简单,但实际上会引发更多问题。本课程通过分析多种反模式,讲解最佳修复方法。 本课程涵盖四类SQL反模式:逻辑反模式、物理反模式、查询反模式以及应用开发反模式。课程精选了具体实例,帮助你理解每种反模式的本质,并提供零风险的实际解决方案。课程还提供动手编码实践,帮助你深入掌握每一个概念。 完成本课程后,你将熟悉反模式的构成要素,并掌握一套在应对数据库挑战或纠正错误时可遵循的规则。

25 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
SQL反模式:避免数据库编程中的陷阱
结构化查询语言(SQL)被广泛用于管理关系型数据库并执行各种数据操作。非专业程序员常常采用一种危险且低效的解决方案,这种做法被称为反模式。这些常见的不良实践起初看似是合理的解决方案,实现起来也更简单,但实际上会引发更多问题。本课程通过分析多种反模式,讲解最佳修复方法。 本课程涵盖四类SQL反模式:...

WHAT YOU'LL LEARN

学习编写SQL查询的最佳实践。

Content

25 Lessons • 0 Quizzes • 0 Challenges

简介
  1. 1

    入门

  2. 2

    课程结构

  3. 3

    约定

  4. 4

    示例数据库

逻辑反模式 - 乱穿马路
  1. 1

    概要:乱穿马路

  2. 2

    反模式:格式化逗号分隔的列表

  3. 3

    解决方案:创建一个交集表

逻辑反模式 - 实体-属性-值
  1. 1

    概要:实体-属性-值

  2. 2

    反模式:使用通用属性表

  3. 3

    支持数据完整性

  4. 4

    解决方案:使用继承来建模子类型

  5. 5

    次优解

逻辑反模式 - 天真树
  1. 1

    概要:朴素树

  2. 2

    反模式:总是依赖父节点

  3. 3

    使用邻接表维护一棵树

  4. 4

    解决方案:使用替代的树形模型

  5. 5

    路径枚举

  6. 6

    嵌套集

  7. 7

    闭包表

  8. 8

    不同树结构实现方式的比较

逻辑反模式 - 多态关联
  1. 1

    概要:多态关联

  2. 2

    反模式:使用具有双重用途的外键

  3. 3

    解决方案 1:简化关系

  4. 4

    解决方案2:创建一个通用的父表

逻辑反模式 - ID 必需
  1. 1

    概要:需要ID

  2. 2

    反模式:一刀切

  3. 3

    解决方案:量身定制

逻辑反模式 - 多列属性
  1. 1

    概要:多列属性

  2. 2

    反模式:创建多个列

  3. 3

    解决方案:创建依赖表

逻辑反模式 - 无钥匙进入
  1. 1

    概要:无钥匙进入

  2. 2

    反模式:忽略约束条件

  3. 3

    解决方案:声明约束

逻辑反模式 - 元数据兔子
  1. 1

    概要:元数据兔子

  2. 2

    反模式:复制表或列

  3. 3

    解决方案:分区与归一化

物理反模式 - 四舍五入误差
  1. 1

    概要:舍入误差

  2. 2

    反模式:使用 FLOAT 数据类型

  3. 3

    解决方案:使用 NUMERIC 数据类型

物理反模式 - 31种风味
  1. 1

    概要:31种口味

  2. 2

    反模式:在列定义中指定值

  3. 3

    解决方案:在数据中指定值

物理反模式 - 幽灵文件
  1. 1

    概要:幽灵文件

  2. 2

    反模式:假设你必须使用文件

  3. 3

    解决方案:根据需要使用 BLOB 数据类型

物理反模式 - 索引霰弹枪
  1. 1

    概要:索引霰弹枪

  2. 2

    反模式:没有计划地使用索引

  3. 3

    解决方案:优化您的索引

查询反模式——对未知的恐惧
  1. 1

    概要:对未知的恐惧

  2. 2

    反模式:将 null 视为普通值,或反之

  3. 3

    解决方案:使用 NULL 作为唯一值

查询反模式 - 模糊的分组
  1. 1

    概要:模糊分组

  2. 2

    反模式:引用未分组的列

  3. 3

    解决方案:明确地使用列

查询反模式 - 随机选择
  1. 1

    概要:随机选择

  2. 2

    反模式:随机排序数据

  3. 3

    解决方案:无特定顺序

查询反模式 - 伪搜索引擎
  1. 1

    概要:简易搜索引擎

  2. 2

    反模式:模式匹配谓词

  3. 3

    解决方案:选择合适的工具来完成任务

  4. 4

    使文本可搜索的替代方案

查询反模式 - 面条式查询
  1. 1

    概要:面条式查询

  2. 2

    反模式:试图一步解决复杂问题

  3. 3

    解决方案:分治法

查询反模式 - 隐式列
  1. 1

    概要:隐式列

  2. 2

    反模式:一条让你迷失的捷径

  3. 3

    解决方案:明确命名列

应用开发反模式 - 易读的密码
  1. 1

    概要:可读密码

  2. 2

    反模式:以明文形式存储密码

  3. 3

    解决方案:存储密码的加盐哈希值

  4. 4

    保护数据库密码的其他方法

应用开发反模式 - SQL注入
  1. 1

    概要:SQL注入

  2. 2

    反模式:执行未经验证的输入作为代码

  3. 3

    治愈的追寻

  4. 4

    解决方案:绝不信任任何人

应用开发反模式——伪键整洁控
  1. 1

    概要:伪键整洁控

  2. 2

    反模式:填补角落

  3. 3

    解决方案:严格遵守引用规范

应用开发反模式 - 视而不见
  1. 1

    概要:视而不见

  2. 2

    反模式:视而不见

  3. 3

    解决方案:优雅地从错误中恢复

应用开发反模式——外交豁免
  1. 1

    概要:外交豁免

  2. 2

    反模式:将SQL视为次要语言

  3. 3

    解决方案:建立包容性的质量文化

应用开发反模式——魔法 Bean
  1. 1

    概要:魔法豆

  2. 2

    反模式:模型是活跃记录

  3. 3

    解决方案:模型具有活跃记录

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)