数据库设计与E-R模型

第五章:数据库设计

💡 本章整合了概念模型、ER图、关系模型、转换规则等内容,形成完整的数据库设计知识体系

5.1 数据库设计概述

5.1.1 什么是数据库设计

定义:数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求。

核心问题:如何设计一个结构合理、使用方便、效率高的数据库?

设计目标

  • 满足用户的信息需求
  • 满足用户的处理需求
  • 保证数据的完整性和安全性
  • 具有良好的性能

5.1.2 数据库设计的特点

特点 说明
三分技术,七分管理,十二分基础数据 强调管理和基础数据的重要性
结构设计和行为设计相结合 既要设计数据结构,也要设计处理流程
多学科综合 涉及计算机、管理学、应用领域知识

5.1.3 数据库设计方法

规范设计法的代表

  • 新奥尔良法:将数据库设计分为若干阶段和步骤
  • 基于E-R模型的设计方法:目前最常用的方法
  • 基于3NF的设计方法:基于规范化理论
image-ade3cbb0

5.1.4 数据库设计的六个阶段

image-314953ae
阶段 主要任务 产出物
需求分析 调查用户需求,画数据流图(自顶向下) 需求说明书、数据流图
概念设计 设计E-R图(实体联系模型) E-R图(概念模型)
逻辑设计 将E-R图转换为关系模式 表结构定义
物理设计 确定存储结构、索引策略 物理存储方案
实施 创建数据库、建表、导入数据 实际的数据库
运行维护 监控、备份、优化、调整 稳定运行的系统

5.2 数据建模:三个世界的转换

💡 数据库设计就是把现实世界的事物,一步步抽象成计算机能存储的数据

5.2.1 三个世界

image-05f43ace image-db9fb12d

5.2.2 两级抽象

抽象级别 从...到... 模型类型 工具
第一级抽象 现实世界 → 信息世界 概念模型 E-R图
第二级抽象 信息世界 → 计算机世界 数据模型 关系模式(表结构)

📌 重点:概念模型是独立于DBMS的,数据模型是依赖于具体DBMS的

5.3 需求分析

5.3.1 需求分析的任务

主要任务

  1. 信息需求:用户需要存储和管理哪些数据
  2. 处理需求:用户需要对数据进行哪些操作
  3. 安全性需求:数据的保密性和访问控制要求
  4. 完整性需求:数据的正确性和一致性要求

5.3.2 需求分析的方法

方法 说明 特点
调查研究 访谈、问卷、观察 获取第一手资料
自顶向下 从全局到局部分解 结构清晰,不遗漏
自底向上 从具体到抽象归纳 细节准确
结构化分析(SA) 使用数据流图等工具 规范、直观

5.3.3 数据流图(DFD)

数据流图的符号

符号 名称 含义
○ 或 ◯ 加工/处理 对数据的操作
数据流 数据的流向
= 或 ▭ 数据存储 数据保存的地方
外部实体 系统外部的人或系统

数据流图示例(图书借阅系统)

flowchart LR
    Reader[读者] -->|借阅请求| P1((借阅处理))
    P1 -->|借阅信息| D1[(借阅记录)]
    P1 -->|更新库存| D2[(图书库存)]
    D2 -->|库存信息| P1
    P1 -->|借阅结果| Reader

5.3.4 数据字典

定义:数据字典是对数据流图中各元素的详细描述

内容

内容 描述
数据项 最小数据单位(字段)的描述
数据结构 数据项的组合方式
数据流 数据的流动情况
数据存储 数据保存的方式
处理过程 对数据的操作描述

数据项描述示例

数据项名:学号
别名:学生编号、Sno
类型:字符型
长度:10
取值范围:以年份开头的10位数字
含义说明:学生的唯一标识

5.4 概念结构设计(E-R模型详解)

💡 概念设计是数据库设计中最重要的阶段,产出的E-R图是后续所有工作的基础

5.4.1 概念设计的特点

特点 说明
独立于DBMS 不依赖于任何具体的数据库管理系统
独立于物理存储 不考虑数据的存储结构
易于理解 用户和设计人员都能理解
易于修改 便于调整和扩展

5.4.2 概念模型的基本概念

💡 概念模型是对现实世界的第一级抽象,用来描述"有什么东西"和"它们之间有什么关系"

概念 定义 举例
实体(Entity) 客观存在并可相互区分的事物(可以是具体的,也可以是抽象的) 学生张三、一门课程、一次借阅
属性(Attribute) 实体或联系所具有的特性 学生的姓名、年龄、学号
码/键(Key) 唯一标识实体的属性或属性组 学号、身份证号
域(Domain) 某个属性的取值范围 年龄:1-150;性别:男/女
元组 表中的一行,对应一条记录 (001, '张三', 20, '男')
实体型(Entity Type) 实体的结构描述 学生(学号, 姓名, 年龄, 性别)
实体值 具体的实体实例 ('001', '张三', 20, '男')
实体集(Entity Set) 同一类型实体的集合 所有学生的集合
联系(Relationship) 实体之间的关联关系 学生"选修"课程
image-3f7f7150

5.4.3 实体之间的联系类型

💡 联系描述的是实体之间的对应关系,分为三种类型

三种联系类型

image-366bdaf2

联系类型对比表

类型 符号 含义 实例
一对一 1:1 A中一个实体对应B中最多一个实体 班级-班长、国家-首都
一对多 1:N A中一个实体对应B中多个实体 班级-学生、部门-员工
多对多 M:N A中多个实体对应B中多个实体 学生-课程、作者-图书

5.4.4 E-R图的表示方法(实体-联系图)

💡 E-R图是数据库概念设计中最常用的工具,也是设计人员与用户沟通的桥梁

E-R图的三个基本元素
图形 含义 说明
矩形 实体 框内写实体名
椭圆 属性 框内写属性名,主键加下划线
菱形 联系 框内写联系名
线段 连接 连接各个图形,标注联系类型
image-aff6b607
实例1:图书借阅管理系统E-R图
image-26c27f9a
实例2:医院病房管理系统E-R图

image-1110803d

5.4.5 概念设计的方法

flowchart TB
    A[抽象数据<br>设计局部E-R图] --> B[合并局部E-R图<br>生成全局E-R图]
    B --> C[优化全局E-R图]

    style A fill:#FFB6C1
    style B fill:#90EE90
    style C fill:#87CEEB
局部E-R图合并的三种冲突

💡 当多个设计人员分别设计局部E-R图后,合并时可能产生冲突

冲突类型 说明 例子
属性冲突 同一属性的类型、取值范围不一致 A组:年龄(INT);B组:年龄(VARCHAR)
命名冲突 同一事物不同名,或不同事物同名 A组:编号;B组:ID(指同一个属性)
结构冲突 同一实体的属性组成不同,或联系类型不同 A组:学生-课程是M:N;B组:认为是1:N

⬅️ 三级模式与二级映射 🏠 00-数据库 ➡️ 逻辑设计与实施维护