SQL Server :关系模式的键码与闭包计算

在这里插入图片描述

在这里插入图片描述

一、键码的定义

首先我们给出 键码的定义 如下

定义:已知 R<U,F> 是属性集 U 的关系模式,F是属性集 U 上的一组函数依赖,设 K 为 R<U,F> 中的属性或属性组合,若K ⇒ U - K 且 K 的任何真子集都不能决定 U,则 K 为R的键码

然后大家还要记住的一个东西就是【超键码】,它是 “键码的超集” 的简称。

当一个属性集中出现多个键码的时候,就选定其中的一个作为 主键码

  • 包含在任何一个键码中的属性,称为 主属性
  • 不包含在任何一个键码中的属性,称为 非主属性
  • 最简单的情况 —— 单个属性是键码
  • 最极端的情况 —— 整个属性组合是键码,称为 全码(可不是全马哦🏃💦)

例1:考虑关系模式:人(身份证号,姓名,性别,住址,出身年月),且有函数依赖集:

F = {
身份证号 ⇒ (姓名,性别,住址,出身年月),
(姓名,住址)⇒ (身份证号,住址,出身年月)
}
  • 从上面的这个关系模式我们可以看出,如果对于 公安部分 而言,它可以选身份证号作为主键码,用身份证号作为人的唯一标识;
  • 对于 邮电部门 而言,它选(姓名,住址)作为主键码,用姓名和住址作为投递信件的唯一标识
  • 在上面的模式中,身份证号,姓名,住址 这三个为【主属性】,性别,出身年月 为【非主属性】

下面我们再来看一个 全码 的例子

例2:考虑关系模式R(演奏者,作品,听众)

  • 为什么说这个关系模式为全码呢,因为三个属性都可以作为键码,试想
    • 一个演奏者可以演奏多个作品;
    • 一个作品也可以被多个演奏者所演奏
    • 观众也可以欣赏不同演奏者的不同作品
  • 那么这三个属性就都得被定义成为键码了,即 全码

二、闭包的计算

有了【键码】的一些知识后,我们就可以来学习一下 闭包 这个东西了

首先我们来讲讲闭包的基本概念:

假设 A = {A1, A2, A3,…, An}是属性集,F是函数依赖集。属性集A在函数依赖集F下的闭包是这样的属性集X,那么A1A2An ⇒ X是蕴含于F中的函数依赖。此时我们就可以用{A1, A2, An}+ 来表示属性集A1A2…An的闭包

然后我们来看闭包的计算规则:

  1. 属性集X终将成为闭包。首先,将X初始化为{A1, A2, …, An}
  2. 然后,反复检查某个函数依赖B1B2...Bm ⇒ C,使得所有B1B2...Bm 都在属性集X中,但是C不在其中,于是将C加到属性集X中l
  3. 根据需要多次重复步骤2,直到没有属性能加到X中。由于X是只增的,而任何关系的属性数目必然是有限的,因此最终再也没有属性可以加到X中
  4. 最后得到的不能再增加的属性集X就是{A1, A2, …, An}+ 的正确值

看完了闭包的计算规则,我们马上来实战演练一下吧🗡

例3:让我们来考虑一个关系R(A, B, C, D, E, F),其函数依赖集为F = {AB ⇒ C,BC ⇒ AD,D ⇒ E,CF ⇒ B},试计算 {A, B} 的闭包{A, B}+

在这里插入图片描述

例4:已知关系模式R(A, B, C, D),其函数依赖集为F = {AB ⇒ C,C ⇒ D,D ⇒ A},求蕴含于给定函数依赖的所有非平凡函数依赖和键码

在这里插入图片描述

例5:若R(A, B, C, D, E),其函数依赖集为F = {AB ⇒ C, B ⇒ D, D ⇒ E, C ⇒ B},试求关系模式R的键码

在这里插入图片描述
💬 那么通过这三道例题的讲解相信读者一定了解了闭包是如何地去进行计算的

三、总结与提炼

最后我们来总结一下本文所学习的内容📖

  • 首先的话我们学习了 键码的定义,了解到了键码是什么东西。在有这个的基础上,我们又学习了 闭包的计算,清楚计算规则之后,再通过三道例题的详细讲解相信读者一定对这个知识点有了一定的认识

在这里插入图片描述

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

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

相关文章

TLS、对称/非对称加密、CA认证

1. SSL与TLS SSL/TLS是一种密码通信框架&#xff0c;他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码&#xff0c;消息认证码&#xff0c;公钥密码&#xff0c;数字签名&#xff0c;伪随机数生成器等&#xff0c;可以说是密码学中的集大成者。 TLS…

甘草书店记: 2023年10月11日 星期三 晴 「做有光的人,照亮他人,也引人同行」

发了两篇《甘草书店记》&#xff0c;书店计划公之于众&#xff0c;收获了不少人的赞扬和鼓励&#xff0c;来自生活中的友人&#xff0c;来自麦田的客户和朋友&#xff0c;来自图书界的同行前辈&#xff0c;也来自商界的同仁。其中&#xff0c;最特别留言来自甘草书店投资方的张…

<HarmonyOS第一课>从简单的页面开始 【课后考核】

判断题 在Column容器中的子组件默认是按照从上到下的垂直方向布局的&#xff0c;其主轴的方向是垂直方向&#xff0c;在Row容器中的组件默认是按照从左到右的水平方向布局的&#xff0c;其主轴的方向是水平方向。 正确(True)List容器可以沿水平方向排列&#xff0c;也可以沿垂…

Java多线程题目总结——使用Runnable实现多线程

使用Runnable实现多线程 1. 定义一个共享资源类Resource&#xff0c;资源类里面&#xff1a; &#xff08;1&#xff09;共享资源的私有成员变量&#xff0c;指明资源类的一些属性 &#xff08;2&#xff09;定义flag变量用于线程之间的协作 private boolean flag true; &…

temu反洗钱协议在哪里签署

反洗钱是国际社会关注的重要议题之一。为了加强国际合作&#xff0c;各国政府积极参与签署反洗钱协议。TEMU反洗钱协议作为国际间的重要合作框架&#xff0c;其签署地点及其意义备受关注。本文将深入探讨TEMU反洗钱协议的签署地点及其背后的意义。 先给大家推荐一款拼多多/temu…

PostgreSQL 元组统计与 pgstattuple 优化

第1章 简介 1.1 参考文档 https://www.percona.com/blog/postgresql-tuple-level-statistics-with-pgstattuple/ 1.2 关于pgstattuble 由于Postgres表膨胀会降低数据库性能&#xff0c;因此我们可以通过消除表膨胀来提高其性能。我们可以使用pgstattuple扩展来识别膨胀的表。 这…

网络和信息系统指令 ( NIS2 ) 及其全球影响

网络和信息系统指令 ( NIS2 ) 将于 2024 年 10 月生效&#xff0c;旨在提高欧盟 (EU) 的网络弹性。 不过&#xff0c;其影响可能会更广泛&#xff0c;带来更严格的流程和控制&#xff0c;并重新定义我们向被视为国家关键的组织提供服务的方式。 该强制性指令将具有效力&#x…

锂电涂布机设备健康管理:降低运维成本的关键

随着锂电池行业的快速发展&#xff0c;锂电涂布机设备作为关键生产工艺装备&#xff0c;扮演着至关重要的角色。然而&#xff0c;涂布机设备的故障和维护成本对于企业来说是一个不可忽视的挑战。本文将介绍做好锂电涂布机设备的健康管理&#xff0c;降低运维成本的关键措施。 锂…

初刷leetcode题目(11)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

Python的ConfigParser模块来读取/修改INI格式的配置文件

可以使用Python的ConfigParser模块来读取INI格式的配置文件&#xff0c;具体步骤如下&#xff1a; 导入ConfigParser模块 import configparser2. 创建ConfigParser对象 config configparser.ConfigParser()3. 读取config.ini文件内容 config.read(config.ini)4.获取配置项…

Elasticsearch初识--CentOS7安装ES及Kibana

文章目录 一&#xff0e;前言二&#xff0e;介绍1.Elasticsearch2.Kibana 三&#xff0e;ES安装1.下载安装包2.解压、配置2.1 解压2.2 配置 3.启动3.1增加用户3.2启动 4.解决资源分配太少问题5.启动成功 四&#xff0e;Kibana安装1.下载安装包2.解压、配置2.1 解压2.2 配置2.2 …

太快了!文生图片只需1秒,开源SDXL Turbo来啦!

11月29日&#xff0c;著名开源生成式AI平台Stability.ai在官网发布了&#xff0c;开源文生图模型SDXL Turbo。 根据使用体验&#xff0c;SDXL Turbo的生成图像效率非常快&#xff0c;可以做到实时响应&#xff08;可能小于1秒&#xff09;。 在你输入完最后一个文本后&#x…

【优选算法系列】【专题十四优先级队列】第一节.(1046. 最后一块石头的重量和703. 数据流中的第 K 大元素)

文章目录 前言一、最后一块石头的重量 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写 1.2.3 题目总结二、数据流中的第 K 大元素 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2…

java第20章节

一.线程简介 二.创建线程 1.继承Thread类 Thread类中常用的两个构造方法如下&#xff1a; public Thread():创建一个新的线程对象。 public Thread(String threadName):创建一个名称为threadName的线程对象。 继承Thread类创建一个新的线程的语法如下&#xff1a; public c…

C++:char* array = “Hello World“报错怎么办

目录 一、原因二、解决办法一三、解决办法二四、解决办法三 一、原因 在C隐式类型转换中提到这个知识点&#xff1a; 转换成常量&#xff1a;允许将指向非常量类型的指针转换成指向相应的常量类型的指针。…相反的转换并不存在&#xff0c;因为它试图删除掉底层const。 这就…

AI视频智能分析识别技术的发展与EasyCVR智慧安防视频监控方案

随着科技的不断进步&#xff0c;基于AI神经网络的视频智能分析技术已经成为了当今社会的一个重要组成部分。这项技术通过利用计算机视觉和深度学习等技术&#xff0c;实现对视频数据的智能分析和处理&#xff0c;从而为各个领域提供了广泛的应用。今天我们就来介绍下视频智能分…

建立健全涉密测绘外业安全保密管理制度,落实监管人员和保密责任,外业所用涉密计算机纳入涉密单机进行管理

建立健全涉密测绘外业安全保密管理制度&#xff0c;落实监管人员和保密责任&#xff0c;外业所用涉密计算机纳入涉密单机进行管理 1.涉密测绘外业安全保密管理制度 2.外业人员及设备清单&#xff08;包括&#xff1a;外业从业人员名单、工作岗位&#xff0c;外业设备名称、密…

Opencv | 直方图均衡化

import cv2 #opencv 读取的格式是BGR import numpy as np import matplotlib.pyplot as plt #Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() cv2.calcHist(images,channels,mask,histSize,ranges) - …

验证码及其实现

1. 什么是验证码 验证码&#xff08;Completely Automated Public Turing test to tell Computers and Humans Apart&#xff0c;CAPTCHA&#xff09;是一种测试&#xff0c;用于确定用户是否为真实人类。它通常以需要用户解决的小挑战的形式出现&#xff0c;例如识别扭曲的文…

智能超声波雾化器pcba方案

一、超声波雾化器方案工作原理 超声波雾化器是一款基于电路板的振荡信号被大功率三极管进行能量放大&#xff0c;传递给压电陶瓷片&#xff0c;当压电陶瓷片受电信号的激励&#xff0c;产生高频谐振&#xff0c;并使吸附在微孔膜上的液体结产生超声振荡&#xff0c;将液体的结构…