数据库设计

article/2025/10/13 16:52:00

数据库设计

  • 一.数据库设计概述
    • 1.数据库设计的特点
    • 2.数据库设计方法
    • 3.数据库设计的基本步骤
    • 4.数据库设计过程中的各级模式
  • 二.需求分析
    • 1.需求分析的任务
    • 2.需求分析的方法
    • 3.数据字典
  • 三.概念结构设计
    • 1.概念模型
    • 2.E-R模型
    • 3.概念结构设计

一.数据库设计概述

①数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
②信息管理要求:在数据库中应该存储和管理哪些数据对象。
③数据操作要求:对数据对象需要进行哪些操作,如增删改查、统计等操作。
④数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。
⑤高效率的运行环境:

  • 数据库数据的存取效率高;
  • 数据库存储空间的利用率高;
  • 数据库系统运行管理的效率高。

1.数据库设计的特点

(1)数据库建设的基本规律
①三分技术、七分管理、十二分基础数据。

②管理

  • 数据库建设项目管理;
  • 企业(即应用部门)的业务管理。

③基础数据

数据的收集、整理、组织和不断更新。

(2)结构(数据)设计和行为(处理)设计相结合

结构和行为分离的设计(早期):
a.传统的软件工程:重行为设计

  • 忽视对应用中数据语义的分析和抽象,只要有可能就尽量推迟数据结构设计的决策。

b.早期的数据库设计:重结构设计

  • 致力于数据模型和数据库建模方法研究,忽视了行为设计对结构设计的影响。

2.数据库设计方法

(1)大型数据库设计是涉及多学科的综合性技术,又是一项庞大的工程。

(2)它要求多方面的知识和技术,主要包括:

计算机的基础知识;
软件工程的原理和方法;
程序设计的方法和技巧;
数据库的基本知识;
数据库设计技术;
应用领域的知识。

(3)手工试凑法(早期)

  • 设计质量与设计人员的经验和水平有直接关系;
  • 缺乏科学理论和工程方法的支持,工程的质量难以保证;
  • 数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价。

(4)规范设计法(现代)

①手工设计方法;
②基本思想:

  • 过程迭代和逐步求精。

③各种典型方法:

  • 新奥尔良New Orleans方法;
  • 基于E-R模型的数据库设计方法;
  • 3NF(第三范式)的设计方法;
  • 面向对象的数据库设计方法;
  • 统一建模语言(UML)方法。

3.数据库设计的基本步骤

(1)数据库设计分6个阶段

①需求分析

是否做得充分与准确,决定了构建数据库的速度和质量。

②概念结构设计

通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。

③逻辑结构设计

将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化。

④物理结构设计

a.为逻辑数据结构选取一个最适合应用环境的物理结构;
b.包括存储结构和存取方法。

⑤数据库实施

a.根据逻辑设计和物理设计的结构构建数据库;
b.编写与调试应用程序;
c.组织数据入库并进行试运行。

⑥数据库运行和维护

a.经过试运行后即可投入正式运行;
b.在运行过程中必须不断对其进行评估、调整与修改。

(2)需求分析和概念设计独立于任何数据库管理系统。

(3)逻辑设计和物理设计与选用的数据库管理系统密切相关。
在这里插入图片描述
(4)参加数据库设计人员的选定

①系统分析人员和数据库设计人员

  • 自始至终参与数据库设计,其水平决定了数据库系统的质量;

②数据库管理员和用户代表

  • 主要参加需求分析与数据库的运行和维护;

③应用开发人员

  • 包括程序员和操作员;
  • 在实施阶段参与进来,分别负责编制程序和准备软硬件环境。

(5)设计一个完善的数据库应用系统,往往是上述六个阶段的不断反复。

(6)这个设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。

(7)把数据库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。

4.数据库设计过程中的各级模式

在这里插入图片描述
(1)应用

需求分析阶段:综合各个用户的应用需求。

(2)概念模式

概念设计阶段:

  • 形成独立于机器特点,独立于各个数据库管理系统产品的概念模式(E-R图)。

(3)逻辑模式

逻辑设计阶段:

  • 首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。
  • 然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(view),形成数据的外模式。

(4)内模式

物理设计阶段:

  • 根据数据库管理系统特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。

二.需求分析

需求分析就是分析用户的要求:

  • 是设计数据库的起点;
  • 结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。

1.需求分析的任务

(1)详细调查现实世界要处理的对象(组织、部门、企业等)。

(2)充分了解原系统(手工系统或计算机系统)工作概况。

(3)明确用户的各种需求。

(4)在此基础上确定新系统的功能。

(5)新系统必须充分考虑今后可能的扩充和改变。

(6)调查的重点是“数据”和“处理”,获得用户对数据库的要求:

①信息要求:

  • 用户需要从数据库中获得信息的内容与性质;
  • 由信息要求可以导出数据要求,即在数据库中需要存储哪些数据。

②处理要求:

  • 用户要完成的处理功能;
  • 对处理性能的要求。

③安全性与完整性要求。

(7)确定用户最终需求的难点

  • 用户缺少计算机知识,不能准确地表达自己的需求,他们所提出的需求往往不断地变化。
  • 设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。

(8)解决方法

设计人员必须不断深入地与用户进行交流,才能逐步确定用户的实际需求。

2.需求分析的方法

(1)调查清楚用户的实际需求并进行初步分析。
(2)与用户达成共识。
(3)分析与表达这些需求。
(4)调查用户需求的步骤

  • 调查组织机构情况;
  • 调查各部门的业务活动情况;
  • 协助用户明确对新系统的各种要求,包括信息要求、处理要求、完全性与完整性要求;
  • 确定新系统的边界。

(5)常用调查方法

①跟班作业。
②开调查会:

  • 通过与用户座谈来了解业务活动情况及用户需求;

③请专人介绍。
④询问。
⑤设计调查表请用户填写。
⑥查阅记录:

  • 查阅与原系统有关的数据记录。

(6)进一步分析和表达用户需求
①简单实用的分析方法:

结构化分析方法(Structured Analysis,SA)

  • SA方法从最上层的系统组织结构入手;
  • 采用自顶向下、逐层分解的方式分析系统。

②对用户需求进行分析与表达后,需求分析报告必须提交给用户,征得用户的认可。
在这里插入图片描述

3.数据字典

(1)数据字典是关于数据库中数据的描述,即元数据,不是数据本身。

(2)数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善。

(3)数据字典是进行详细的数据收集和数据分析所获得的主要结果。

注意:和关系数据库管理系统中数据字典的区别和联系。

(4)数据字典的内容

  • 数据项
  • 数据结构
  • 数据流
  • 数据存储
  • 处理过程

(5)数据项数据的最小组成单位。

(6)若干个数据项可以组成一个数据结构。

(7)数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。

(8)数据项
①数据项是不可再分的数据单位。

②对数据项的描述

数据项描述=
{数据项名,
数据项含义说明,
别名,
数据类型,
长度,
取值范围,
取值含义,
与其他数据项的逻辑关系,
数据项之间的联系}

③“取值范围”、“与其他数据项的逻辑关系”定义了数据的完整性约束条件,是设计数据检验功能的依据。

④可以用关系规范化理论为指导,用数据依赖的概念分析和表示数据项之间的联系。

(9)数据结构
①数据结构反映了数据之间的组合关系。

②一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。

③对数据结构的描述

数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}

(10)数据流
①数据流是数据结构在系统内传输的路径。

②对数据流的描述:

数据流描述=
{数据流名,
说明,
数据流来源,
数据流去向,
组成:{数据结构},
平均流量,
高峰期流量}

③数据流来源:说明该数据流来自哪个过程。

④数据流去向:说明该数据流将到哪个过程去。

⑤平均流量:在单位时间(每天、每周、每月等)里的传输次数。

⑥高峰期流量:在高峰时期的数据流量。

(11)数据存储
①数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。

②对数据存储的描述:

数据存储描述=
{数据存储名,
说明,
编号,
输入的数据流,
输出的数据流,
组成:{数据结构},
数据量,
存取频度,
存取方式}

③存取频度:每小时、每天或每周存取次数,每次存取的数据量等信息。

④存取方法:批处理/联机处理;检索/更新;顺序检索/随机检索。

⑤输入的数据流:数据来源。

⑥输出的数据流:数据去向。

(12)处理过程
①处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息。

②处理过程说明性信息的描述:

处理过程描述=
{处理过程名,
说明,
输入:{数据流},
输出:{数据流},
处理:{简要说明}}

③简要说明:说明该处理过程的功能及处理要求

  • 功能:该处理过程用来做什么;
  • 处理要求:处理频度要求,如单位时间内处理多少事务,多少数据量、响应时间要求等;
  • 处理要求是后面物理设计的输入及性能评价的标准。

三.概念结构设计

1.概念模型

(1)将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计。

(2)概念模型的特点

  • 能真实、充分地反映现实世界,是现实世界的一个真实模型;
  • 易于理解,从而可以用它和不熟悉计算机的用户交换意见;
  • 易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;
  • 易于向关系、网状、层次等各种数据模型转换。

(3)描述概念模型的工具

E-R模型。

2.E-R模型

(1)实体之间的联系
①两个实体型之间的联系

a.一对一联系(1:1)

  • 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系。

b. 一对多联系(1:n)

  • 如果对于实体集A中的每一个实体,实体集B中有n个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系。

c.多对多联系(m:n)

  • 如果对于实体集A中的每一个实体,实体集B中有n个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体与之联系,则称实体集A与实体集B具有多对多联系。

在这里插入图片描述
②两个以上的实体型之间的联系

  • 一般地,两个以上的实体型之间也存在着一对一、一对多、多对多联系。

在这里插入图片描述
③单个实体型内的联系

  • 同一个实体集内的各实体之间也可以存在一对一、一对多、多对多的联系。

在这里插入图片描述

联系的度:参与联系的实体型的数目

  • 2个实体型之间的联系度为2,也称为二元联系;
  • 3个实体型之间的联系度为3,称为三元联系;
  • N个实体型之间的联系度为N,称为N元联系。

(2)E-R图
E-R图提供了表示实体型、属性和联系的方法:
①实体型

用矩形表示,矩形框内写明实体名。

②属性

用椭圆形表示,并用无向边将其与相应的实体型连接起来。

在这里插入图片描述
③联系

用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型。

  • 联系可以有属性。
    在这里插入图片描述

(3)举例说明:绘制仓库、零件、供应商、项目、职工的概念模型
①某个工厂物资管理的概念模型。物资管理涉及的实体有:

  • 仓库:属性有仓库号、面积、电话号码;
  • 零件:属性有零件号、名称、规格、单价、描述;
  • 供应商:属性有供应商号、姓名、地址、电话号码、账号;
  • 项目:属性有项目号、预算、开工日期;
  • 职工:属性有职工号、姓名、年龄、职称。

②实体间的联系有:

  • 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多的联系。用库存量来表示某种零件在某仓库中的数量。
  • 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的联系。
  • 职工之间具有领导与被领导关系,即仓库主任领导若干保管员,因此职工实体型中具有一对多的联系。
  • 供应商、项目、零件三者之间具有多对多的联系。即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件可由不同供应商供给。

③实体及属性图:
在这里插入图片描述

④实体及其联系图:
在这里插入图片描述
⑤完整的实体-联系图
在这里插入图片描述

3.概念结构设计

(1)实体与属性的划分原则
①为简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。

②两条准则:

  • 作为属性,不能再具有需要描述的性质。属性必须是不可分的数据项,不能包含其他属性。
  • 属性不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。

(2)E-R图的集成
在这里插入图片描述

①第一步:合并。

解决各分E-R图之间的冲突,将分E-R图合并起来生成初步E-R图。

a.各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。

b.子系统E-R图之间的冲突主要有三类:

属性冲突:

  • 属性域冲突,即属性值的类型、取值范围或取值集合不同。
  • 属性取值单位冲突。

命名冲突:

  • 同名异义,即不同意义的对象在不同的局部应用中具有相同的名字。
  • 异名同义(一义多名),即同一意义的对象在不同的局部应用中具有不同的名字。
  • 命名冲突:
    可能发生在实体、联系一级上;
    也可能发生在属性一级上;
    通过讨论、协商等手段加以解决。

结构冲突:

  • 同一对象在不同应用中具有不同的抽象。
    解决方法:把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。
  • 同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同。
    解决方法:使该实体的属性取各自子系统的E-R图中属性的并集,再适当调整属性的次序。
  • 实体间的联系在不同的E-R图中为不同的类型。
    解决方法:根据应用的语义对实体联系的类型进行综合或调整。

②第二步:修改和重构。

a.消除不必要的冗余,生产基本E-R图。

  • 所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。
  • 消除冗余主要采用分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。
  • 并不是所有的冗余数据与冗余联系都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价。

b.用规范化理论来消除冗余

确定分E-R图实体之间的数据依赖

  • 实体之间一对一、一对多、多对多的联系可以用实体码之间的函数依赖来表示,于是有了函数依赖集FL

求FL的最小覆盖GL,差集为D=FL-GL

  • 逐一考察D中的函数依赖,确定是否是冗余的联系,若是,就把它去掉。
  • 由于规范化理论受到泛关系假设的限制,应注意下面两个问题:
    冗余的联系一定在D中,而D中的联系不一定是冗余的;
    当实体之间存在多种联系时,要将实体之间的联系在形式上加以区分。

http://chatgpt.dhexx.cn/article/v7L5tAtb.shtml

相关文章

机器学习之PCA

一、PCA基本介绍 PCA(Principal Components Analysis)-主成分分析算法 用于数据降维、可视化、去噪非监督学习算法 二、PCA工作原理 目标:每次将空间中多维的样本点映射到一条直线上(要保证样本点之间的间距最大,用方差衡量,即保…

PCA9536——填坑

0. 问题 使用PCA9536输出模式控制4个小灯,开始时候按几次就不显示了,以为是接线不稳定原因。 后来一按开机电源就不显示了,以为是其他器件电源不稳定导致。 1. 问题1排除 接线问题,重新接线,重新做端子,…

sklearn PCA

sklearn.decomposition.PCA class sklearn.decomposition.PCA(n_componentsNone, *, copyTrue, whitenFalse, svd_solverauto, tol0.0, iterated_powerauto, random_stateNone)官方:link PCA是特征降维中一种 线性降维 的方法。 与特征选择不同(直接筛…

使用PCA对彩色图片降维

PCA对图片降维 1.原图片2.PCA降维思路3.代码4.k5效果图5.结论 1.原图片 2.PCA降维思路 1、小灰灰图片(407,367)2、求图片407行每行的均值mean,再将407行每行元素各自减去对应行的均值mean,即去中心化。得矩阵X&#xf…

使用PCA拟合平面

PCA原理&使用PCA拟合平面 背景三点确定一平面多点拟合平面基础数学知识PCA基本思想PCA拟合平面计算过程 PCA理解中心化协方差对角化 背景 本文参考以下两篇平面解析的论文。 《Fast Plane Extraction in Organized Point Clouds Using Agglomerative Hierarchical Cluster…

Dynamic inner PCA 和 Dynamic PCA

动态PCA方法的核心思想: 将数据X变成增广矩阵,即: l为潜在变量数,然后对X进行传统的PCA方法进行求解,即是动态PCA的结果。 动态内模PCA与之不同,上述动态PCA的一大缺陷是增加了数据的维度,而动…

python实现PCA

★ PCA个人理解: PCA降维是通过变换坐标系,来尽可能的减少信息损失。 ★ PCA思路: 我们的初始矩阵为X,它是mn维的矩阵,其中:m是该数据集有m条记录,n是每条记录中有n个特征,X的基本格…

PCA降维算法

目录 1.维度1.1数据维度1.2特征维度 2.sklearn中的降维算法2.1PCA与SVD2.2降维的实现2.3重要参数n_components2.3.1最大似然估计自选超参数2.3.2 按信息量占比选超参数 3.PCA中的SVD3.1重要参数svd_solver 与 random_state3.2重要属性components_3.3重要接口inverse_transform …

PCA降维

一、主成分分析 1、动机:多个变量之间往往存在一定的相关性,可以通过线性组合的方式从中提取信息。 2、主成分分析:将原始的n维数据投影到低维空间,并尽可能的保留更多的信息。 ---投影后方差最大 ---最小化重构误差 从而达到…

pca绘图

pca 1 PCAtools 1.1 加载R包 library(PCAtools) library(tidyverse)1.2 加载数据&#xff0c;构建表达矩阵和分组信息&#xff08;以iris为例&#xff09; iris <- as.data.frame(iris) iris <- iris %>% mutate(class str_c("a",1:dim(iris)[1],sep …

PCA算法详解

文章出处&#xff1a;http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后&#xff0c;颇有体会。最近在做主成分分析和奇异值分解方面的项目&#xff0c;所以记…

PCA 算法详解

PCA算法步骤&#xff1a; 设有m条n维数据。 1&#xff09;将原始数据按列组成n行m列矩阵X 2&#xff09;将X的每一行&#xff08;代表一个属性字段&#xff09;进行零均值化&#xff0c;即减去这一行的均值 3&#xff09;求出协方差矩阵 4&#xff09;求出协方差矩阵的特征值及…

PCA原理

PCA 各位&#xff0c;久违了&#xff5e; 什么是PCA&#xff1f; 什么是PCA呢&#xff1f;这是一个问题&#xff0c;什么样的问题&#xff1f;简单而又复杂的问题&#xff0c;简单是因为百度一下就会出现一大堆的解释&#xff0c;复杂是因为它里面蕴含的内容还是很多的&…

python实现PCA降维

本文包括两部分&#xff0c;使用python实现PCA代码及使用sklearn库实现PCA降维&#xff0c;不涉及原理。 总的来说&#xff0c;对n维的数据进行PCA降维达到k维就是&#xff1a; 对原始数据减均值进行归一化处理&#xff1b;求协方差矩阵&#xff1b;求协方差矩阵的特征值和对…

PCA算法

主成分分析&#xff08;Principal components analysis&#xff0c;以下简称PCA&#xff09;是最重要的降维方法之一。 参考&#xff1a;http://www.cnblogs.com/pinard/p/6239403.html PCA的思想 PCA顾名思义&#xff0c;就是找出数据里最主要的方面&#xff0c;用数据里最…

PCA

R语言实现PCA 一次来自男神MR.来的作业PCA读取数据PCA主体部分输出PCA的主要结果&#xff0c;列出主成分分析分析结果利用碎石图来展示PCA结果对component进行一些解释 简略分析利用PCA结果来进行一个排序下面进行聚类分析 一次来自男神MR.来的作业 PCA 读取数据 #读取数据&…

主成分分析(PCA)原理详解

转载请声明出处&#xff1a;http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后&#xff0c;颇有体会。最近在做主成分分析和奇异值分解方面的项目&#xff0c…

PCA详解

本文目录 一、来源及作用存在问题基本作用 二、 基本原理及求解步骤核心思想如何选择投影方向 三、原理分析最大投影方差最小重构代价 四、SVD与PCA的关系 一、来源及作用 存在问题 在我们训练模型的过程中&#xff0c;有时会出现在训练集上误差较小&#xff0c;但到了测试集误…

主成分分析法(PCA)

主成分分析&#xff08;Principal components analysis&#xff0c;以下简称PCA&#xff09;是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA&#xff0c;下面我们就对PCA的原理做一个总结。 目录 …

主成分分析(PCA)方法步骤以及代码详解

主成分分析&#xff08;PCA&#xff09;方法步骤以及代码详解 前言 上一节我们了解到在构建神经网络模型&#xff0c;除了掌握如何搭建神经网络架构&#xff0c;了解参数具体含义&#xff0c;规避风险等方法。第一步是要对采用数据集的详细了解&#xff0c;无需接触任何神经网…