SQL反模式(七)

来源:互联网 发布:新浪足球数据库 编辑:程序博客网 时间:2024/06/05 17:16

欢迎参考 SQL反模式(前言)的数据库设计

此文章只是给自己做一个小抄,如有冒犯,还忘见谅


1. 非礼勿视

目标: 写更少的代码

这里写图片描述


识别反模式

这里写图片描述


解决方案

  • 保持节奏
    检查数据库 API 调用的返回状态和异常。

  • 回溯你的脚步

这里写图片描述

2. 外交豁免权

目标: 采用最佳实践

  • 将源代码使用版本控制工具管理起来,比如: SVN或 Git
  • 为程序编写自动化单元测试脚本或者功能测试脚本
  • 编写文档,规格说明以及代码注释来记录程序的需求和实现机制

识别反模式

这里写图片描述
这里写图片描述


解决方案: 建立一个质量至上的文化

  • 清晰地定义项目需求,并且写成文档
  • 设计并实现一个解决方案来满足需求
  • 验证并测试解决方案符合需求

1. 陈列A:编写文档

  • 实体关系图

这里写图片描述

  • 表,列以及视图

这里写图片描述

  • 关系

这里写图片描述

  • 触发器

这里写图片描述

  • 储存过程

这里写图片描述

  • SQL 安全

这里写图片描述

  • 数据库基础设施

这里写图片描述

  • ORM

这里写图片描述

2. 寻找证据:源代码版本控制

  • 数据定义脚本: 所有数据库都提供 CREATE TABLE 或别的定义数据库对象来执行 SQL 脚本
  • 触发器和储存过程: 很多项目以数据库函数的形式为程序代码提供支持。你的程序可能离开这些函数根本无法工作,因此它们也算你的项目代码的一部分
  • 初始化数据 : 检查表可能包含一些数据用以在任何用户输入新数据之前初始化数据库。你应该将这些初始数据保存起来,以备需要从项目源码重新构造数据库时使用。初始化数据也叫做种子数据
  • ER 图及文档 : 这些文件不是代码,但它们和代码,数据库需求,实现机制以及和程序的整合等联系密切。由于项目升级依赖于数据库和程序的同时升级,你需要将这些文件也保持同步更新。需要确保这些文件切实描述了当前版本的设计。
  • DBA 脚本 : 大多数项目都有一系列的数据处理任务,这些任务都是在程序之处处理的,包括导入和导出数据,同步数据,生成报表,备份,验证数据,测试等。有些可能是用 SQL 脚本编写的。

3. 举例:测试


3. 魔豆

目标: 简化 MVC 模型

这里写图片描述


反模式: 模型仅仅是活动记录

  • 活动记录模式连接程序模型和数据库结构

这里写图片描述

  • 活动记录模式暴露了 CRUD 系列函数

这里写图片描述

  • 活动记录模型支持弱域模型

这里写图片描述

  • 魔豆难以进行单元测试

这里写图片描述


识别反模式

这里写图片描述


解决方案: 模型包含活动记录

  • 领会模型的意义

这里写图片描述
这里写图片描述

  • 将领域模型应用到实际工作中

这里写图片描述

原创粉丝点击