第3章 数据库结构设计

2023-11-09

3.1数据库概念设计 
数据库概念设计主要解决数据需求,即如何准确地理解数据需求,真实地把应用领域中要处理的数据组织、定义描述清楚,以支持数据库设计后续阶段的工作。 
3.1.1概念设计的任务 
数据库概念设计阶段的目标是: 
(1)定义和描述应用领域涉及的数据范围。
(2)获取应用领域或问题域的信息模型。
(3)描述清楚数据的属性特征。
(4)描述清楚数据之间的关系。
(5)定义和描述数据的约束。
(6)说明数据的安全性要求。
(7)支持用户的各种数据处理需求。
(8)保证信息模型方便地转换成数据库的逻辑结构(数据库模式),同时也便于为用户理解。
3.1.2概念设计的依据及过程
1.概念设计的依据
数据库概念设计的依据是需求分析阶段的文档,包括需求说明书、功能模型(数据流程图或 IDEFO图)以及在需求分析阶段收集到的应用领域或问题域中的各类报表等。信息模型和数据库概念设计说明书是数据库逻辑设计的依据,也是数据库用户确认数据需求的依据。 
2.概念设计的过程
(1)明确建模目标。
(2)定义实体集。
(3)定义联系。
(4)建立信息模型。
(5)确定实体集属性。
(6)对信息模型进行集成与优化。
3.1.3数据建模方法
实体联系 ER 模型用简单的图形直观地抽象出现实世界中客观对象的属性特征及其关系,这使得面向现实世界概念设计阶段的工作变得相对容易。其他的数据建模方法如 IDEF1X、UML 中的类图等。这些数据建模方法的共同特点是: 
(1)能够真实客观地描述现实世界中的数据及数据之间的关系。
(2)组成模型的概念少,语义清楚,容易理解。
(3)不同概念的语义不重叠,概念无多义性。
(4)用图形方式描述数据,数据直观易懂,有利于数据库设计者和用户交流。
(5)这种数据模型容易转换成数据库逻辑设计阶段需要的数据结构。
1.ER 建模方法
实体联系(ER)方法面向数据存储需求建模,将现实世界中需要处理的数据抽象组织成某种信息结构。这种结构不依赖于具体的计算机系统,仅从存储需求描述数据的属性特征及数据之间的关系。与 ER 模型有关的几个概念。 
(1) 实体或实例:实体指客观存在并可相互区分的事物(也称为实体集实例或实例)。
(2) 实体集:实体集表示一个现实的和抽象事物的集合,这些事物必须具有相同的属性或特征。
(3) 属性:属性用于描述一个实体集的性质和特征。每个属性的取值范围称为域。
(4) 码:实体集中能唯一标识每一个实例的属性或属性组称为该实体集的码。
(5) 联系:联系描述现实世界中实物之间的关系。
现实世界事物之间的联系可归纳为 3 类:
①一对一联系(1:1)。若对于实体集 A 中的每一个实例,实体集 B 中至多有一个实例与之联系,反之亦然,则称实体集 A 和实体集 B 具有 1:1 联系。 
②一对多联系(1:n)。若对于实体集 A 中的每一个实例,实体集 B 中有 n 个实例(n≥0)与之联系,而对于实体集 B 中的每个实例,实体集 A 中至多有一个实例与之联系,则称实体集 A 与实体集 B 存在 1:n的联系。 
③多对多联系(m:n)。若对于实体集 A 中的每一个实例,实体集 B 中有 n 个实例(n≥0)与之联系,而对于实体集 B 中的每个实例,实体集 A 中有 m 个实例(m≥0)与之联系,则称实体集 A 与实体集 B 存在m:n 的联系。 
ER 方法中用矩形框表示实体集,矩形框内写上实体集的名称;用菱形框表示联系,联系名写在菱形框内;实体集的属性用椭圆或圆角矩形框表示,属性的名字写在椭圆或圆角矩形框内。 


2.IDEF1X 建模方法
IDEF1X 侧重分析、抽象和概括应用领域中的数据需求,被称为数据建模方法。IDEHX 模型有如下建模元素: 
(1)实体集:如果一个实体集的每个实例都能被唯一地标识而不决定于它与其他实体集的联系那么该实体集就是独立标识符实体集或简称为独立实体集;如果实体集的一个实例的唯一依赖于该实体集与其他实体集的联系,那么它就是从属标识符实体集或简称为从属实体集。IDEF1X 用矩形框来表示独立实体集,用加了圆角的矩形框来表示从属实体集。独立实体集与从属实体集语法如图 3.4 所示。

 IDEF1X 中,每一个实体集定义有一个唯一的名字和编码,名字和编码之间用斜杠(/)分开。写在矩形框的上方,编码应该是正整数。实体集的名字用名词或名词短语命名,这个名词或司短语描述了实体集所表示的一类事物的集合。一个实体集中的属性要有唯一的名字,属性名一般用名词或名词短语来表示。通常,主码属性名后加“(PK)”标注,被列在属性列表的顶端,I 嗖属性列在下面,并且用水平线把主码与其他属性分开。一个实体集可以有任意多个属性,一个属性只能归属于一个实体集。 
(2)联系。
一个“确定型连接联系”或简称“连接联系”(还可称为“父子联系”或“依存联系”),是实体集之间的一种连接或关系。在这种连接联系中,被称为双亲实体集的每一个实例与子女实体集的 0 个、1 个或多个实例相连接。子女实体集中的每个实例精确地同双亲实体集的 1 个实例相联系。 
①标定型联系。在“确定型连接联系”中,如果子女实体集中的每个实例都是由它与双亲的联系而确
定的,那么这个联系就被称为是“标定型联系”。在标定型联系中子女实体集总是从属实体集,标定型联系用一条实线或线段把它们连接起来,1(父)端是线段的原点,n(子女)端是线段的终点,并用一个实心圆点表示其联系的基数是 n0。 
②非标定型联系。在“确定型连接联系”中,如果子女实体集中的每一个实例都能被唯一地确认而无
须了解与之相联系的双亲实体集的实例,则该联系就被称为“非标定型联系”。非标定型联系用一条虚线把它们连接起来,1(父)端是线段的原点,n(子女)端是线段的终点,用一个实心圆点表示联系的基数是 n0。 
③分类联系。“分类联系”是两个或多个实体集之间的联系,且在这些实体集中存在一个一般实体集,它的每一个实例都恰好与一个且仅一个分类实体集的一个实例相联系。一般实体集的每一个实例和与之相关的一个分类实体集实例描述的是现实世界的同一事物,因此它们具有相同的唯一标识符。 
④非确定联系。一个非确定联系又称为“多对多关系”或 m:n 联系。在这种联系关联的两个实体集
之间,任一实体集的一个实例都将对应另一实体集的 0 个、1 个或多个实例。 
3.1.4概念设计实例 
3.2数据库逻辑设计 
3.2.1概述 
数据库逻辑设计的任务是把数据库概念设计的结果(ER 模型),转换为具体的数据库管理系统支持的数据模型。数据库逻辑设计是面向机器世界的,这个阶段将按照具体数据库管理系统支持的数据模型来组织和存储数据,包括定义和描述数据库的全局逻辑结构、数据之间的关系、数据的完整性及安全性要求等。 
3.2.2逻辑设计实例 
1.将 ER 图转换成关系模式,一般包含两个步骤
(1)第一个步骤是标识 ER 模型中的联系;
(2)第二个步骤是依次转换与每个联系相关联的实体集及联系。
2.命名确认
根据项目选定的数据库管理系统支持的命名规则,检查确认关系名和属性名是否符合统一命名规则。 
3.优化关系模式
应用规范化理论逐一检查每一个关系模式,使之满足 3NF

3.3数据库物理设计 
3.3.1物理设计概述 
数据库物理设计的目的是将数据的逻辑描述转换为实现技术规范,其目标是设计数据存储方案,以便提供足够好的性能并确保数据库数据的完整性、安全性和可恢复性。 
3.3.2数据库的物理结构 
数据库中的应用数据是以文件形式存储在外设存储介质(如磁盘)上的,文件在逻辑上被组织成记录的序列,也就是说,每个 DB 文件可以看作是逻辑记录的集合。 
从数据库物理结构角度需要解决如下几个问题: 
(1)文件的组织。
(2)文件的结构。
(3)文件的存取。
(4)索引技术。
3.3.3索引
1.索引技术
索引的概念类似于图书中使用的术语“索引”。索引技术(Indexing)是一种快速数据访问技术,它将
一个文件的每个记录在某个或某些域上的取值与该记录的物理地址直接联系起来,提供一种根据记录域的取值快速访问文件记录的机制,索引技术关键是建立记录域取值到记录的物理地址间的映射关系(这种映射关系称为索引(Index))。 
2.索引技术分类
根据索引的实现方式,索引技术被分成两大类:有序索引和散列索引。 
(1)有序索引(Ordered Index)技术,也称为索引文件机制。有序索引技术利用索引文件实现记录域取值到记录物理地址间的映射关系。这里的记录域就是查找码。索引文件由索引记录组成,每个记录中记载着一个索引项,索引项记录了某个特定的查找码值和具有该值的数据文件记录的物理地址。查找码也称为排序域。查找码可以是数据文件的主码或主属性,也可以是非主属性。 
(2)散列技术,也称为哈希(Hash)索引机制。散列技术利用一个散列函数实现记录域取值到记录物理地址间的直接映射关系。这里的记录域就是查找码,也称为散列函数的散列域或排序域。对于存储有关系表数据的数据库文件,该文件的查找码可以是关系表的主码或候选码,也可以是关系表的其他非主属性。 
3.有序索引
有序索引作为基于索引文件的索引技术,需要考虑的两个关键问题是:
(1)如何组织索引文件中的索引记录;
(2)如何从索引文件出发,访问数据文件中的数据记录。
当需要采用有序索引机制快速访问一个数据文件时,首先要为该数据文件建立一个索引文件,索引文件是索引记录或索引项的集合。索引文件根据某个特定的查找码值的升序或降序存储索引记录,并且也组织为顺序文件。 有序索引有多种多样的形式,根据索引(文件)本身的性质介绍几类主要的有序索引及其特点。 
①聚集索引和非聚集索引
一个数据文件上可以建立多个索引文件,数据文件和每个索引文件都根据各自查找码有序地组织为顺序文件。 对数据文件和它的一个特定的索引文件,如果数据文件中数据记录的排列顺序与索引文件中索引项的排列顺序相一致,或者说索引文件按照其查找码指定的顺序与数据文件中数据记录的排列顺序相一致,则称该索引文件为聚集索引;否则,称该索引文件为非聚鍵引。 
②稠密索引和稀疏索引
如果数据文件中的每个查找码值在索引文件中都对应一个索引记录,则该索引称为稠密索引。如果只是一部分查找码的值有对应的索引记录,则该索引称为稀疏索引。 
③主索引和辅索引
在数据文件的主码属性集上建立的索引称为主索引。在数据文件的非主属性上建立的索引称为辅索引。 在实际的关系数据库系统中,数据库管理系统通常按照主码值的顺序将元组有序存储在数据文件中,并且以主码作为查找码建立索引文件。该索引文件既是主索引,也是聚集索引。 
④唯一索引
唯一索引可以确保索引列不包含重复的值。在多列唯一索引的精况下,可以确保索引列中每个值的组合都是唯一的。 
⑤单层索引和多层索引
单层索引也称为线性索引,其特点是索引项根据键值在索引名件中顺序排列,组织成一维线性结构,每个索引项直接指向数据文件中的数据记录。 当数据文件很大时,即使采用稀疏索引,建成的索引文件也会很大,只能以顺序文件形式存|放在磁盘上。如果需要读取某个索引项,必须读取磁盘块,导致对索引文件本身的访问效率非常低。 为解决索引文件本身的访问效率非常低的问题,可以对索引文件中的索引项本身再建立一级稀疏索引,组成二层索引结构,用于快速查找索引项。可以建立多层树型索引结构来快速定位大数据量文件中的数据记录。多层索引的典型例子是数据库系统中广泛应用的 B 树和 B+树索引。 
3.3.4数据库物理设计 
1.物理设计内容
数据库物理结构设计是在具体的硬件环境、操作系统和 DBMS 约束下,根据数据库逻辑设计嫛吴设计合适的数据库物理结构。其目标是得到存储空间占用少、数据访问效率高和维护代价低的数据库物理模式。 
数据库物理设计主要包括以下环节,每个环节包含若干设计内容。 
(1)数据库逻辑模式描述。
(2)文件组织与存取设计。
(3)数据分布设计。
(4)确定系统配置。
(5)物理模式评估。
2.数据库逻辑模式描述
数据库逻辑设计产生了数据库的逻辑结构,其中有数据库的关系模式、关系模式上的完整性约束和面向具体应用的业务规则。数据库逻辑模式描述主要包括以下设计内容。 
(1)面向目标数据库描述基本表和视图。
(2)设计基本表业务规则。
3.DB 文件组织与存取设计
一个好的数据库物理模式应当满足存储空间占用少、数据访问效率高和维护代价低的要求,为了进行有效的数据库文件组织和存取路径设计,必须分析和理解数据库事务的数据访问特性。事务分析可以按照如下步骤进行: 
(1)使用事务-基本表交叉引用矩阵,分析系统内(部分重要的)数据库事务对各个基本表的访问情况,确定事务访问了哪些基本表,对这些基本表执行了何种操作,并进一步分析各操作涉及的基本表属性。 
(2)估计各事务的执行频率,即单位时间内事务的执行次数。在此基础上分析事务中的每访问操作对各个基本表中的相关属性的操作频率。 
(3)对每张基本表,汇总所有作用于该表上的各事务的操作频率信息,得到如下数据访问估洸该表是否被频繁访问,该表中哪些属性列的访问频率较高和作用于这些属性上的操作类查询条件类型(等值查询、范围查询)。 
(4)根据事务数据访问特性分析结果,可以对基本表设计成更为有效的文件组织和索引方式。
每种 DBMS 平台都提供一种或若干种数据库文件结构(如堆文件、顺序文件、聚集文件、索引文件和散列文件)。数据库物理结构设计者应当了解目标 DBMS 提供的各种数据库物理结构机 S.弓据应用系统实际情况,为数据库和基本表选择合适的文件结构。 
下面给出一些为基本表选择合适的文件结构的原则: 


对数据库中的基本表等数据库对象选择了合适的文件结构后还需要为其设计存取路径,设计内容包括:
为数据库文件设计合理的物理存储位置和为基本表设计索引。 
索引加快了数据查询速度,却减慢了数据更新速度。索引本身还会占用一定的存储空间。因此,必须权衡考虑索引的优点和索引的维护代价。可根据下述原则决定是否为一个基本表建立索引: 
(1)对于经常需要进行查询、连接、统计操作,且数据量大的基本表可考虑建立索引;而对于经常执行插人、删除、更新操作或小数据量的基本表应尽量避免建立索引。 
(2)一个基本表上除了可以建立一个聚集索引外,还可以建立多个非聚集索引。索引越多,对表内数据更新时为维护索引所需的开销就越大。对于一个更新频繁的表应少建或不建索引。 
(3)索引可以由用户根据需要随时创建或删除,以提高数据查询性能。
对于基本表,可考虑在下面一些属性上建立索引:
(1)表的主码。(大部分关系数据库管理系统会自动为主码建立唯一索引)
(2)在 WHERE 查询子句中引用率较高的属性。
(3)参与连接操作的属性。
(4)在 Order By 子句、Group By 子句中出现的属性。
(5)在某一范围内频繁搜索的属性,但只有当使用索引的查询其结果不超过记录总数的 20%时索引才会有明显的效果。 
(6)如果在 WHERE 子句中同时包含一个表中的多个属性,则可以考虑在这些属性上建立多属性索引。 此外,如果数据库文件需要频繁执行精确匹配查询(如等值查询),则可考虑建立散列索引。而 B+树等有序索引更适合于范围查询。 
(7)当一个属性有相对较多的不同值时,使用索引有明显的作用;当一个属性的不同值很少使用索引没有好处。 
(8)对包含大量空值的属性建立索引时要仔细考虑,因为很多数据库管理系统中的索引不引用具有空值的行,对空值的查找需要使用全表扫描来实现。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第3章 数据库结构设计 的相关文章

  • Vue实现Alert插件

    实现alert插件 在Vue中我们可以使用 Vue component tagName options 进行全局注册 也可以是在组件内部使用 components 选项进行局部组件的注册 全局组件是挂载在 Vue options compo

随机推荐

  • python的with关键字

    前言 with表达式其实是try finally的简写形式 但是又不是全相同 格式 格式 with context as var pass 其中的context是一个表达式 返回的是一个对象 var用来保存context表达式返回的对象 可
  • git pull: Please commit your changes or stash them before you merge

    参考 Git冲突 commit your changes or stash them before you can merge 总结 如果git pull 报错 Please commit your changes or stash the
  • Hyperledger Fabric能否大规模运行?

    我很高兴回答这个问题 简短的回答是 是的 确实如此 我的疑问 我对大规模Hyperledger Fabric Fabric 的性能提出了很多疑问 很多时候 人们已经完成了一些 或阅读 听说过 性能测试 比如在他们的笔记本电脑或早期版本的Fa
  • Android 使用 Jenkins 实现自动化打包【流程】&【踩坑】

    引言 每个Android开发应该都有经历过正在码代码的时候突然被打断要求打个啥啥环境啥啥配置的安装包 然后就得暂存代码 切换分支 更改配置 等待build balabala 往大了说就是浪费时间消耗员工价值对公司的不负责 胡扯 往小了说就是
  • 在复苏与重塑之路上,同程旅行为旅游业价值回归交出答卷

    若论对疫情感受最深刻的行业 旅游业必然榜上有名 也许这个产业链上的每个玩家在这两年都思考过这样两个问题 客观上 旅游业恢复的基础条件有哪些 主观上 又该用什么措施 什么方法应对现在的局面 尽管疫情影响仍未消散 但11月以来 从防疫新提法到文
  • PostgreSQL pg中的截取补齐lpad函数怎么用?

    PostgreSQL pg中的截取补齐lpad函数怎么用 1 左边填充 右边截取 PostgreSQL中的lpad 函数有两个功能 如果长度不够指定的长度 就在左边填充字符串 如果长度超出了指定的长度 就把右边截掉 The PostgreS
  • 使用matplotlib绘制饼图

    根据消费类别 如外卖 零食 衣服 娱乐等 使用matplotlib绘制本月的消费支出饼图 以代码插入方式提交源代码 并以图像文件提交运行截图 python代码 import matplotlib pyplot as plt from pyl
  • 60分钟学pytorch

    本文会持续更新 直至完成pytorch中的60分入门文档部分 目前为tensor的基础操作部分 本文代码github https github com amazingzby pytorch tutorial pytorch官方文档给初学者提
  • ui(new Ui::MainWindow)

    用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能 pro文件是供qmake使用的文件 不是本文的重点 不过其实也很简单的 在此不多赘述 所以呢 还是从main开始 include
  • Java基础-学习笔记(一)

    1 IT业务的发展变化 1 大型机 一代 IBM 2 PC Mac 二代 微软 苹果 3 互联网 三代 Google Baidu 4 移动互联网 谷歌 微软 苹果 所谓 移动互联网 移动通信 互联网 马云所属 IT到DT的变化 注 推荐本书
  • MATLAB的曲线拟合

    原文地址 MATLAB的曲线拟合 作者 睿吉jerry MATLAB软件提供了基本的曲线拟合函数的命令 曲线拟合就是计算出两组数据之间的一种函数关系 由此可描绘其变化曲线及估计非采集数据对应的变量信息 1 线性拟合函数 regress 调用
  • 智能合约简介

    链客 专为开发者而生 有问必答 此文章来自区块链技术社区 未经允许拒绝转载 当人们在讨论智能合约的时候他们到底在说什么 在区块链和加密货币的语境中 智能合约的定义是 在分布式存储平台 例如区块链 上存储并复制的 在计算机网络 通常是运行区块
  • 【qiankun】子应用的路由信息传给主应用,主应用使用this.$router.push跳转子应用页面

    前提 已经安装qiankun 并且子应用已经接入主应用 场景 主应用是vue2 子应用是vue3 子应用的路由文件router index ts 在这段后面加下列代码 const router createRouter history cr
  • VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录的解决方法

    VMware Workstation 无法连接到虚拟机 请确保您有权运行该程序 访问该程序使用的所有目录以及访问所有临时文件目录 这个问题刚刚用虚拟机的人可能会经常遇到 解决方法就是 在开始中搜索服务 点击服务正在本电脑运行 注意 这里演示
  • CloudCompare 二次开发(5)——非插件中的PCL环境配置(均匀采样为例)

    目录 一 概述 二 CMakeLists txt 三 源码编译 四 代码示例 五 结果展示 本文由CSDN点云侠原创 原文链接 爬虫网站自重 一 概述 在进行CloudCompare二次开发的时候 可以直接在CloudCompare的核心功
  • 推动政府数字化转型进入新阶段

    推动政府数字化转型进入新阶段 公司近两年比较关注数字化转型和金融科技 打算今年重点了解一下 在网上看到了一个文章 感觉还不错 转载到这里 本文转自人民政协网上的 推动政府数字化转型进入新阶段 1 国家政策 国务院近日发布的 十四五 数字经济
  • 智慧城市智慧零售受益于5G和AI双核驱动

    支付宝推出了刷脸支付 我们只需要对准摄像头让它把我们脸部的特征完全识别出来 然后就可以进行支付了 那么这种人脸支付会用在很多地方 很简单 我们去超市购物的时候 以往你要么用卡要么给现金 或者你掏出手机来支付 但是怎么也得输入密码或者按指纹
  • MySQL自增主键详解

    一 自增值保存在哪儿 不同的引擎对于自增值的保存策略不同 1 MyISAM引擎的自增值保存在数据文件中 2 InnoDB引擎的自增值 在MySQL5 7及之前的版本 自增值保存在内存里 并没有持久化 每次重启后 第一次打开表的时候 都会去找
  • chrome浏览器:您的连接不是私密连接,burp抓包

    问题 您的连接不是私密连接 处理 简简单单 跟着我来没错 不要浪费时间再找了 插件设置 SwitchyOmega 开启代理访问http burp CA下载证书 chrome flags Allow invalid certificates
  • 第3章 数据库结构设计

    3 1数据库概念设计 数据库概念设计主要解决数据需求 即如何准确地理解数据需求 真实地把应用领域中要处理的数据组织 定义描述清楚 以支持数据库设计后续阶段的工作 3 1 1概念设计的任务 数据库概念设计阶段的目标是 1 定义和描述应用领域涉