数据库原理(十 二)- 逻辑结构设计

article/2025/5/18 1:17:51

数据库原理(十 二)- 逻辑结构设计

      • 前言
      • E-R图向关系模型的转换
      • 数据模型的优化
      • 设计用户子模式

前言

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

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

E-R图向关系模型的转换要解决的问题:

  • 如何将实体型和实体间的联系转换为关系模式
  • 如何确定这些关系模式的属性和码

转换的一般规则:

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

不同联系的转换规则:

  • 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
  • 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
  • 一个m:n联系可以转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转为关系的属性,各实体的码组成关系的码或关系码的一部分
  • 多元联系转换为一个关系模式,与该多元联系相连的各实体的码以及联系本身的属性均转为关系的属性,各实体的码组成关系的码或关系码的一部分
  • 具有相同码的关系模式可以合并

上面的几条转换规则不知道你们看不看得懂,如果看不懂用下面的例子说明

1:1联系,如下图中
在这里插入图片描述
一共有两个关系实体,我们可以转化为两个关系模式,分别是顾客和会员卡,按照转换规则,我们选择任意一端合并,并将一端的主码添加为合并端关系模式的外码

顾客(姓名,性别,年龄)
会员卡(卡号,消费金额,积分,顾客姓名)

1:n联系和m:n联系,如下图:
在这里插入图片描述
1:n联系中,可以看到有班级和学生两个实体,按照转换规则,选择n端合并,1端的主码添加到n端的关系模式做外码

班级(班级号,班级名,辅导员)
学生(学号,姓名,性别,年龄,班级号)

m:n联系中,可以看到有学生和课程两个实体,以及一个选修联系实体,按照转换规则,学生和课程两个实体的码和属性不变,将各自的主码添加进选修联系实体中做主码和外码

学生(学号,姓名,性别,年龄,班级号)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)

如果m:n联系中,没有联系的属性,那么就合并n端,m端的主码作n端的外码,在关系模式中主码用下划线标识外码用波浪线标识

数据模型的优化

数据逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。关系数据模型的优化通常以规范化理论为指导,方法为:

  1. 确定数据依赖
  2. 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
  3. 按照数据依赖的理论对关系模式逐一分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式属于第几范式
  4. 根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解
  5. 对关系模式进行必要分解,提高数据操作效率和存储空间利用率

设计用户子模式

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

  1. 使用更符合用户习惯的别名
  2. 可以对不同级别的用户定义不同的视图
  3. 简化用户对系统的使用

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

相关文章

数据库逻辑设计

数据库设计 数据库设计包含需求设计、逻辑设计、物理设计和维护优化。 - 需求分析:全面了解产品设计的存储需求(存储需求,数据处理需求,数据的安全性和完整性) - 逻辑设计:设计数据的逻辑存储结构&#…

备战数学建模24-灰色关联分析2

目录 一、灰色关联分析 1-基本概念及步骤 2-经典案例及MATLAB编程实现 一、灰色关联分析 1-基本概念及步骤 灰色关系分析:就是计算某一个待比较的数列和参照数列的关联程度,关联程度越高,说明待比较数列越接近关联数列,则待比…

灰色关联分析法——系统分析或综合评价模型

Q1:什么是系统分析? 比方说在社会系统、经济系统、农业系统、教育系统中,每个系统都含有许多种因素,而这多种因素共同作用的结果决定了该系统的发展态势,我们常常希望知道在这众多因素中,哪些因素对系统发展…

数学建模笔记——评价类模型之灰色关联分析

这一篇就简单介绍一下灰色关联分析吧。灰色关联分析主要有两个作用,一是进行系统分析,判断影响系统发展的因素的重要性。第二个作用就是用于综合评价问题,给出研究对象或者方案的优劣排名。 不过这里我只能简单介绍一下,更加深入…

数学建模------综合评价模型之灰色关联分析

前言 提起综合评价模型,大家可能会比较熟悉层次分析法,但是层次分型法的主观性太强,有时构造的矩阵并不能通过一致性检验,所以了解一些其他的综合评价模型也是十分重要的。比较常用的综合评价模型有TOPSIS法,熵值法&a…

灰色关联分析及MATLAB实现

目录 一、灰色关联分析概述 灰色关联分析的基本思想: 二、灰色关联分析应用实例 举例一: 1. 确定分析数列 2. 对变量进行预处理 3. 计算子序列中各个指标与母序列的关联系数 三、 MATLAB实现 一、灰色关联分析概述 当一个系统是由多种因素共同作用时…

【数学建模】灰色关联分析 + Matlab代码实现

文章目录 一、学习内容:二、学习时间:三、学习产出:3.1 灰色关联分析基本思想3.2 运用灰色关联分析的基本步骤3.3 灰色关联分析代码实现(Matlab)3.3.1 应用一:分析产业对GDP的影响程度3.3.2 应用二:灰色关联分析评价河…

【数模】灰色关联分析与预测模型

文章目录 前言一、灰色预测(法)1.定义2.如何预测3.灰色预测的四种常见类型 二、灰色关联度分析灰色关联度 三、灰色生成数列四、灰色模型GM(1,1)五、灰色预测步骤 前言 灰色系统的应用 一、灰色预测(法) 1.定义 灰色预测法&a…

数学建模学习:灰色关联分析

一、灰色关联分析 1.概述 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素,多种因素共同作用的结果决定了该系统的发展态势。在众多的因素中,哪些是主要因素,哪些是次要因素&#xff1…

灰色关联分析笔记

什么时候用灰色关联分析? 灰色关联分析 是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法 【若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较…

MATLAB学习笔记_Day03灰色关联分析和灰色预测模型

学习视频:【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训! 文章目录 1. 灰色关联分析与预测模型适用范围:1.1 灰色预测的概念1.2 灰色关联度与优势分析1.3 灰色预测模型1.4 灰色模型GM(1,1)1.5 灰色预测步骤 1…

灰色系统理论与灰色关联分析模型

灰色系统理论与灰色关联分析模型 Author:丸子 Written on: 220211 Notes:包括灰色系统知识和灰色关联分析模型两部分 笔记课程来自b站网课老哥带你学数模书本为《数学建模算法与应用(第3版)》,司守奎编著第424页 文章目录 灰色系统理论与灰色…

Python 灰色关联度 灰色预测模型

灰色关联度 灰色关联度常用于分析影响因子与被影响因子的关联,是水论文的好东西 如果数据的量纲不统一的话,需要先进行归一化处理 import numpy as npdef gray_correlation(refer, data, rho0.5): refer: 参照数列 (列向量)data: 比较数列 (以列为单位…

备战数学建模15-灰色关联分析与灰色预测模型

目录 一、灰色系统理论与灰色关联分析 1-灰色预测的概念 2-灰色关联度与优势分析 3-灰色关联分析案例分析 4-灰色生成数列 二、灰色预测模型 1-灰色模型GM 2-灰色模型GM的建模步骤 3-灰色预测经典案例1 4-灰色预测模型经典案例2 一、灰色系统理论与灰色关联分析 1-灰…

C语言:关键字----switch、case、default(开关语句)

C语言:基础开发----目录 C语言:关键字—32个(分类说明) 有32个关键字详细说明,还有跳转链接! 一、开关语句----介绍 开关语句,包括以下四种关键字: switch:开关语句case: 开关语句…

C语言关键字auto,case,default,switch应该如何使用

前言:本文章主要用于个人复习,追求简洁,感谢大家的参考、交流和搬运,后续可能会继续修改和完善。 因为是个人复习,会有部分压缩和省略。 一、auto 1.c语言中,关键字auto用于声明一个变量为自动变量&#x…

C语言-switch-case语句与多分支结构

一、switch-case语句 1. switch语句中的每个语句段中都使用break语句 switch-case语句的一般形式为: switch (表达式){case 常量表达式1: 语句段1;break;case 常量表达式2:语句段2;break;...case 常量表达式n:语句段n;break;default:语句段n1;break;}这是switch-c…

C语言——switch case 语句判断学生成绩

C语言——switch case 语句判断学生成绩 switch case 讲解: switch(),在括号里输入所定义的变量,接着在()后面输入一个{}大括号,把每一个分支语句放在大括号中。 switch()写法: int main()…

C语言--switch case 语句,case 后没有语句

背景:在看 wireshark 的解析协议部分的源码时,发现很多的 switch case 语句,case 后没有语句 的情况,随处可见的这种情况,产生疑惑,报文解析就是很好的例子。 例如:wireshark-3.2.17/epan/diss…

补充switch语句的内容和逗号运算符(C语言case后没有break的switch语句,会继续执行后面的语句再退出)

补充switch语句的内容和逗号运算符 C语言case后没有break的switch语句,会继续执行后面的语句再退出补充逗号运算符 C语言case后没有break的switch语句,会继续执行后面的语句再退出 对于switch语句,我们在使用的时候都会注意使用的规范&#…