数据库管理系统(DBMS)理解及实现

身份不同要对DBMS有不同的认识:
<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>{&lt;x1,x2,x3....xn&gt;|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:使用了关系代数和关系演算结构的组合。

<wbr><wbr><wbr><wbr><wbr>select:投影运算;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>from:帝卡尔积的方式表示扫描对象;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>where:条件谓词。</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>as:更名操作;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>order by:指出根据那个属性排列顺序;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>all修饰付:用来表示查询结果中不消除重复元组;和select以及关系运算符Union等操作关键词之后使用;</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>其他:聚集操作关键字(count,avg)集合操作付(union,intersect等)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>嵌入关键字:in</wbr></wbr></wbr></wbr>
<wbr><wbr>嵌入式语言:即对SQL语言的扩展,使其可以在程序代码中使用,最典型的应该是PL/Sql (Oracle公司)。</wbr></wbr>
重点:其他查询语言
<wbr><wbr><wbr>1、QBE(Query By Example)基于域关系演算之上</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>用一个表格表示查询框架(关系例子:表示from的功能),每个域上(元组的一个列上)都可以填充条件。同时,每个域也都可以表示为一个变量,通过condtion关键字表示任何条件。</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>2、Quel:基于元组关系演算之上</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>range of:表示一个关系中的元组;</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>retrieve:相当于SQL中的Select,之后可以接融合操作关键字(比如 avg等)</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>where:同上</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>(该类查询语言,是简历在元组运算之上的,等价于域运算和关系代数运算)</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>3、DATALOG(基于逻辑编程语言prolog的非过程化数据查询语言)</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr>基于规则的推理框架,仅仅是研究型系统,没有实用化。</wbr></wbr></wbr></wbr></wbr>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值