java数据库关系数据库设计(下)

目录

1.概念模型:E-R图

1.实体

2.属性

3.联系

4.实体间的映射关系

2.物理模型:数据库模型图 

3.数据库规范设计 

1.常见数据库设计问题 

2.三大范式 

1.第一范式 

2.第二范式 

3.第三范式 

3.规范化和性能的关系 


1.概念模型:E-R图

在数据库需求分析阶段,我们已经充分了解系统需要实现的业务功能,并完成实体标识及实体间关系的标识。此时需要进一步进入概要设计阶段。为了更加形象直观地体现数据库的设计意图,如同建筑行业的施工图纸,数据库设计也有类似的图形化展示工具——E-R图(Entity Relationship Diagram,实体-联系图),通过一些具有特定含义的图形符号提供图形化展示实体、属性和联系的方法。

1.实体

在E-R图中,使用矩形表示实体。在医院管理系统的E-R图中,病人、科室、检查项目实体的表现形式。

2.属性

在E-R图中,椭图形表示实体的属性。属性与实体之间使用实线相连,表示该属性归属于哪个实体。在医院管理系统的E-R图中,病人的姓名、性别和出生日期等属于病人实体的属性。

3.联系

联系指在需求分析阶段标识的实体之间的关系,使用菱形表示。在医院管理系统的E-R图中,科室给病人开具处方及科室拥有检查项目的关系。

4.实体间的映射关系

在绘制E-R图的过程中,还需要在E-R图上表现实体之间的映射关系,即一个实体关联其他实体的个数。这种映射关系被称为映射基数。对于实体A和B之间的映射关系,其映射基数必为下列基数之一。

  • 一对一联系(1:1):A中的一个实体最多与B中的一个实体关联,并且B中的一个实体最多与A中的一个实体关联。例如,学校里班级与班主任之间的联系是一对一的联系。学校里一个班级只有一个老师作为班主任,而一个教师也只能做一个班级的班主任。
  • 一对多联系(1:N)/多对一联系(N:1):一对多联系是A中的一个实体可以与B中的任意数量的实体关联;B中的一个实体最多与A中的一个实体关联。例如,学校里班级和学生的联系是一对多联系。学校里一个班级可以有多个学生,而一个学生只能属于一个班级。反过来说,学生和班级的联系是多对一联系。
  • 多对多联系(M:N):A中的一个实体可以与B中的任意数量的实体关联,反之亦然。例如,学校里的任课教师与班级的关系。一个任课教师可以给多个班级上课,一个班级可以有多个任课教师上课,在E-R图中,通过在连接线上分别添加字母N和M表示多对多的映射关系。
  • E-R图可以将复杂的业务以图形的形式展示出来,它虽然并不是完善的数据库设计,但是对于帮助梳理数据间的联系有着非常重要的作用。尤其是在业务人员与开发人员的沟通中,E-R图更是能够极大地提高彼此之间的沟通效率。

2.物理模型:数据库模型图 

完成E-R图的绘制,相当于完成了数据库存的概要设计,概要设计阶段的重点是理清系统中存在的实体和实体之间的关系。下一步就要进行数据库的详细设计。数据库的详细设计采用数据库模型图来实现。在这一阶段,工作内容是把E-R图转化为数据库中的多张表,并标识各表的主键和外键。设计良好的数据库模型通过图形化的方式显示数据库存储的信息、信息的数据类型,以及表与表之间的关系。

3.数据库规范设计 

在数据库的需求分析设计阶段,由于设计者的工作经验、水平。视角等因素,不同的人设计的数据库各不相同。开发者缺乏在设计阶段对数据库评价的手段,往往在系统开发到一半甚至上线后才发现数据库设计得不合理,导致系统性能低下甚至不稳定。

1.常见数据库设计问题 

数据库设计问题大部分是数据冗余引起的。什么是数据冗余呢?以医院信息管理系统为例,考虑一种极端的情况,整个医院管理系统由一张表组成。一张设计糟糕的、存在大量冗余数据的数据表。

2.三大范式 

在设计数据库时,有一些专门的规则,它们被称为数据库的设计范式。遵守这些规则,将会创建设计良好的数据库。下面将逐一讲解数据设计的三大范式理论。

1.第一范式 

第一范式强调的是表中列的原子性,也就是说,任意一列不能够再拆分成其他几列。如果这是一个很大的综合性医院,当前的科室划分就不符合第一范式。因为在综合性大医院中,仅内科就可能分为消化内科、心内科或心血管内科等。因此,在此情况下,可以考虑把科室列进行拆分,简单的做法是将科室拆分为多级。

2.第二范式 

首先要明确的是第二范式的使用条件是当前的设计已经满足第一范式,然后才可以使用第二范式来进一步评价数据库的设计。也就是说,第二范式是建立在第一范式的基础上的。

第二范式要求表那必须有一个主键,并且非主键必须完全依赖主键,而不能只依赖主键的一部分。

3.第三范式 

第三范式在第二范式的基础上更进一步。第二范式中要求表中的所有列都依赖主键,按照依赖的程度划分这种依赖,又可分为直接依赖和间接依赖。第三范式要求每列都和主键直接依赖,而不是间接依赖。也就是说除主键以外的其他列都只能依赖主键列,列和列之间不存在相互依赖的关系。在这个条件下则认为数据表满足第三范式(3NF)。

3.规范化和性能的关系 

需要注意的是,对于项目的最终用户来说,客户最关心的是方便、清晰的数据结果。

在设计数据库时,数据库的设计规范化和性能之间存在一定的矛盾。前面通过三大范式分解出3张表,为了满足客户的需求,最终需要通过3张表之间的连接查询,恢复客户需要的数据结果。插入数据同样如此,对客户输入的数据,我们需要分开插入3张不同的表中。

由此可以看出,为了满足三大范式,数据操作性能会受到相应的影响。所以,在实际的数据库设计中,既要考虑三大范式,避免数据冗余和各种数据操作异常,又要考虑数据库的访问性能。有时,为了减少表间的连接,提高数据库访问性能,允许适当的数据冗余列,这可能是最合适的数据库设计方案。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里5年经验之谈 —— 接口测试用例如何编写?

接口测试用例如何编写?下面简单给大家讲解一下。 接口测试用例是目前软件开发中不可或缺的一个重要部分,因此编写接口测试用例同样重要。 接口测试用例的作用非常明显,它能够帮助我们了解产品正在考验、调整它如何表现在特定情境之下、产品…

每日一题:C语言经典例题之求n!

题目描述 输入一个正整数n&#xff08;1<n<12)&#xff0c;求n!。 输入 输入一个正整数n。 输出 输出n!。 样例输入&#xff1a; 3 样例输出&#xff1a; 6 代码&#xff1a; #include <stdio.h> int f(int n) {if(n1)return 1;else{return n*f(n-1);} } int main(…

01|模型IO:输入提示、调用模型、解析输出

Model I/O 可以把对模型的使用过程拆解成三块&#xff0c;分别是输入提示&#xff08;对应图中的Format&#xff09;、调用模型&#xff08;对应图中的Predict&#xff09;和输出解析&#xff08;对应图中的Parse&#xff09;。这三块形成了一个整体&#xff0c;因此在LangCha…

VScode 设置个性化背景(保姆级教程)

VS Code设置个性化背景的作用主要体现在以下几个方面&#xff1a; 提升编程体验&#xff1a;个性化背景能够让编程环境更符合个人的审美和习惯&#xff0c;使得长时间在VS Code中进行代码编辑时&#xff0c;能够保持愉悦的心情&#xff0c;从而提高编程效率。减少视觉疲劳&…

【工具】Mermaid + 大模型画流程图

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引入使用画TCP三次握手了解历史人物 总结 引入 最近看面试文章关于TCP三次握手和…

数据预处理:重复值

数据重复值处理 数据重复值出现情况重复的记录用于分析演变规律重复的记录用于样本不均衡处理重复的记录用于检测业务规则问题 数据重复值出现情况 数据集中的重复值包括以下两种情况&#xff1a; 数据值完全相同的多条数据记录。这是最常见的数据重复情况。数据主体相同但匹…

云贝教育 |【技术文章】POSTGRESQL FDW应用

注: 本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 前言 Wrapper&#xff08;FDW&#xff09;是一项关键特性&#xff0c;它赋予数据库用户直接通过SQL语句访问存储于外部数据源的能…

【AcWing】蓝桥杯集训每日一题Day6|多路归并|贪心|1262.鱼塘钓鱼(C++)

1262.鱼塘钓鱼 1262. 鱼塘钓鱼 - AcWing题库难度&#xff1a;简单时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;3449总尝试数&#xff1a;5251来源&#xff1a;《信息学奥赛一本通》算法标签枚举贪心堆多路归并 题目内容 有N个鱼塘排成一排&#xff0c;每个鱼塘中有一…

XAI之TDB:transformer-debugger的简介、安装和使用方法、应用案例之详细攻略

XAI之TDB&#xff1a;transformer-debugger的简介、安装和使用方法、应用案例之详细攻略 导读&#xff1a;小语言模型在处理一些任务时会出现无法明确解释的行为&#xff0c;难以细致追踪模型内部各个组件如神经元、注意力头等在推理过程中的作用。2024年3月12日&#xff0c;Op…

第二十六天-统计与机器学习SciPy,Scikit-Leaen

目录 1.介绍 2.使用scipy 1. 安装 2.拟合曲线 3.随机变量与概率分布 4.假设检验 5.参数检验 3.使用Scikit-Learn 1. 机器学习库&#xff0c;建立在numpy,scipy,matplotlib基础上 2.包含功能 3.安装 1.官网&#xff1a;https://scikit-learn.org 2.下载 3.线性回归…

一文掌握python函数式编程及应用实例(超详细及超多应用实例)(二)

一.命名空间和作用域: Python 的命名空间和作用域是两个密切相关的概念,它们共同决定了变量的可见性、生命周期以及如何在程序中查找变量。 a.命名空间(Namespace) 命名空间 是一个存储变量名称及其对应值的地方。在 Python 中,每个模块、函数或类都有其自己的命名空间…

STM32 ADC库函数

单片机学习&#xff01; 目录 1. RCC_ADCCLKConfig 函数 2. ADC_DeInit 函数 3. ADC_Init 函数 4. ADC_StructInit 函数 5. ADC_Cmd 函数 6. ADC_DMACmd 函数 7. ADC_ITConfig 函数 8. 用于校准的函数 8.1 ADC_ResetCalibration 函数 8.2 ADC_GetResetCalibrationSta…

【Java扫盲篇】==和equals的区别

这是一道面试经典题&#xff0c;面试官对你说&#xff1a;小伙子&#xff0c;请你说说和equals的区别 对于来说 如果比较的是基本数据类型&#xff0c;那么比较的是数据的值是否相同。注意&#xff1a;&#xff08;与数据类型无关&#xff09; int a 10;int b 10;System.out…

数据库系统概念(第二周 第二堂)(关系模型)

目录 回顾 关系模型 历史与现状 组成成分 数据结构——关系 关系定义 关系性质 关系和关系模式 难点概念理解 关系属性的分类 一、超码&#xff08;superkey&#xff09; 二、候选码&#xff08;candidate key&#xff09; 三、主码&#xff08;primary key&#…

Catmull-Rom P5 ThreeJs与前端

文章目录 问题Echarts 3D如何让曲线变得平滑&#xff1f;Echarts 2D图中平滑效果是如何实现的&#xff1f;如何在一个Echarts 3D图中画一个圆圈&#xff1f;如何在Echarts 3D图中画一个立方体&#xff1f; Catmull-Rom插值算法先来回答第二个问题回到第一个问题在Echarts 3D图中…

C#关闭程序 CefSharp.BrowserSubprocess.exe,执行控制台命令

执行控制台命令&#xff0c;关闭大量的CefSharp.BrowserSubprocess进程&#xff0c; 控制台命令&#xff1a; taskkill /f /im CefSharp.BrowserSubprocess.exe 有权限要求&#xff1a; 需要设置执行程序为管理员模式&#xff0c;IIS部署的应用程序&#xff0c;设置应用程序池…

git基础命令(三)之远程命令

目录 基础概念origin git clonegit remote add 添加远程存储库git remote 显示远程存储库列表git pushgit pushgit push origin mastergit push origin --allgit push -f origin mastegit push origin --tags git fetch获取远程仓库的更新查看远程分支的更新情况拉取特定远程分…

【Linux】——进程地址空间 Linux2.6内核进程调度队列

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、环境变量的补充 二、进程空间的地址 2.1、程序地址空间 2.2、研究背景 2.3、程序地址空间 来段代码感受一下 2.4、进程地址空间 2.5、如何…

一文搞懂IP

IP 1. 基本介绍2. IP地址定义3. IP地址分类4. 子网掩码5. 全局地址与私有地址 1. 基本介绍 TCP/IP 协议的心脏是网络层&#xff0c;主要“实现节点之间的通信”&#xff0c;即“点对点(end-to-end)通信”。 网络层包含IP(Internet Protocol)及DNS&#xff08;Domain Name Sys…

Linux的基本指令讲解

1 ls指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a; 对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文件。 -d…