MySQL 数据库作为数据存储的介质为应用系统提供数据存储的服务, 如何设计出合理的数据库、数据表以满足应用系统的数据存储需求?

  • 车库, 可以存放车辆, 车库都需要划分车位, 如果不划分车位, 车子杂乱无章的存放可能会导致车辆堵塞, 同时也可能造成场地的浪费——有限的场地能够停放最多的车辆, 方便每一辆车的出入
  • 数据库, 可以用来存放数据, 需要设计合理的数据表——能够完成数据的存储, 同时能够方便的提取应用系统所需的数据

数据库设计流程

数据库是为应用系统服务的, 数据库存储什么样的数据也是由应用系统决定的

当进行应用系统开发时, 首先要明确应用系统的功能需求——软件系统的需求分析

  1. 根据应用系统的功能, 分析数据实体 (实体, 需要存储的数据对象)
  • 电商系统: 商品、用户、订单…
  • 教务管理系统: 学生、课程、成绩…
  1. 提取实体的数据项 (数据项, 实体的属性)
  • 商品 (商品名称、商品图片、商品描述…)
  • 用户 (姓名、登录名、登录密码)
  1. 根据数据库设计三范式规范的实体的数据项

检查实体的数据项是否满足数据库设计三范式, 如果实体的数据不满足三范式, 可能会导致数据的冗余, 从而引起数据维护困难、破坏数据一致性等问题

  1. 绘制 E-R 图 (实体关系图, 直观的展示实体与实体之间的关系)
  2. 数据库建模
  • 三线图进行数据表设计
  • PowerDesigner
  • PDMan
  1. 建库建表, 编写 SQL 指令创建数据库、数据表
  2. 添加测试数据, SQL 测试

数据库设计案例

学校图书馆图书管理系统 (借书)

数据实体

  • 学生
  • 类别
  • 图书
  • 借书纪录
  • 管理员

提取数据项

  • 学生 (学号、姓名、性别、年龄、院系编号)
  • 院系 (院系编号、院系名称、院系说明…)
  • 类别 (类别 ID、类别名称、类别描述)
  • 图书 (图书 ID、图书名称、图书作者、图书封面、图书价格、图书库存…)
  • 借书记录 (记录 ID、学号、图书编号、数量、是否归还、借书日期、还书日期)
  • 管理员 (管理员 ID、登录名、登录密码、员工编号)
  • 员工 (员工编号、员工姓名、手机、qq、邮箱)

数据库设计三范式

  • 第一范式: 要求数据表中的字段 (列) 不可再分
  • 第二范式: 不存在非关键字段对关键字段的部分依赖
  • 第三范式: 不存在非关键字段之间的传递依赖