📝 DBMS
116篇技术文档📅  最后修改于: 2020-12-13 05:17:18        🧑  作者: Mango
查询处理中的选择操作在上一节中,我们了解到应该通过测量总资源消耗来估算查询计划的成本。在本节中,我们将了解如何在查询执行计划中执行选择操作。通常,选择操作是通过文件扫描执行的。文件扫描是用于定位和访问数据的搜索算法。它是查询处理中使用的最低级别的运算符。让我们看看如何执行使用文件扫描的选择。使用文件扫描和索引进行选择在RDBMS或关系数据库系统中,仅当整个关系仅存储在一个文件中时,文件扫描才会读取...
📅  最后修改于: 2020-12-13 05:18:10        🧑  作者: Mango
双管道联接算法在上一节中,我们了解了流水线以及系统使用需求驱动或生产者驱动的流水线创建和实现流水线以评估多个操作的方式。在这里,我们将讨论用于实现流水线的评估算法。从任何特定系统访问数据时有几种操作。但是其中很少有天生会阻止操作,而其他却不是。阻塞操作是在检查所有输入的元组之前不会输出任何结果的操作。例如,像散列连接之类的操作是阻塞操作,与输出任何结果之前一样。它需要将其输入全部提取并进行分区。另...
📅  最后修改于: 2020-12-13 05:19:03        🧑  作者: Mango
流水线的实施为了实现管道以评估给定用户查询的多个操作,我们需要构造一个简单而复杂的操作,该操作合并给定查询的多个操作,这将实现一个管道。但是,这种方法对于某些经常发生的情况是可行和有效的。系统可以使用以下任何一种方式来执行管道:需求驱动管道在需求驱动的管道中,系统反复从操作(在管道的顶部)发出元组请求。每当该操作获得对元组的系统请求时,最初,它都会计算将要返回的下一个元组,然后,此操作将返回所请求...
📅  最后修改于: 2020-12-13 05:19:56        🧑  作者: Mango
查询处理中的流水线在前面的部分中,我们了解了实现,其中我们通过临时关系评估给定表达式中的多个运算。但是,这导致产生大量临时文件的缺点。这会使查询评估效率降低。但是,查询的评估应该在产生有效输出方面非常高效。在这里,我们将讨论另一种评估表达式的多个运算的方法,该方法比实现更有效。这种更有效的方法称为管道。流水线通过减少大量临时文件的产生来帮助提高查询评估的效率。实际上,我们通过将多个操作合并到管道中...
📅  最后修改于: 2020-12-13 05:20:48        🧑  作者: Mango
高级查询优化有许多主题将查询优化推向高级水平。在本节中,我们将讨论一些这样的主题。Top-K优化数据库系统用于从中获取数据。但是,用户已经给出了一些查询,访问结果按某些属性排序,并且对于某些K仅要求前K个结果。而且,某些查询支持bound K或limit K子句,可访问前K个结果。但是,某些查询不支持绑定的K。对于此类查询,优化器会指定一个提示,该提示指示检索到的查询结果应仅是前k个结果。查询是否...
📅  最后修改于: 2020-12-13 05:21:46        🧑  作者: Mango
转换关系表达式优化程序的第一步是实现逻辑上与给定表达式等效的表达式。为了实现这一步骤,我们使用了等效规则,该规则描述了将生成的表达式转换为逻辑上等效的表达式的方法。尽管我们可以通过不同的方式来表达查询,但是费用却不同。但是,为了高效地表达查询,我们将学习创建给定表达式的替代表达式以及等效表达式,而不是使用给定表达式。如果两个关系代数表达式在每个合法数据库实例上生成相同的元组集,则它们是等效的。合法...
📅  最后修改于: 2020-12-13 05:22:44        🧑  作者: Mango
候选密钥候选密钥是一个超级密钥,没有合适的子集是一个超级密钥,即假设如果ABC是候选密钥,那么A,B,C或其任何组合都不是超级密钥,因此我们可以说候选密钥是一个最小集合R(关系模式)的属性的集合,可用于唯一地标识表的元组。要么主密钥的被提名者是候选密钥,例如,移动号码,Aadhar号码,滚动号码都可以充当主密钥的被提名者,因此它们都是候选密钥。如何确定候选密钥给定以下问题中的关系模式R(X,Y,Z...
📅  最后修改于: 2020-12-13 05:23:38        🧑  作者: Mango
属性关闭属性的闭合:属性的闭合可以定义为可以从功能上确定的一组属性。要么FD集合F的闭合是可以从F推断出的所有FD的集合F +涉及F的一组属性X的闭包是在功能上由X确定的所有属性的集合X +伪代码来查找属性的闭包?确定X+,函数依赖集F下X的闭包X闭包:=将包含X本身;重复此过程:旧的X闭包:= X闭包;对于FD集中的每个功能依赖P→Q如果X闭包是P的子集,则X闭包:= X闭包UQ;重复直到(X关...
📅  最后修改于: 2020-12-13 05:24:35        🧑  作者: Mango
BOYCE CODD正常形式的问题要解决有关BCNF的问题,我们必须了解其对BCNF的定义:定义:首先,它应该在3NF中,并且如果两组属性X和Y之间存在非平凡的依存关系,使得X→Y(即,Y不是X的子集),则a)X是超级键3NF和BCNF之间的关系是:所有BCNF均为3NF,但反之亦然。问题:给定一个关系R(X,Y,Z)和功能相关性集合FD = {XY→Z和Z→Y},确定给定的R是否在BCNF中?如...
📅  最后修改于: 2020-12-13 05:25:34        🧑  作者: Mango
标准化问题关于第二范式(2NF)的问题:1.给定一个关系R(A,B,C,D)和功能依赖集FD = {AB→CD,B→C},确定给定的R是否在2NF中?如果不转换为2 NF。解决方案:让我们使用FD在R上构造一个箭头图,以计算候选键。从R上方的箭头图中,我们可以看到属性AB不是由给定的FD所确定的,因此AB将成为候选关键字的组成部分,即无论候选关键字是什么,以及候选关键字是多少是候选键,但全部具有W...
📅  最后修改于: 2020-12-13 05:26:33        🧑  作者: Mango
关于第三范式的问题要解决有关3 NF的问题,我们必须了解这两个定义:定义1:关系模式R据说在3NF中,首先,它应该在2NF中,并且任何非素数属性都不应可传递地依赖于表的键。如果存在X→Y和Y→Z,则X→Z也存在,这是传递依存关系,因此不成立。定义2:首先,它应该在2NF中,并且如果两组属性X和Y之间存在非平凡的依存关系,使得X→Y(即,Y不是X的子集),则X要么是超级键或Y是主要属性。问题1:给定...
📅  最后修改于: 2020-12-13 05:27:27        🧑  作者: Mango
功能依赖定义:如果可以使用第二个FD集确定一组功能依赖关系的右侧,则可以使用两个或两个以上的功能依赖集来等效,而使用第二个FD集可以类似地确定第二个FD集的右侧第一个FD集。Q 1:给定一个关系模式R(X,Y,Z,W,V),其中一组功能依赖项P和Q使得:P = {X→Y,XY→Z,W→XZ,W→V}和Q = {X→YZ,W→XV},使用FD集P和Q下列哪个选项正确?P是Q的子集Q是P的子集P = ...
📅  最后修改于: 2020-12-13 05:28:23        🧑  作者: Mango
参照完整性约束参照完整性约束也称为外键约束。外键是其值从另一个表的主键派生的键。派生值的表称为主表或引用表,而据此插入值的表称为子表或引用表,换句话说,可以说包含外键的表称为子表表,包含主键/候选键的表称为引用表或父表。当我们谈论数据库关系模型时,候选关键字可以定义为一组属性,可以具有零个或多个属性。主表或引用表的语法为:在这里,Roll列充当主键,这将有助于派生子表中外键的值。子表或引用表的语法...
📅  最后修改于: 2020-12-13 05:29:19        🧑  作者: Mango
关于有损和无损分解的问题如果关系模型或关系模式中的关系不是适当的范式,则将关系分解。如果分解是无损连接,则将关系模式R分解/分为两个或两个以上关系。必须满足以下条件:使用功能依赖集检查无损联接分解。1.在采用关系R1和关系R2的属性并集时,必须等于关系R的属性,即关系R的属性必须在关系R1或关系R2中。例如,在添加两个表的属性(不包括重复属性)时,我们应该获得R的总属性。如果这种情况失败了,则无需...
📅  最后修改于: 2020-12-13 05:30:23        🧑  作者: Mango
有损或无损分解(第二种方法)算法:测试无损(非累加)连接属性。输入:一种通用关系R,分解d =R的{R1,R2,R3,… ..室},和函数依赖的一组F。1.具有一个行<em>i</em>用于在<em>d</em>日每个关系,以及用于<em>R</em>各自属性AJ一个列j创建一个初始矩阵<em>S。</em>2.为所有矩阵项<em>设置S(i,j):= bij。</em> (*每个bij是一个与索...