数据库关系代数运算

<p><span style="font-size: 12px;">转自<a href="https://blog.csdn.net/zdplife/article/details/48060461" target="_blank">数据库-关系代数(类型、完整性约束、基本运算、扩展运算)</a></span></p> <h3><span style="font-size: 16px;">(1)基本概念</span></h3> <h4>&nbsp;&nbsp; &#9312; 属性和域:</h4> <p>&nbsp;&nbsp;&nbsp; 每一个事物有不少属性,每一个属性对应的取值范围叫作域,全部对域都是原子数据(第一范式)</p> <h4>&nbsp;&nbsp; &#9313; 相关名词</h4> <p>&nbsp;&nbsp;&nbsp; n元关系:R(D1,D2,D3...Dn)是n元关系,其中关系属性的个数称为&#8220;元数&#8221;,元组的个数称为&#8220;基 数&#8221;,也就是记录值。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;候选码:若关系中某一个属性或者属性组的值能够惟一的标识一个元组,则称为候选码</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;主码:能够选择任意一个候选码做为主码</p> <p>&nbsp;&nbsp;&nbsp; 主属性:包含在任何候选码中的属性叫做主属性</p> <p>&nbsp;&nbsp;&nbsp; 全码:关系模型中全部属性都是这个关系模型的候选码,称为全码</p> <p>&nbsp;&nbsp;&nbsp; 外码:关系模式中的属性非该关系的码,则称为外码</p> <h4>&nbsp;&nbsp;&nbsp; &#9314; 三种类型:</h4> <p>&nbsp;&nbsp;&nbsp; 基本表:实际存在的表</p> <p>&nbsp;&nbsp;&nbsp; 查询表:查询结果对应的表</p> <p>&nbsp;&nbsp;&nbsp; 视图表:由基本表和其余视图表导出的表,不是实际存在数据库中</p> <h4>&nbsp;&nbsp;&nbsp; &#9315; 完整性约束:</h4> <p>&nbsp;&nbsp;&nbsp; 实体完整性:主属性A不能为空值</p> <p>&nbsp;&nbsp;&nbsp; 参照完整性:用实体之间的关系来描述,若F是关系R的外码,则F或者是空值,或者是某个元组的 &nbsp;&nbsp;&nbsp;主码值</p> <p>&nbsp;&nbsp;&nbsp; 用户定义完整性:根据具体关系数据的约束条件,好比数据范围等</p> <h3>(2)关系五种基本运算</h3> <h4>&nbsp;&nbsp;&nbsp; &#9312; 并:</h4> <p>&nbsp;&nbsp;&nbsp; R,S具备相同的关系模式(元素相同,结构相同),记为R&nbsp;U&nbsp;S,返回由R或者S元组构成的集合组成</p> <h4>&nbsp;&nbsp;&nbsp; &#9313; 差:</h4> <p>&nbsp;&nbsp;&nbsp; R,S具备相同的关系模式(元素相同,结构相同),记为R-S,右属于R但不属于S的元组组成</p> <h4>&nbsp;&nbsp;&nbsp; &#9314; 广义笛卡尔积:</h4> <p>&nbsp;&nbsp;&nbsp; R&#215;S由n目和m目的关系R,S组成一个(n+m)列的元组集合,若R有K1个元组,S有K2个元组,则R&#215;S有K1*K2个元 组</p> <h4>&nbsp;&nbsp;&nbsp; &#9315; 投影(&#960;)&nbsp;:</h4> <p>&nbsp;&nbsp;&nbsp; 从关系的垂直方向开始运算,选择关系中的若干列组成新的列。</p> <h4>&nbsp;&nbsp;&nbsp; &#9316; 选择(&#963;):</h4> <p>&nbsp;&nbsp;&nbsp; 选择从关系的水平方向进行元算,选择知足给定条件的元组组成新的关系。</p> <h3>(3)扩展的关系代数运算</h3> <h4>&nbsp;&nbsp;&nbsp; &#9312; 交:</h4> <p>&nbsp;&nbsp;&nbsp; R&#8745;S=R-(R-S),R,S具备相同的关系模式</p> <h4>&nbsp;&nbsp;&nbsp; &#9313; 连接:</h4> <p>&nbsp;&nbsp;&nbsp; 连接分为&#952;连接,等值连接和天然连接</p> <p>&nbsp;&nbsp;&nbsp;&#952;连接:从R,S的笛卡尔积中选择知足必定条件的元组</p> <p>&nbsp;&nbsp;&nbsp;等值连接:当&#952;为&#8220;=&#8221;时为等值连接</p> <p>&nbsp;&nbsp;&nbsp;天然连接:是一种特殊的等值连接,比较的份量必须是相同的属性组,并在结果集中去掉重复列,若是没有重复列,天然连接就转换为笛卡尔积</p> <h4>&nbsp;&nbsp;&nbsp; &#9314; 除:</h4> <p>&nbsp;&nbsp;&nbsp; 同时从水平方向和垂直方向进行运算,给定关系R(X,Y)和S(Y,Z),X,Y,Z为属性组,R&#247;S应当知足在X上的份量值x的像集Yx包含关系S在属性组Y上的投影集合:</p> <p>例如:</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R是:</p> <table align="center" frame="border" style="margin-left:200px"> <tbody> <tr> <td valign="middle" align="center" style="width: 100px"> A </td> <td valign="middle" align="center" style="width: 100px"> B </td> <td valign="middle" align="center" style="width: 100px"> C </td> <td valign="middle" align="center" style="width: 100px"> D </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> <td align="center"> c </td> <td align="center"> d </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> <td align="center"> e </td> <td align="center"> f </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> <td align="center"> h </td> <td align="center"> k </td> </tr> <tr> <td align="center"> b </td> <td align="center"> d </td> <td align="center"> e </td> <td align="center"> f </td> </tr> <tr> <td align="center"> b </td> <td align="center"> d </td> <td align="center"> d </td> <td align="center"> l </td> </tr> <tr> <td align="center"> c </td> <td align="center"> k </td> <td align="center"> c </td> <td align="center"> d </td> </tr> <tr> <td align="center"> c </td> <td align="center"> k </td> <td align="center"> e </td> <td align="center"> f </td> </tr> </tbody> </table> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S是:&nbsp;&nbsp;</p> <table align="center" style="width: 97px; height: 118px;margin-left:250px" frame="border"> <tbody> <tr> <td valign="middle" align="center" style="width: 100px"> C </td> <td valign="middle" align="center" style="width: 100px"> D </td> </tr> <tr> <td align="center"> c </td> <td align="center"> d </td> </tr> <tr> <td align="center"> e </td> <td align="center"> f </td> </tr> </tbody> </table> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;则R&#247;S:&nbsp;&nbsp;&nbsp;&nbsp;</p> <table align="center" style="width: 99px; height: 118px;margin-left:250px" frame="border"> <tbody> <tr> <td valign="middle" align="center" style="width: 100px"> A </td> <td valign="middle" align="center" style="width: 100px"> B </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> </tr> <tr> <td align="center"> c </td> <td align="center"> k </td> </tr> </tbody> </table> <h4>&nbsp;&nbsp; &#9315; 广义投影:</h4> <p>&nbsp;&nbsp;&nbsp;&nbsp; 广义投影运算允许在投影列表中使用算法运算,实现对投影运算的扩充,投影出的列不必定是原来的列,能够是经过计算出来的列。</p> <h4>&nbsp;&nbsp;&nbsp; &#9316; 外链接:</h4> <p>&nbsp;&nbsp;&nbsp;&nbsp; 因为天然连接会丢失一些信息,而外连接能够处理因为连接运算而缺失的信息,外连接分为左外连接、右外连接、全外连接。</p> <p>&nbsp;&nbsp;&nbsp; 左外连接:取出左侧关系中全部与右侧关系中任一元素都不匹配的元组,用null来填充右侧的关系 属性。</p> <p>&nbsp;&nbsp;&nbsp; 右外连接:取出右侧关系中全部与右侧关系中任一元素都不匹配的元组,用null来填充左侧的关系属性。</p> <p>&nbsp;&nbsp;&nbsp; 全外连接:完成左外连接和右外连接的操做。</p>算法

相关文章
相关标签/搜索