<wbr><wbr><wbr><wbr><wbr>用户(处于逻辑层、视图层):数据库管理系统(DBMS)的主要目的:为用户提供虚拟视图,隐藏数据存储和维护的物理细节,主要体现出方便和高效的特征。<br><wbr><wbr><wbr><wbr><wbr>1、方便:即提供一致、灵活的操作手段,解决查询问题——对应的结构部件为:DDL、DML解析器及执行解析玩命令的查询执行引擎。<br><wbr><wbr><wbr><wbr><wbr>2、高效:数据的合理存储,建立高效的索引机制,缓冲机制——对应结构部件为:事务管理器、存储管理器、缓存管理器等。<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>设计者(处于物理层):对于设计人员而言,要清楚的了解是如何实现存储和维护的。更加透彻的了解数据模型,尤其是关系模型、对象模型和记录模型。</wbr></wbr></wbr></wbr>
查询的本质:关系运算
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>——SQL的基础<br><wbr><wbr>操作关系数据库最常用的方法就是使用SQL(结构化查询语言),它直观、易用,这些特征是描述语言的特性,描述语言是为了讨好客户,使其不用长时间的培训即可使用。而这些描述语言的实现,还是要通过基础的程序化运算实现,这些基本的运算就是关系代数运算,是具体实现代码的理论基础。<br> 一、关系代数法<br> 关系数据库建立的基础是关系代数,其中最有价值的是其定义的一系列操作,作为SQL语言的基础:<br> (所有操作都是基于单个关系表的,如果计算设计两个表,则先将表进行连接操作)<br><wbr><wbr><span style="word-wrap:normal; word-break:normal; line-height:21px; font-weight:bold">基本运算</span>:<br><wbr><wbr><wbr><wbr>1、选择:(即行选择)从多个关系元组中,根据某些属性的限制条件,筛选出一部分元组;<br><wbr><wbr><wbr><wbr>2、投影:(即列选择)从关系中的所有属性中,抽取出所需的属性;<br><wbr><wbr><wbr><wbr>3、并操作:(即对相容的两个关系进行合并)首先,相容的条件是:属性数目相同且两个关系的第i个属性必须同域(i为任意第几个属性);<br><wbr><wbr><wbr><wbr>4、集合差:(相容的两个关系的差);<br><wbr><wbr><wbr><wbr>5、笛卡尔积运算(即交叉串接):一个关系中的每个元组都和另一个关系中的元组进行串接,形成一个新的元组,对于来源关系中同名的属性,采取关系名+属性的方式进行区分。(两个关系表的每个元组都需要一一比较时,都需要用到笛卡尔积运算)<br><wbr><wbr><wbr><wbr>6、更名运算(在关系代数和数据库关系之间建立联系)更名运算负责给一个关系代数运算式赋予名字,并且每个属性赋予名字,从而成为一个数据库关系表。比如,可以借助更名运算,计算关系和自己的笛卡尔积。<br><wbr><wbr>注:如上6中运算可以表达任何关系运算,但是,有些复杂运算会使得表示极其麻烦,因此,引入附加表达式:<br><wbr><wbr><wbr><wbr><span style="word-wrap:normal; word-break:normal; line-height:21px; font-weight:bold">附加运算:</span><br><wbr><wbr><wbr>1、集合交:(即选出两个相容的关系中的共同元组)<br><wbr><wbr><wbr>2、自然连接操作:(即笛卡尔积操作复杂性的一种简化)找出两个关系中的共有属性,并且将两个关系中共有属性值相等的元组选择出来。<br><wbr><wbr><wbr>3、除运算(一个属性值集合(R—S属性),对应的另一个属性的集合(S属性)是否可以整除一个该属性的子集(S属性),如果可以返回该属性集合):找出拥有全系列产品“所有”产品的客户。这个“所有的”集合(S),就是除数。<br><wbr><wbr><wbr>4、赋值运算:将一个关系临时保存为另一个关系,即中间变量,目的是方便关系的运算。<br><br><wbr>二、元组关系演算(注:具有关系运算具有等价的效果)<br><wbr><wbr><wbr><span style="word-wrap:normal; word-break:normal; line-height:21px; font-weight:bold">元组关系演算(元组关系运算):</span>我们查询的目的是获取元组的集合,则表达式为:<br><wbr><wbr>{t|P(t)}<wbr><wbr><wbr>表示:满足条件P(t)的元组的集合。而P(t)即为谓词逻辑表达式(具体内容可参见离散数学和数理逻辑的书籍)<br><wbr>三、域关系演算(每个属性域作为演算对象:同关系运算、元组运算等价)<br><wbr><wbr><wbr><wbr>域演算的形式:<br><wbr><wbr><wbr><wbr><wbr>{<x1,x2,x3....xn>|P(x1,x2,x3,x4...xn)}<br><wbr><wbr><wbr><wbr>结论为域向量(关系)的集合,该集合满足谓词条件P。<br> 注:三种方式的不同点为:计算的实体不同,一:关系;二:元组;三:属性域。<br><wbr><wbr><wbr><br> 扩展一:<span style="word-wrap:normal; word-break:normal; line-height:21px; font-weight:bold">关系代数的扩展</span><br><wbr><wbr><wbr>扩展一:将算数运算融入到关系代数运算中,比如聚集计算;<br><wbr><wbr><wbr>扩展二:外连接运算,可以处理缺失信息的空值。<br><wbr><wbr>1、广义投影:允许投影条件中,进行算数运算。比如,求两个属性的差值。<br><wbr><wbr>2、外连接(防止自然连接,因为null值而造成元组的丢失):具有,左外连接、右外连接和全外连接。<br><wbr><wbr>对于自然连接的不匹配元组,左外连接:保留左边的条目,右侧属性用null填充;右外连接相反;全外连接为两者的合并。<br><wbr>3、聚集操作(融合操作):比如,求和,计算出现次数等。这是个集合操作,需要去除重复项目。<br> 扩展二:<span style="word-wrap:normal; word-break:normal; line-height:21px; font-weight:bold">数据库的修改</span><br><wbr>数据库修改实现方式:通过运算得到新的关系,而后使用赋值运算将新关系替换成老关系。而这些运算就可以表达:删除(差操作),添加(并操作)、更新(投影操作)。<br> 扩展三:<span style="word-wrap:normal; word-break:normal; line-height:21px; font-weight:bold">使用视图定制关系表</span><br><wbr><wbr>视图是一种通过关系运算得来的新的关系表。这些表可以隐藏很多信息,支持为专门的用户提供特定的视图。<br><wbr><wbr><wbr><br><wbr><span style="color:rgb(62,115,160); font-family:微软雅黑,黑体; font-size:19px; font-weight:300; line-height:20px; background-color:rgb(188,211,229)">SQL之外的查询语言</span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
SQL:使用了关系代数和关系演算结构的组合。