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

本文主要是介绍两个月冲刺软考——关系模式中的候选关键字与如何分解为无损连接并保持函数依赖的解法(例题讲解,看完必会),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/1125227

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC