代数查询语言

简介

 为了学习关系上的数据操作,首先要引入一种专门的代数---关系代数,它包含一些简单但是功能强大的方法,可以从给定关系构造出新的关系。当给定关系是真正被系统存储的数据(表)时,构造出的新关系也可以是对这些数据进行查询而产生的结果。 

     那为什么要引入一种新的数据库开发语言,而不能用现有的编程语言,比如C或JAVA,是他们不足以解决关于关系的所有问题吗?其实不是,关系代数之所以有用正式因为它不如C或JAVA强大。比如,判断一个关系中元祖的个数是奇数还是偶数这样的问题就不能用代数直接表达。但是,通过对查询语言做出某些限制,可以获得两个极为有益的回报---可以非常方便的进行开发以及能编译产生高度优化的代码。

关系代数

一门代数总是由一些操作符和一些原子操作数组成,比如,算数代数中的原子操作数是像变量x和常量15这样的操作数,而加,减,乘,除是其中的操作符。任何一门代数都允许吧操作符作用在原子操组数或者是其他代数表达式上构造表达式。

关系代数是另一门代数,它的原子操作数是代表关系的变量和代表有限关系的常量,它的操作包括以下四类:

1 通常的关系操作:并,交,差 R∪S={t|t∈R∨t∈S} R-S={t|t∈R∧t∉S} R∩S={t|t∈R∧t∈S},需要注意,R和S必须是具有同样属性集合的表,同时,各个属性类型也必须匹配。

2 除去某些行和某些列的操作,“选择”是消除某些行,而“投影”是消除某些列 。投影(projection)操作用来从关系R生成一个新的关系,这个关系只包含原来关系R中的部分列,操作符用π_{A_{1},A_{2},...A_{n}}(R)表示。选择操作产一个关系R的元组的子集合,结果关系的元组必须满足某个涉及R中属性的条件C,该操作表示为σ_{C}(R)

3 笛卡尔积,关系R 和S的笛卡尔积是一个有序对的集合,有序对的第一个元素是关系R中的任何一个元组,第二个元素是关系S中的任何一个元组,表示为R ×S

4 自然连接(nature join),关系R和S的自然连接表示为R⋈S,此操作仅仅把在R和S模式中有某共同属性,且此属性有相同的值的元组配对。

5 θ连接(theta-join),和自然连接类似,但可以指定任意条件,关系R和关系S满足条件C的θ连接可以表示成R⋈_{C}S,这个操作的结果是这样构造的,先得到R和S的笛卡尔积,在管道的关系中寻中满足条件C的元组

6 组合操作,只能在单个或两个关系上进行一个操组,那么关系代数就不会那么有用。但关系代数允许任意复杂的表达式,其操作符可以作用于任何关系之上,这个关系既可以是某个给定关系,也可以是操作得到的结果关系。

7 重命名操作,防止连接查询后有命名冲突,实际上不改也没太大影响。

操作之间有一定的联系,其中:

R∩S=R-(R-S)

R⋈S =  π_{L}(σ_{C}(R × S)),其中,L是所有R中的属性和在S中但不在R中的属性的列表,C是R.A_{1}=S.A_{1}   AND  R.A_{2} = S.A_{2}   AND...AND  
  R.A_{n}=S.A_{n}

关系上的约束

约束也可以用关系代数来表示,场景的几种约束如下

引用完整性约束(referential integrity constraint)是一种普通约束,它规定谋个上下文中出现的值也必须在另外一个相关上下文中出现,比如π_{A}(R) ⊆π_{B}(S)

键约束,关系的键约束代表关系中的这一列没有重复的值。举个例子,假设name是MovieStar(name,address,gender,birthdate)的键,这意味着没有任何两个元组在分量name上有相同的值。这里包含的一个事实是,如果关系的某两个元组在属性name上具有相同的值,则他们的属性分量address也必定有相同的值,可以表示为σ_{MS1.name = MS2.name AND MS1.address \neq MS2.address}(MS1\times MS2) = \phi

领域约束,比如某个字段只能取整数,或者布尔类型等,举个例子σ_{gender \neq  F AND gender \neq  M}(MovieStar) = \phi

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容