数据库系统-数据库设计

article/2025/10/13 16:53:59

数据库系统-数据库设计

数据库设计概述及六步骤简介

数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。

数据库设计的特点

数据库设计是一项涉及多学科的综合性技术,又是一项庞大的工程项目,具有如下特点:

  1. 数据库建设是硬件、软件和干件(技术和管理的界面)的结合
  2. 数据库设计应该和应用系统设计相结合

数据库设计方法

常用的数据库设计方法如下:

  1. 新奥尔良方法:将数据库设计分为若干阶段和步骤
  2. 基于E-R模型的设计方法:概念设计阶段广泛采用
  3. 基于3NF的设计方法:逻辑阶段可采用的有效方法
  4. ODL(Object Definition Language)方法:面向对象的数据库设计方法
  5. 计算机辅助设计:ORACLE Designer 2000、SYBASE PowerDesigner

数据库设计的基本步骤

数据库设计分为6个阶段:

  1. 需求分析:准确了解与分析用户需求(包括数据与处理)
  2. 概念结构设计:对用户需求进行综合、归纳与抽象,形成一个独立与具体DBMS的概念模型
  3. 逻辑结构设计:将概念结构转换为某个DMBS所支持的数据模型,并对其进行优化
  4. 物理结构设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
  5. 数据库实施:建立数据库,编制与调试应用程序,组织数据入库,并进行试运行
  6. 数据库运行和维护:对数据库系统进行评论、调整与修改

需求分析-步骤一

需求分析是整个数据库设计过程中最重要的步骤之一,是后继各阶段的基础。在需求分析阶段,从多方面对整个组织进行调查,收集和分析各项应用对信息和处理两方面的需求。

  1. 收集资料

    收集资料是数据库设计人员和用户共同完成的任务。确定企业组织的目标,从这些目标导出对数据库的总体要求。通过调研,确定由计算机完成的功能。

  2. 分析整理

    分析的过程是对所收集到的数据进行抽象的过程,产生求解的模型。

  3. 数据流图

    采用数据流图来描述系统的功能。数据流图可以形象地描述事务处理与所需数据的关联,便于用结构化系统方法,自顶向下,逐层分解,步步细化。

  4. 数据字典

    对数据流图中的数据流和加工等进一步定义,从而完整地反映系统需求。

    数据字典的用途:进行详细的数据收集和数据分析所获得的主要结果。

    数据字典的内容:数据项、数据结构、数据流、数据存储、处理过程

  5. 用户确认

    需求分析得到的数据流图和数据字典要返回给用户,通过反复完善,最终取得用户的认可

概念结构设计-步骤二

概念设计阶段的目标是产生整体数据库概念结构,即概念模式。概念模式是整个组织各个用户关心的信息结构。描述概念结构的有力工具是 E-R模型

实体型

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

属性

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

联系

​ 用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时这无向边旁标上联系的类型(1:1、1:n或m:n)

image-20220402222820453

建立E-R模型步骤

  1. 设计局部E-R模型

    确定局部结构范围

    定义实体

    联系定义

    属性分配

  2. 设计全局E-R模型

    确定公共实体类型

    局部E-R模型的合并

    消除冲突

  3. 全局E-R模型的优化

    实体类型的合并

    冗余属性的消除

    冗余联系的消除

逻辑结构设计-步骤三

逻辑结构设计就是把上述概念模型转换成为某个具体的数据库管理系统所支持的数据模型

E-R模型向关系模式的转换

E-R模型向关系模式的转换转换原则:

  1. 每一个实体类型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码

  2. 联系的转换

    一般1:1,1:m联系不产生新的关系模式,而是将一方实体的码加入多方实体对应的关系模式中,联系的属性也一并加入

    m:n联系要产生一个新的关系模式,改关系模式由联系涉及实体的码加上联系的属性(若有)组成

两实体之间的1:1联系

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要这该关系模式的属性中加入另一个关系模式的码和联系本身的属性。可将任一方实体的主码纳入另一方实体对应的关系中,若有联系的属性也一并纳入。

例如:

image-20220402224235580

关系模式:

工厂(厂号,厂名,地点)

厂长(姓名,性别,年龄,厂号,任期)

两实体间的1:m联系

可将“1”方实体的主码纳入“m”方实体对应的关系中作为外码,同时把联系的属性也一并纳入“m”方对应的关系中

image-20220402224643637

关系模式:

仓库(仓库号,地点,面积)

商品(货号,品名,价格,仓库号,数量)

同一实体间的1:m联系

可在这个实体所对应的关系中多设一个属性,作为域该实体相联系的另一个实体的主码。

image-20220402232127166

关系模式:

职工(工号,姓名,年龄,性别,职称,工资,领导者工号,民意测验)

两实体间的弱实体联系

可将被依赖实体的主码纳入弱实体中,作为弱实体的主码或主码中的一部分

在现实世界中,常常有某些实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体的存在为前提。通常把前者称为弱实体。

在E-R图中,用双线框表示弱实体,用指向弱实体的箭头表明依赖联系。

例如,如图所示的E-R图可转换为如下关系模式:

例如,如图所示的E-R图可转换为如下关系模式:

image-20220402234725473

关系模式:

职工(工号,姓名,年龄,性别,职称)

亲属(工号,亲戚姓名,亲戚关系)

超类和子类的转换

概括定义了类型之间的一种子集联系。

例如:学生是一个实体型,本科生、研究生也是实体型。本科生、研究生均是学生的子集。把学生称为超类,本科生、研究生称为学生的子类。

在E-R图中,用双竖边的矩形框表示子类,用直线加小圆圈表示超类-子类联系。子类继承超类上定义的全部属性,其本身还可包含其他属性。

例如,如图所示的E-R图中各个实体的属性为:

职员:职工号,姓名,性别,年龄,参加工作时间

飞行员:飞行小时,健康检查,飞机型号

机械师:学历,级别,专业职称

管理员:职务,职称

image-20220403003944126

改E-R图转换为关系模式为:

职员(职工号,姓名,性别,年龄,参加工作时间)

飞行员(职工号,飞行小时,健康检查,飞机型号)

机械师(职工号,学历,级别,专业职称)

管理员(职工号,职务,职称)

为了查询方便,可这超类实体中增加一个指示器属性,根据指示器的值直接查询子类实体表。所以,职员关系又可以为:

职员(职工号,姓名,性别,年龄,参加工作时间,职员类型)

两实体间的m:n联系

必须对“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的“主码”,如果联系用属性,也要纳入这个关系中。

image-20220403005852279

关系模式:

学生(学号,姓名,性别,年龄)

课程(课程号,课程名,学时)

选修(学号,课程号,成绩)

同一实体间的m:n联系

必须为这个“联系”单独建立一个关系,该关系中至少包含被它所联系的双方实体的“主码”,如果联系用属性,也要纳入这个关系中,由于这个“联系”只涉及一个实体,所以加入的实体的主码不能同名。

image-20220403010218761

关系模式:

零部件(代号,名称,价格)

组装(代号,组装件代号,数量)

两个以上实体间的m:n联系

必须为这个“联系”单独建立一个关系,该关系中至少包含被它所联系的各个实体的“主码”,若是联系有属性,也要纳入这个关系中

image-20220403010539731

关系模式:

供应商(供应商号,供应商名,地址)

零件(零件号,零件名,重量)

项目(项目编号,项目名称,开工日期)

供应(供应商号,项目编号,零件号,零件数)

关系模式优化

最核心的就是要遵循数据库设计的NF范式

应用关系规范化理论对上述产生的关系模式进行优化,具体步骤如下:

  1. 确定每个关系模式内部各个属性之间的数据依赖以及不同关系模式属性之间的数据依赖
  2. 对各个关系模式之间的数据依赖进行最小化处理,消除冗余的联系
  3. 确定各关系模式的范式等级
  4. 按照需求分析阶段得到的处理要求,确定要对哪些模式进行合并或分解
  5. 为了提高数据操作的效率和存储空间的利用率,对上述产生的关系模式进行适当的修改、调整和重构

设计用户子模式

全局关系模型设计完成后,还应根据局部应用的需求,结合具体DBMS的特点,设计用户的子模式

设计子模式时应注意考虑用户的习惯和方便性,主要包括:

  1. 使用更符合用户习惯的别名
  2. 可以为不同级别的用户定义不同的视图,以保证系统的安全性
  3. 可将经常使用的复杂的查询定义为视图,简化用户对系统的使用

物理结构设计-步骤四

数据库的物理设计是指对一个给定的逻辑数据库模型选取一个最适合应用环境的物理结构的过程。物理设计通常分为两步:

第一步 确定数据库的物理结构

  1. 确定数据的存取方法、索引方法的选择、聚簇方法的选择
  2. 确定数据的存储结构

确定数据的存放位置 基本原则:根据应用情况将易变部分与稳定部分分开存放、存取频率较高部分与存取频率较低部分分开存放

确定系统配置

DBMS产品一般都提供了一些存储分配参数

同时使用数据库的用户数

同时打开的数据库对象数

内存分配参数

使用的缓冲区长度、个数

存储分配参数

第二步 物理结构进行评价

对时间效率、空间效率、维护开销和各种用户要求进行权衡,从多种设计方案中选择一个较优的方案。

评价方法(完全依赖于所选用的DBMS)

定量估算各种方案

存储空间

存取时间

维护代价

对估算结果进行权衡、比较,选择出一个较优的合理的物理结构

如果该结构不符合用户需求,则需要修改设计

数据库实施-步骤五

实施阶段的工作主要有:

  1. 建立数据库结构

  2. 数据载入

    数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。

  3. 应用程序的编码和调试

  4. 数据库试运行

    1. 功能测试

      实际运行数据库应用程序,执行对数据库的各种操作,测试应用程序的功能是否满足设计要求如果不满足,对应用程序部分则要修改、调整,直到达到设计要求。

    2. 性能测试

      测量系统的性能指标,分析是否达到设计目标。

      如果测试的结果与设计目标不符,则要返回物理设计阶段,重新调整物理结构,修改系统参数,某些情况下甚至要返回逻辑设计阶段,修改逻辑结构。

数据库运行维护-步骤六

数据库系统投入正式运行后,对数据库经常性的维护工作主要由DBA完成,包括:

  1. 数据库的转储和恢复

    这数据库试运行阶段,系统还不稳定,硬、软件故障随时都可能发生。

    系统的操作人员对新系统还不熟悉,误操作也不可避免因此必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏。

  2. 数据库的安全性、完整性控制

  3. 数据库性能的监督、分析和改造

  4. 数据库的重组与重构

    重组的目标:提高系统性能

    重组的工作:按原设计要求、重新安排存储位置、回收垃圾、减少指针链、数据库的重组不会改变原设计的数据逻辑结构和物理结构

    数据库重构:根据新环境调整数据库的模式和内模式、增加新的数据项、改变数据项的类型、改变数据库的容量、增加或删除索引修改完整性约束条件


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

相关文章

学生成绩管理系统数据库设计--MySQLSQL Server

MySQL 数据库设计-学生成绩管理系统 设计大纲友情链接 1、医疗信息管理系统数据库–MySQL2、邮件管理数据库设计–MySQL3、点餐系统数据库设计–SQL Server4、商品管理系统数据库设计–SQL Server5、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Ma…

数据库设计-网上书店系统

一、需求分析 1.1 用户分析 网上书店系统的使用者主要有三种:普通用户、会员和管理员。 普通用户:浏览图书、查询图书、注册成为会员等; 会员:浏览图书、查询图书、加入购物车、修改购物车、订购图书、生成及查看订单、查看修改…

数据库设计

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

机器学习之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…