3.3 数据库设计图

第三章:网络与技术图表 - 数据库结构的可视化设计

数据库设计图概述

什么是数据库设计图

数据库设计图是数据库结构的可视化表示,包括实体关系图(ER图)、数据库模式图、数据流程图等。它帮助数据库管理员、开发人员和业务分析师理解数据组织结构、设计数据库架构、优化查询性能和维护数据完整性。

数据库设计图的作用

  • 概念建模:将业务需求转化为数据模型
  • 结构设计:设计表结构、字段类型和约束关系
  • 关系映射:明确表之间的关联和依赖关系
  • 性能优化:识别查询瓶颈和优化机会
  • 数据治理:确保数据质量和一致性
  • 团队协作:促进开发团队对数据结构的理解

数据库设计图类型

概念数据模型(CDM)

高层次的业务视图,描述业务实体和关系,不涉及具体的技术实现细节。

逻辑数据模型(LDM)

详细的数据结构设计,包括实体属性、数据类型、主外键关系等逻辑层面的信息。

物理数据模型(PDM)

具体的数据库实现方案,包含表名、字段名、索引、存储参数等物理层面的细节。

数据流程图(DFD)

展示数据在系统中的流动过程,包括数据源、处理过程、数据存储和数据目标。

数据库架构图

展示数据库的总体架构,包括多个数据库实例、分片策略、同步机制等。

数据字典图

详细记录每个数据元素的定义、格式、约束和业务规则的参考文档。

ER图设计基础

ER图基本元素

元素类型 图形符号 含义 设计要点
实体(Entity) 矩形框 现实世界中的对象或概念 使用名词,首字母大写
属性(Attribute) 椭圆形 实体的特征或性质 主键属性用下划线标识
关系(Relationship) 菱形框 实体之间的关联 使用动词描述关系
连接线 直线 连接实体、属性和关系 标注基数约束(1:1, 1:N, M:N)
弱实体 双线矩形 依赖其他实体存在的实体 必须通过关系连接到强实体
多值属性 双线椭圆 可以有多个值的属性 需要在物理设计时规范化

实体关系类型

典型ER关系示例

用户
1:N
订单
订单
M:N
商品
用户
1:1
用户档案

一个用户可以有多个订单,一个订单包含多个商品,每个用户有唯一的用户档案

一对一关系(1:1)

一个实体的实例只能与另一个实体的一个实例相关联。例如:用户与用户档案、员工与工牌。

一对多关系(1:N)

一个实体的实例可以与另一个实体的多个实例相关联。例如:部门与员工、用户与订单。

多对多关系(M:N)

两个实体的实例之间可以有多对多的关联关系。例如:学生与课程、订单与商品。

自关联关系

实体与自身存在关联关系。例如:员工的上下级关系、商品分类的层级关系。

Visio数据库图制作

数据库模板选择

Database Model Diagram

标准的数据库建模模板,包含实体、关系、属性等ER图基本元素。

ORM Source Model

面向对象关系映射模板,适合从现有数据库逆向工程生成模型图。

Database Server

数据库物理架构模板,用于设计数据库服务器的部署和配置架构。

UML Database Notation

使用UML标记法的数据库设计模板,更适合面向对象的系统设计。

ER图创建步骤

详细制作流程

  1. 需求分析
    • 收集和分析业务需求文档
    • 识别核心业务实体和业务流程
    • 确定实体的关键属性和约束条件
  2. 概念建模
    • 创建新的Database Model Diagram
    • 添加主要业务实体(Entity)
    • 定义实体的核心属性和主键
  3. 关系建立
    • 分析实体间的业务关系
    • 使用Relationship连接相关实体
    • 标注基数约束(1:1, 1:N, M:N)
  4. 属性完善
    • 添加实体的详细属性信息
    • 设置数据类型、长度、默认值
    • 定义外键约束和参照完整性
  5. 模型优化
    • 检查模型的规范化程度
    • 优化表结构和查询性能
    • 添加索引和分区策略

高级设计技巧

分层设计

  • 将复杂模型分解为多个视图
  • 核心实体放在中央位置
  • 使用颜色区分不同业务域
  • 保持布局的对称性和美观性

命名规范

  • 实体名使用单数形式
  • 属性名采用驼峰命名法
  • 关系名使用动词短语
  • 保持命名的一致性和可读性

约束设计

  • 明确主键和候选键
  • 设置合适的外键约束
  • 定义检查约束和默认值
  • 考虑数据完整性和业务规则

性能考虑

  • 识别高频查询的字段
  • 设计合理的索引策略
  • 考虑表的分区和分片
  • 平衡规范化和查询性能

实际项目案例

在线教育系统数据库设计

业务需求分析

项目背景:设计一个在线教育平台的数据库,支持用户管理、课程管理、学习跟踪、考试评估等核心功能。需要支持多角色用户、视频课程、作业提交、成绩统计等业务场景。

核心实体设计

用户管理
  • 用户(User)
  • 角色(Role)
  • 权限(Permission)
  • 用户档案(UserProfile)
课程体系
  • 课程(Course)
  • 章节(Chapter)
  • 课时(Lesson)
  • 课程分类(Category)
学习跟踪
  • 学习记录(StudyRecord)
  • 学习进度(Progress)
  • 作业提交(Assignment)
  • 考试成绩(ExamResult)
互动交流
  • 讨论区(Forum)
  • 评论(Comment)
  • 私信(Message)
  • 课程评价(Review)

关键表结构示例

-- 用户表 CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, role_id INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (role_id) REFERENCES roles(role_id) ); -- 课程表 CREATE TABLE courses ( course_id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(200) NOT NULL, description TEXT, instructor_id INT, category_id INT, price DECIMAL(10,2) DEFAULT 0.00, status ENUM('draft', 'published', 'archived') DEFAULT 'draft', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (instructor_id) REFERENCES users(user_id), FOREIGN KEY (category_id) REFERENCES categories(category_id) ); -- 学习记录表 CREATE TABLE study_records ( record_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, lesson_id INT, watch_duration INT DEFAULT 0, completion_rate DECIMAL(5,2) DEFAULT 0.00, last_position INT DEFAULT 0, study_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(user_id), FOREIGN KEY (lesson_id) REFERENCES lessons(lesson_id) );

实践练习

练习1:图书管理系统ER图

场景:设计一个图书馆管理系统的数据库模型

要求:
  • 包含图书、读者、借阅、归还等核心业务
  • 设计图书分类和作者信息管理
  • 考虑罚款、预约、续借等扩展功能
  • 建立完整的ER图,标注所有关系类型
  • 生成对应的物理数据表结构

练习2:医院管理系统数据建模

场景:为医院信息管理系统设计数据库架构

要求:
  • 包含患者、医生、科室、病历等基础实体
  • 设计挂号、诊断、用药、收费流程
  • 考虑医疗设备、药品库存管理
  • 建立多级权限和数据安全机制
  • 创建完整的概念和逻辑数据模型

练习3:供应链管理系统设计

场景:构建企业供应链管理的数据架构

要求:
  • 设计供应商、采购、库存、销售流程
  • 包含产品、订单、物流、财务模块
  • 考虑多仓库、多货币、多语言支持
  • 建立数据仓库和报表分析需求
  • 设计分布式数据同步和一致性方案

本章小结

学习成果

通过本章学习,您已经掌握了:

  • 数据库设计图的基本概念和重要作用
  • ER图的基本元素和关系类型
  • 概念、逻辑、物理数据模型的区别
  • 使用Visio创建专业数据库设计图
  • 数据库设计的规范和最佳实践
  • 复杂业务系统的数据建模经验

下章预告

下一章我们将学习UML图表的创建方法,包括:

  • UML标准和各种图表类型详解
  • 用例图、类图、序列图的绘制方法
  • 活动图、状态图、部署图的应用
  • 面向对象系统分析和设计实践