首页 > 其他分享 >7.4精读笔记

7.4精读笔记

时间:2023-05-31 15:48:13浏览次数:30  
标签:关系 精读 转换 联系 实体 笔记 模式 7.4 属性

逻辑结构设计

概念结构是独立于任何一种数据模型的信息结构,逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

7.4.1 E-R图向关系模型的转换

E-R图向关系模型的转换要解决的问题是,如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体型、实体的属性和实体型之间的联系三个要素组成的,所以将E-R图转换为关系模型实际上就是要将实体型、实体的属性和实体型之间的联系转换为关系模式。下面介绍转换的一般原则。一个实体型转换为一个关系模式,关系的属性就是实体的属性,关系的码就是实体的码。
对于实体型间的联系有以下不同的情况:
(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
(3)一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
(4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。
(5)具有相同码的关系模式可合并。

7.4.2 数据模型的优化

数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。关系数据模型的优化通常以规范化理论为指导,方法为:
(1)确定数据依赖。在7.2.3“数据字典”一节中已讲到用数据依赖的概念分析和表示数据项之间的联系,写出每个数据项之间的数据依赖。按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间的数据依赖。
(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
(3)按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。
(4)根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。
(5)对关系模式进行必要分解,提高数据操作效率和存储空间利用率。常用的两种分解方法是水平分解和垂直分解。水平分解是把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系,以提高系统的效率。垂直分解是把关系模式R的属性分解为若干子集合,形成若干子关系模式。垂直分解的原则是,将经常在一起使用的属性从R中分解出来形成一个子关系模式。
规范化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用来预测模式可能出现的问题,使数据库设计工作有了严格的理论基础。

7.4.3 设计用户子模式

将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体关系数据库管理系统的特点设计用户的外模式。
目前关系数据库管理系统一般都提供了视图概念,可以利用这一功能设计更符合局部用户需要的用户外模式。
定义数据库全局模式主要是从系统的时间效率、空间效率、易维护等角度出发。由于用户外模式与模式是相对独立的,因此在定义用户外模式时可以注重考虑用户的习惯与方便。具体包括以下几方面:

(1)使用更符合用户习惯的别名。在合并各分E-R图时曾做过消除命名冲突的工作,以使数据库系统中同一关系和属性具有唯一的名字。这在设计数据库整体结构时是非常必要的。用视图机制可以在设计用户视图时重新定义某些属性名,使其与用户习惯一致,以方便使用。
(2)可以对不同级别的用户定义不同的视图,以保证系统的安全性。
(3)简化用户对系统的使用。如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图,用户每次只对定义好的视图进行查询,大大简化了用户的使用。

标签:关系,精读,转换,联系,实体,笔记,模式,7.4,属性
From: https://www.cnblogs.com/charliecza/p/17446280.html

相关文章

  • 精读7.35读书笔记
    概念结构设计概念结构设计的第一步就是对需求分析阶段收集到的数据进行分类、组织,确定实体、实体的属性、实体之间的联系类型,形成E-R图。首先,如何确定实体和属性这个看似简单的问题常常会困扰设计人员,因为实体与属性之间并没有形式上可以截然划分的界限。实体与属性的划分原则......
  • 《重构》1-6章读书笔记
    《重构》1-6章读书笔记重构的定义所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构是一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减小整理过程中引入错误的概率。本质上说,重构就是在代码写好之后改进它......
  • pytorch笔记
     @,torch.matmul,torch.mm:矩阵相乘,第一个矩阵的列和第二个矩阵的行维度相同      *,torch.mul:矩阵对应元素相乘,所以两个矩阵维数相同,同维矩阵torch.dot:一维的张量进行相乘再相加,结果是一个值 ......
  • solidworks笔记20230531
    CreatingaNewPipeorTubePart帮助里面规定的属性如下:$PRP@PipeIdentifier$PRP@SpecificationOuterDiameter@PipeSketchInnerDiameter@PipeSketchNominalDiameter@FilterSketch$PRP@PipeIdentifier$PRP@Specification......
  • git学习笔记——无法将本地仓库与远程仓库合并
    我本地的仓库是通过gitinit创建的,而远程仓库是直接在gitee创建的,所以这两个仓库是不同的仓库所以当push本地仓库到远程仓库的时候会失败。解决方法:#通过在后面添加以下内容即可忽略这个问题--allow-unrelated-histories#例如:gitpulloriginmaster--allow-unrelated-his......
  • Linux学习笔记
    一、有哪些查看日志的命令?tail:用于查看最后几行文件的内容,常用于查看日志文件的尾部新添加的内容。例如:tail-f/var/log/system.log会实时输出system.log文件的末尾。less:用于查看大型文本文件的内容,可以按页或行进行查看,支持上下翻页、搜索等功能。例如:less/var/log/sys......
  • 课堂笔记记录
    课堂笔记记录......
  • NeoVim 学习笔记
    NeoVim学习笔记这篇学习笔记将用于记录本人在学习使用NeoVim编辑器过程中所编写的学习心得与代码。该笔记将会存放在https://github.com/owlman/study_note项目的SoftwareTool/DevelopmentTool目录下,并予以长期维护。学习规划学习基础:掌握Linuxshell命令的基本使用。......
  • 《用户故事与敏捷方法》阅读笔记3
    第十六章:敏捷方法的度量和指标本章讨论了敏捷开发中用于度量和跟踪进展的指标。作者指出,度量和指标对于追踪项目进展、监测项目健康状况以及预测项目完成时间等方面都非常重要。本章列举了许多有效的度量工具和指标,如增量发布、代码质量、回归测试等等。第十七章:敏捷项目管理敏捷......
  • sql注入学习笔记
    sql注入基础的sql语句注入1'or'1'='1'# #or语句1'orderby3# #order语句1'unionselect1,2,3# #联合查询1'and(selectextractvalue(1,concat('~',(selectdatabase())))) #报错注入1'andif(length(database())>1,sleep......