【数据库系统概论】第6章-关系数据库理论

真别看吧,抄ppt而已啊

文章目录

    • 6.1 引言
    • 6.2 规范化
      • 6.2.1 函数依赖
      • 6.2.2 码
      • 6.2.3 范式(Normal Form)
      • 6.2.4 BC范式
      • 6.2.5 规范化小结

6.1 引言

我们有这样一张表:
在这里插入图片描述
but 为啥这样设计呢?由此引出怎样设计一个关系数据库的问题。
进而出现:数据库逻辑设计的工具——关系数据库的规范化理论
关系数据库有严格的理论支撑,这也是它的过人之处。

  • 回顾关系模式
    在这里插入图片描述
    在这里插入图片描述
  • 数据依赖
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    根据上图,关系中的映射不一定是单射的,即y不能确定x。(可能处于既不满也不单的混合态)
    单射、满射、双射
    X -> Y,可以认为知道了元组的X就能确定它的Y。
  • 且看下面的问题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这是一个关系模式,而且不咋地。
    Q: 怎么让它变好呢?
    A: 通过分解关系模式来消除其中不合适的数据依赖。
    在这里插入图片描述
    为什么这样分解就好呢?
    引入关系规范化

6.2 规范化

6.2.1 函数依赖

  1. 定义
    在这里插入图片描述
  2. 解释
    在这里插入图片描述
  3. 平凡与非平凡函数依赖
    在这里插入图片描述
    在这里插入图片描述
  4. 完全函数与部分函数依赖
    在这里插入图片描述
    在这里插入图片描述
  5. 传递函数依赖
    在这里插入图片描述
    事实上,如果 Y 是 X的子集或者,Y->X,那么X是直接函数决定Z的。
    在这里插入图片描述

6.2.2 码

  • 主码、候选码
    在这里插入图片描述
    在这里插入图片描述
  • 主属性、非主属性、全码
    在这里插入图片描述
    在这里插入图片描述
  • 外码
    在这里插入图片描述
  • 习题
    在这里插入图片描述
    AC -> A, AC -> C,
    A -> B => AC -> BC => AC -> D
    从而 AC -> U, AC为码
    

6.2.3 范式(Normal Form)

在这里插入图片描述

  • 1NF
    在这里插入图片描述
    反例:
    在这里插入图片描述

  • 2NF
    在这里插入图片描述
    反例:
    在这里插入图片描述
    坏处:
    在这里插入图片描述
    解决方法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 3NF

  1. 定义
    在这里插入图片描述
    在这里插入图片描述
    直白点说,sdept能确定sloc,你把sloc与sdept 放在一张表里是多余的,放到(sdept,sloc)这张表里一条就够了。
  2. 存在问题
    在这里插入图片描述
  3. 解决办法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 习题
    在这里插入图片描述
    在这里插入图片描述

6.2.4 BC范式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.5 规范化小结

在这里插入图片描述
在这里插入图片描述

  • 习题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分成若干子表以后要多设一个表来保存二者之间的关系。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1.2.3 TCP/IP参考模型

一、OSI参考模型与TCP/IP参考模型 1、应用层:将表示层和会话层都纳入其中,形成一个比较大的层次,包含所有的高层协议 2、传输层:实现端到端的,进程与进程之间的通信。 3、网际层:TCP/IOP模型中最关键的部…

VScode——下载、安装、配置C/C++环境(windows)

一.快速下载 还在因为vscode官方下载慢而头疼嘛,按这个步骤来直接起飞兄弟萌 首先进入vscode官方网站然后选择对应版本下载然后进入浏览器下载页面复制下载链接粘贴到地址栏 将地址中的/stable前换成vscode.cdn.azure.cn 即可实现超速下载 下面是一个国内镜像的下…

一种删除 KubeSphere 中一直卡在 Terminating 的 Namespace--KubeSphere Logging System的简单方法

文章目录 一、问题提出二、删除方法1,获取kubesphere-logging-syste的详细信息json文件2,编辑kubesphere-logging-system.json3,执行清理命令 三、检查结果 一、问题提出 在使用 KubeSphere 的时候发现有一个日志服务KubeSphere Logging Sys…

C语言——指针题目“指针探测器“

如果你觉得你指针学的自我感觉良好&#xff0c;甚至已经到达了炉火纯青的地步&#xff0c;不妨来试试这道题目&#xff1f; #include<stdio.h> int main() {char* c[] { "ENTER","NEW","POINT","FIRST" };char** cp[] { c 3…

我的NPI项目之行业黑话 -- 电子/机构/软件/认证

因为最近的NPI项目&#xff0c;参加了很多项目的会议&#xff0c;有电子/机构/软件/认证相关的各方面的专业词汇就出现了。这里我将之称为黑话&#xff0c;就是对我&#xff08;纯软件) 来说是黑盒的话。这里简单记录并用于理解。 EE有关&#xff1a; Layout&#xff0c;一直…

腾讯云轻量服务器和云服务器CVM该怎么选?区别一览

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

C++ 一个有bug的贪吃蛇。。。。。。。。

C 一个有bug的贪吃蛇。。。。。。。。 #include <graphics.h> #include<Windows.h> #include<Mmsystem.h> #include<conio.h> #include<time.h> #include<stdio.h> #include<easyx.h> using namespace std; #pragma warning(di…

LeetCode 刷题日志

文章目录 1954. 收集足够苹果的最小花园周长思考&#xff1a;暴力枚举代码实现二分查找代码实现 1954. 收集足够苹果的最小花园周长 1954. 收集足够苹果的最小花园周长 难度&#xff1a; 中等 题目大意&#xff1a; 给你一个用无限二维网格表示的花园&#xff0c;每一个 整…

Spring Boot + Mybatis + vue2 — 实现分页查询

后端 pom.xml文件导入依赖 <!--分页查询--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version> </dependency> 配置全局配置…

Python接口自动化之requests请求统一封装

还记得我们之前写的get请求、post请求么&#xff1f; 大家应该有体会&#xff0c;每个请求类型都写成单独的函数&#xff0c;代码复用性不强。 接下来将请求类型都封装起来 自动化用例都可以用这个封装的请求类进行请求&#xff0c;我们将常用的get、post请求封装起来。 imp…

亚信安慧AntDB数据库——通信运营商核心系统的全面演进

AntDB数据库源自通信运营商核心系统&#xff0c;经过15年的平稳运行和不断演进&#xff0c;成功跟随通信技术的升级步伐&#xff0c;逐步迈向5G时代&#xff0c;并且在这期间完成了8次大版本的迭代&#xff0c;为行业树立了技术领先的典范。其独特之处在于具备超融合架构&#…

Laravel的知识点

1.{{ }} 是在 HTML 中内嵌 PHP 的 Blade 语法标识符&#xff0c;表示包含在该区块内的代码都将使用 PHP 来编译运行。 2.两种写法 3.return void 在这段注释中&#xff0c;"return void" 表示该函数或方法没有返回值。这意味着它执行某些操作或任务&#xff0c;但…

数据结构学习 Leetcode494 目标和

关键词&#xff1a;动态规划 01背包 dfs回溯 一个套路&#xff1a; 01背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要逆序遍历完全背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要正序遍历 题目&#xff1a; 解法一&#xff1a; …

专为初学者设计:Nutch库Java下载器入门指南

概述: Nutch是一款开源的Java爬虫框架&#xff0c;用于抓取、解析、提取和存储网页数据。基于Hadoop的分布式系统&#xff0c;Nutch支持大规模网络爬取&#xff0c;并提供各种插件&#xff0c;包括链接分析、语言检测和内容过滤等功能。 本文旨在介绍如何使用Nutch库编写简单…

Python自动化测试:选择最佳的自动化测试框架

在开始学习python自动化测试之前&#xff0c;先了解目前市场上的自动化测试框架有哪些&#xff1f; 随着技术的不断迭代更新&#xff0c;优胜劣汰也同样发展下来。从一开始工具型自动化&#xff0c;到现在的框架型&#xff1b;从一开始的能用&#xff0c;到现在的不仅能用&…

SD-WAN企业组网的核心要点

随着企业网络需求的不断演进和全球化业务的扩张&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;作为一种先进的网络架构技术&#xff0c;逐渐成为企业组网的首选方案。SD-WAN通过提供更灵活、高效和安全的网络连接&#xff0c;帮助企业轻松应对不同地区和业务需求。…

C++ 之LeetCode刷题记录(三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 13、罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c…

跨境电商引流真的很难吗?了解一下这些技巧!

随着全球电商市场的不断扩大&#xff0c;越来越多的企业开始涉足跨境电商领域&#xff0c;然而&#xff0c;与国内电商相比&#xff0c;跨境电商面临着诸多挑战&#xff0c;其中最大的难题之一就是如何有效地吸引潜在客户。 很多卖家觉得跨境电商引流非常困难&#xff0c;但实…

[Angular] 笔记 12:模板驱动表单 - ngForm

Angular For Beginners - 16. Template Driven Forms (ngForm) Angular 以其表单模块而闻名。 Angular 有两种类型的表单&#xff1a; Template 以及 Reactive&#xff1a; Template 表单的特点&#xff1a;简单&#xff0c;神奇&#xff0c;一键点击。 Reactive 表单的特点&…

RabbitMQ 报错:Failed to declare queue(s):[QD, QA, QB]

实在没想到会犯这种低级错误。 回顾整理一下吧&#xff1a; 原因&#xff1a;SpringBoot主配置类默认只会扫描自己所在的包及其子包下面的组件。其他位置的配置不会被扫描。 如果非要使用其他位置&#xff0c;就需要在启动类上面指定新的扫描位置。注意新的扫描位置会覆盖默…