两个月冲刺软考——关系模式中的候选关键字与如何分解为无损连接并保持函数依赖的解法(例题讲解,看完必会)

1. 数据库中的简单属性、多值属性、复合属性、派生属性

简单属性:指不能够再分解成更小部分的属性,通常是数据表中的一个列。例如学生表中的“学号”、“姓名”等均为简单属性。

多值属性:指一个属性可以有多个值。例如一个学生可能会有多个电话号码,这种情况下“电话号码”就可以被视为是多值属性。

复合属性:是由两个或多个简单属性组合而成的属性。例如:“家庭住址”记录了邮编、省、市、街道信息,则“家庭住址”这个属性就为复合属性。

派生属性:是指其值可以通过其他属性的值计算得出的属性。例如:一个“年龄”属性可以通过当前日期减去“出生日期”属性的值来计算得出。

2. 并发控制中事务的特性(ACID)

原子性(Atomicity):事务是原子的,要么做,要么都不做。

一致性(Consistency):事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。

隔离性(lsolation):事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事物都是不可见的。

持久性(Durability):一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。

3. 三级模式结构

视图——用户视图——外模式

基本表——概念视图——模式(概念模式)

存储文件——内部视图——存储模式

外模式 与 概念模式 映射➡逻辑独立性

概念模式 与 内模式 映射➡物理独立性

4. 关系模式中的候选关键字与如何分解为无损连接并保持函数依赖的解法

求属性的闭包:对于每一个函数依赖Y → Z(其中Y是属性集合,Z是单个属性),如果Y是X闭包的子集,那么将Z添加到X的闭包中。

遇到这种类型题,直接求四个选项的闭包即可:

候选关键字中的属性,可以推导出关系中的所有其他属性,且可能有多个候选关键字。

还有一个解法就是会发现题目中的函数依赖没有可以推出属性C的依赖,所以候选关键字中必定会含有属性C,故选D。


利用表格法来解题(举例):

  • 构造一个表格,其中行代表分解后的关系模式,列代表原始关系模式的所有属性。
  • 表格中的每个单元格,如果属性属于对应的关系模式,则填充为该属性的标记(例如a),如果不属于,则填充为b加上行号和列号的组合(例如b12)。
  • 根据函数依赖集F,逐步更新表格中的值。如果某个函数依赖的左侧属性在表格的某列中具有相同的值,那么将这个函数依赖的右侧属性在相同行中的值也更新为相同的值。
  • 如果在任何时候,表格中出现一行,其所有单元格都是属性标记(没有b),则说明分解是无损的。

假设我们有一个关系模式 R(A,B,C,D,E),并且我们有以下函数依赖集 F={A→B,C→D}F={A→B,C→D}。现在,我们将 R 分解为三个关系模式 R1(A,B),R2(B,C),和 R3(A,D)。我们要判断这个分解是否是无损的。

步骤 1:构造表格

我们首先构造一个表格,行表示分解后的关系模式,列表示原始关系模式的所有属性。在这个例子中,我们有 3 行 4 列:

ABCDE
R1a1a2b13b14b15
R2b21a2a3b24b25
R3a1b32b33a4b35

步骤 2:填值

  • 表格中的a1,a2,a3,a4表示这些属性直接来自分解模式的属性。
  • b13,b14,b21,b24,b32,b33表示这些属性不在当前行的分解模式中,但它们在其他分解模式中存在。

步骤 3:应用函数依赖

接下来,我们根据函数依赖集F来更新表格中的值:

  1. 应用 A→B:

    • 因为 a1 在 R1 和 R3 中,我们将 R3 中的 b32 更新为 a2。
  2. 应用 C→D:

    并没有出现含有相同元素的行,故结束

更新后的表格如下:

ABCDE
R1a1a2b13b14b15
R2b21a2a3b24b25
R3a1a2b33a4b35

步骤 4:检查是否无损

现在我们检查表格中是否有任何一行完全由 a 标记组成。在这个例子中,并没有任何一行是完全由a标记组成的,故不是无损连接分解。

两个月冲刺中级软件设计师,欢迎大家一起讨论交流,同时也希望各位大佬们指出错误,我这边及时修改。

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

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

相关文章

栈OJ题——有效的括号

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 有效的括号 题目描述:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。括号匹配。 二、…

异业联盟的巅峰之作!某店生活 两年百亿销售额!

大家好 我是一家软件开发公司的产品经理 吴军 最近有个爆火的商业模式 带动了三方消费 平台能赚到钱 消费者能省钱 商家也能获取到客源甚至还能赚钱 他究竟是怎么样做到三方都赚到钱的? 在当前经济形势下,许多消费者变得谨慎,减少了不必…

100天带你精通Python——第8天面向对象编程

文章目录 前言面向对象技术简介类(Class)对象(Object)继承(Inheritance)封装(Encapsulation)多态(Polymorphism)Python类详解静态变量(Static Var…

day39(8/29)——harbor私有仓库管理

一、harbor私有仓库管理 是python的包管理工具,和yum对redhat的关系是一样的 yum -y install epel-release yum -y install python2-pip pip install --upgrade pip pip list pip 8x pip install --upgrade pip pip install --upgrade pip20.3 -i https://mirror…

应用层(Web与HTTP)

目录 常见术语 1.HTTP概况 2.HTTP连接 非持久HTTP流程 响应时间模型 持久HTTP 3.HTTP报文 3.1HTTP请求报文 3.2HTTP响应报文 HTTP响应状态码 4.Cookies(用户-服务器状态) cookies:维护状态 Cookies的作用 5.Web缓冲(…

yolo格式数据集|自动驾驶|5类别|数据集已划分好|可以直接使用|yolov5|v6|v7|v8|v9|v10通用

本数据为自动驾驶检测数据集,数据集是车类摄像头在不同场景下拍摄,有5类,分别为car、truck、person、bicycle、traffic_light。数据集整理不易,获取地址在最后。 数据集数量如下: 总共有:18000张 训练集:14…

【卷起来】VUE3.0教程-01-环境搭建与安装

​分享不易,耗时耗力,麻烦给个不要钱的关注和赞吧 🌲 什么是VUE Vue 是一个框架,也是一个生态。其功能覆盖了大部分前端开发常见的需求。但 Web 世界是十分多样化的,不同的开发者在 Web 上构建的东西可能在形式和规模…

算法-最长连续序列

leetcode的题目链接 这道题的思路主要是要求在O(n)的时间复杂度下,所以你暴力解决肯定不行,暴力至少两层for循环,所以要在O(n)的时间复杂度下,你可以使用HashSet来存储数组,对于每个数字&#…

给鼠标一个好看的指针特效 鼠标光标如何修改形状?

许多爱美的小伙伴们都想着如何给自己的电脑打扮一下,用各种各样的途径来美化我们的电脑。今天我们给大家分享一下,如何美化鼠标效果,给鼠标指针修改成一个非常好看的形状~ 一起来看几组鼠标的效果,小编我给大家做了个录屏&#x…

YoloV8实战:使用YoloV8实现OBB框检测

定向边框(OBB)数据集概述 使用定向边界框(OBB)训练精确的物体检测模型需要一个全面的数据集。本文解释了与Ultralytics YOLO 模型兼容的各种 OBB 数据集格式,深入介绍了这些格式的结构、应用和格式转换方法。数据集使用DOTA。 YOLO支持的 OBB 格式 在Ultralytics YOLO …

AI编码新时代:免费人工智能助手Blackbox AI

前言: 在当今快速发展的科技时代,人工智能已经渗透到我们生活的方方面面,从智能手机的语音助手到智能家居控制系统,再到在线客服和个性化推荐算法,AI智能工具正变得越来越普遍。它们以其高效、智能和用户友好的特性&am…

git常见命令行及分支规范

文章目录 GIT常见命令行原理图基本设置初始化和克隆仓库文件管理提交更改查看状态和历史分支管理远程仓库交互高级功能GIT常见分支风格1. 单一主干分支(Single Main Branch)//极少使用优点:缺点:2. 多主干分支(Multiple Main Branches)//个人小型项目采用优点:缺点:3. …

redis的共享session应用

项目背景: 该项目背景就是黑马的黑马点评项目。 一:基于Session实现验证码登录流程 基本的登录流程我们做了很多了。这个是短信登录流程 其实和普通的登录流程就多了一个生成验证码,并将验证码保存在session中,并且呢&#xf…

《JavaEE进阶》----1.<JavaEE进阶可以学到什么>

本篇博客会讲到 一、JavaEE进阶学习内容: 1.框架的学习:Spring、Spring Boot、Spring MVC、MyBatis 2.大项目实践 3.源码阅读 二、JavaEE简介 B/S架构web开发流程 web前端开发(了解) web后端开发(重点) 三、…

【C++】OJ习题 篇2

🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 💥1、删除有序数组中的重复项💥2、数组中出现次数超过一半的数字💥3、最…

【Python进阶】学习Python必须要安装PyCharm。一篇文章带你总结一下安装PyCharm的注意事项,文末附带PyCharm激活码!!!

PyCharm激活码(文末附带精品籽料): K384HW36OB-eyJsaWNlbnNlSWQiOiJLMzg0SFczNk9CIiwibGljZW5zZWVOYW1lIjoibWFvIHplZG9uZyIsImxpY2Vuc2VlVHlwZSI6IlBFUlNPTkFMIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdG…

代码随想录算法训练营day58:图论08:拓扑排序精讲;dijkstra(朴素版)精讲

拓扑排序精讲 卡码网:117. 软件构建(opens new window) 题目描述: 某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依…

Unity 动态光照贴图,加载后显示变暗或者变白问题 ReflectionProbe的使用

动态加载光照贴图代码,可参考这个帖子 Unity 预制动态绑定光照贴图遇到变白问题_unity urp 动态加载光照信息 变黑-CSDN博客 这次遇到的问题是,在编辑器下光照贴图能正常显示,打出apk后光照贴图加载后变黑的问题 以下4张图代表4种状态&…

计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

MATLAB生成mif文件

MATLAB代码 % 参数设置 N 4096; % 数据点数量 t linspace(0, 2*pi, N); % 时间向量 width 12; % 位宽% 正弦波 sine_wave 2.5 * sin(t) 2.5; % 幅度在0到5之间% 三角波 tri_wave 5 - abs(mod(t/(2*pi)*4, 2) - 1);% 方波 square_wave 2.5 * (square(t) 1); % 将范围调…