数据库设计——关系数据理论(超详细)「建议收藏」

数据库设计——关系数据理论(超详细)「建议收藏」问题——什么是一个好的数据库逻辑设计●关系型数据库逻辑设计:➠针对一个具体问题应如何构造一个适合于它的数据模式,即应构造几个关系,每个关系由哪些属性组成等eg:?这样的设计是一个好的设计吗?观察这个表所对应的一个实例(在某个时刻student模式所对应的一个实际的数据情况):如有若干个学生,他们都为’计算机系’,系主任为’张明’,选修了’C1’课程,得到各自的成绩☟☞关系模式STUDENT(Sno,Sdept,Mname,Cno,Grade)中存在的问题:☜1、数据冗余太大,浪费存储空间如

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

?问题——什么是一个好的数据库逻辑设计

●关系型数据库逻辑设计:
➠针对一个具体问题应如何构造一个适合于它的数据模式,即应构造几个关系,每个关系由哪些属性组成等
eg:
在这里插入图片描述

?这样的设计是一个好的设计吗 ?

观察这个表所对应的一个实例(在某个时刻student模式所对应的一个实际的数据情况):如有若干个学生,他们都为’计算机系’,系主任为’张明’,选修了’C1’课程,得到各自的成绩

在这里插入图片描述

☞关系模式STUDENT(Sno,Sdept,Mname,Cno,Grade)中存在的问题:☜
1、数据冗余太大,浪费存储空间

如:系主任的名字重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。

2、更新异常(Update Anomalies)
数据冗余,更新数据时,维护数据完整新代价大
如果某系换主任,系统必须修改与该系学生有关的每一个元组。

3、插入异常(Insertion Anomalies),该插入的数据插不进去

如果成立一个新的软件工程系,还没有招生,我们就无法把这个系及其系主任的信息存入数据库。

4、删除异常(Deletetion Anomalies),不该删除的数据也删除了

如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其主任的信息也丢掉了。

?什么是一个好的模式 ?

➠好的设计模式不会发生插入异常、删除异常、更新异常、数据冗余应尽可能少

问题的原因:
由于模式中的某些数据依赖引起的。
数据依赖:
◆是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系
◆是现实世界属性间相互联系的抽象
是数据内在的性质
是语义的体现

数据依赖对关系模式的影响:
不合适的数据依赖,造成插入异常、删除异常、更新异常和数据冗余问题

用一张图表示函数依赖
在这里插入图片描述

解决方法:把这个单一模式分成3个关系模式
S( Sno, Sdept, Sno→Sdept);
SC ( Sno, Cno, Grade, (Sno, Cno)→Grade);
DEPT (Sdept, Mname, Sdept→Mname)
这三个模式不会发生插入异常、删除等异常;数据冗余得到控制。

如何解决关系模式中存在的问题:
规范化理论——找出关系模式中不合适的数据依赖,消除它们,可以在不同程度上解决插入异常、删除异常、更新异常和数据冗余问题。

函数依赖

在这里插入图片描述

在这里插入图片描述
如何确定函数依赖?
◆函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
●如Sname→Sno函数依赖只有在“学生不允许有重名”的条件下成立。

平凡函数依赖与非平凡函数依赖
●X→Y, Y⊈X, 则称X→Y是非平凡的函数依赖。
●X→Y, Y⊆X, 则称X→Y是平凡的函数依赖。

在这里插入图片描述

完全函数依赖与部分函数依赖

在这里插入图片描述
传递函数依赖
在这里插入图片描述

范式

◆范式是一种符合某一级别的关系模式集合

◆关系数据库中的关系必须满足一定的要求。
满足不同程度要求的为不同范式

●范式的种类:
第一范式(1NF)☞☞☞☞☞☞☞☞(关系模式R的所有属性都是不可分的基本数据项)
第二范式(2NF)☞☞☞☞☞☞☞☞(关系模式R⊆1NF,并且每一个非主属性都完全函数依赖于R的码,则R⊆2NF。
第三范式(3NF)☞☞☞☞☞☞☞☞(关系模式R⊆1NF,若R中不存在这样的码X、属性组Y及非属性Z(Y⊉Z),使得X→Y,Y→Z,Y↛X,成立,则称R<U,F>⊆3NF ◆若R⊆3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码
)
BC范式(BCNF,Boyce和Codd共同提出的范式)☞☞☞☞☞☞☞☞通常也认为BC范式是修正的第三范式,有时也称为扩展的第三范式,即在关系模式R<U,F>中,如果每一个决定因素都包含码,则R⊆BCNF。
◆BCNF关系模式所具有的性质:
①所有非主属对每一个码都是完全依赖函数。
②所有的主属性对每一个不包含它的码也是完全函数依赖。
③没有任何属性完全函数依赖于非码的任何一组属性。

第四范式(4NF)☞☞☞☞☞☞☞☞
第五范式(5NF☞☞☞☞☞☞☞☞
●各种范式之间存在联系(低级范式包含高级范式):
在这里插入图片描述

规范化小结

●一个关系模式只要是其分量都是不可分的数据项,它就是规范化的关系模式,但这只是最基本的规范化。
●规范化程度过低的关系模式不一定能够很好的描述现实世界,可能会存在插入异常、删除异常、修改异常、数据冗余等问题,解决方法就是对其进行规范化,转换成高级范式。
●一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化
●关系数据库的规范化理论是数据库逻辑设计的工具。

◆关系模式规范化的基本步骤:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184013.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月9日 下午9:00
下一篇 2022年10月9日 下午9:16


相关推荐

  • 面试题 ArrayList与LinkedList的区别

    面试题 ArrayList与LinkedList的区别ArrayList 和 LinkedList 的区别 Java 基础面试题 面试官问你这个题的关键 是为了考察你的数据结构功底 理解及深入程度 此处 ArrayList 和 LinkedList 是 Java 语言实现的数据结构 如果你对数组和链表有了解 那这个问题就是简易的 进入正题 总结几点 1 ArrayList 的实现是基于数组来实现的 LinkedList 的基于双向链表来实现 这两个数

    2026年3月17日
    2
  • 计算机网络——DNS协议

    计算机网络——DNS协议文章目录 DNS 协议 DNS 提供的服务 DNS 简介服务 DNS 工作原理概述 DNS 服务器分类根 DNS 服务器顶级域 TLD DNS 服务器权威 DNS 服务器本地 DNS 服务器一趟 DNS 查询过程解析递归查询迭代查询实际中遵循的查询模式 DNS 缓存 DNS 记录和报文 DNS 记录 DNS 报文 DNS 报文解析 DNS 协议 DNS 提供的服务 DNS 简介由于 IP 地址较为难记 因此引入了 DNS 协议 DNS DomainNameSy

    2026年3月17日
    2
  • 阿里云服务器端口开放访问不了_阿里云服务器能不能翻墙

    阿里云服务器端口开放访问不了_阿里云服务器能不能翻墙最近在自己写前端后端代码,然后部署在服务器上。在部署后端代码后发现通过域名访问不了该端口,正常情况下启动服务后就能访问,于是发现需要开放该端口。这里以阿里云的服务器为例:首先登录阿里云账号后,进入服务器管理页面。找到左侧的防火墙选项卡找到右侧的添加规则按钮点击后,应用类型选择自定义,然后填写端口范围,即你要公开访问的端口号,然后点击确定。以上步骤完成后,即可访问该端口…

    2022年10月2日
    5
  • LM Studio本地部署Qwen3

    LM Studio本地部署Qwen3

    2026年3月13日
    4
  • traceroute详解[通俗易懂]

    traceroute详解[通俗易懂]traceroute详解1.traceroute基本概念traceroute(Windows系统下是tracert)命令利用ICMP协议定位您的计算机和目标计算机之间的所有路由器。TTL值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。traceroute是一条缓慢…

    2022年6月29日
    80
  • JAVA中调用CMD命令,并输出运行结果

    JAVA中调用CMD命令,并输出运行结果

    2021年11月16日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号