i=(--a==b)?--a:b表达含义(2篇)
时间:2024-08-25 16:51:01 来源:网友投稿
篇一:i=(--a==b)?--a:b表达含义
布尔逻辑运算式a-b的含义
布尔逻辑运算式a-b的含义可以分为以下两种情况:
1.如果a和b都是布尔值(即True或False),则a-b的含义是求布尔值之间的差。在布尔逻辑中,True被表示为1,False被表示为0,所以a-b的结果为1-0=1或者0-1=-1,即True或False。
2.如果a和b是其他的数据类型(例如整数、浮点数、字符串等),则a-b的含义是进行减法运算。这时,a和b的值会根据其所属的数据类型进行相应的运算。例如,如果a和b都是整数,那么a-b表示整数的减法运算;如果a和b都是字符串,那么a-b表示字符串的减法运算,即对字符串进行删除或替换操作。
需要注意的是,布尔逻辑运算式a-b不是常见的逻辑运算,可能在不同的编程语言或上下文中有不同的定义和含义。因此,在具体的应用中,需要根据具体的语法规则和语义约定,确定a-b的实际含义。
篇二:i=(--a==b)?--a:b表达含义
第二章
教学目的:
本章实际上研究的是关系的运算。
学习目的:
关系代数
关系运算是设计关系数据库操作语言的基础,因为其中的每一个询问往往表示成一个
关系运算表达式,在我们的课程中,数据及联系都是用关系表示的,所以实现数据间的联
系也可以用关系运算来完成。
通过本章学习,应重点掌握:
(1)
(2)
(3)
(4)
(5)
关系数据库的基本概念;
如何用关系代数表达式来表达实际查询问题;
如何用元组演算表达式来表达实际查询问题;
如何用域演算表达式来表达实际查询问题;
如何将关系代数表达式转换为元组演算表达式或转换为域演算表达式。
了解和掌握关系数据结构中涉及到的域、笛卡儿积、关系模式等有关内容的含义;
掌握关系的实体完整性和参照完整性的定义;
掌握关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。
教学重点:
关系的实体完整性和参照完整性的定义;
关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。
教学难点:关系代数中的并、交、差、笛卡儿积运算,以及选择、投影和连接运算。
教学方法:实例法
教学内容:如下:2.1关系模型
关系模型是一种简单的二维表格结构,每个二维表称做一个关系,一个二维表的表头,即所有列的标题称为一个元组,每一列数据称为一个属性,列标题称估属性名。同一个关
系中不允许出现重复元组和相同属性名的属性。
1?关系模型组成
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系操作分
为两大部分如图所示。
查询
选择Select投影Project连接Join除Divide并Union交
其它
增加Insert删除Delete修改Update
IntersectionDifferenee
差
2.关系操作的特点
关系操作的特点是操作对象和操作结果都是集合。而非关系数据模型的数据操作方式
则为一次一个记录的方式。
关系数据语言分为三类:
(1)
(2)
(3)
关系代数语言:如ISBL;关系演算语言:分为元组关系演算语言(如Alpha,Quel)、域关系演算语言(如QBE);具有关系代数和关系演算双重特点的语言:如
SQL3.关系数据结构及其形式化定义
(1)
域
定义
域是一组具有相同数据类型的值的集合。
(2)
笛卡尔积
定义
设D,D2,D,…,D,为任意集合,定义
DiD,D2,D,…,Dn的笛卡尔积为
xD2xD3x-xDn={(di,d2,d3,…dn)[di€Di,i=1,2,3…,n]其中每一个元素(dl,d2,d3,…,dn,)叫做一个n元组(n一tuple)或简称为元组(Tuple),每一个值di叫做一个分量(Component),若Di(i=l,2,…n)为有限集,其基数(Cardinalnumber)为mi(i=l,2,3,…,n),n则DxD2xDx???xDn的基数M为M=门mii3笛卡尔积可以用二维表来表示。
例D仁{0,1},D2={a,b,c}则:D1xD2={(0,a),(0,b),(0,c),表来表示,如图2—
(1,a),(1,b),(1,c)}用二维
2所示。
D
00011(3)关系的形式化定义及相关名词
定义D1x
D2abcabc
D2xDx???xDn的子集叫做
在域D,D2,D3,…,Dn上的关
系,用R(D1,D2,D3,…,Dn),称关系R为n元关系。
候选码
若关系中的某一属性组的值能惟一的标识一个元组,则称该属性组为候选码
(CandidateKey)。
主码
若一个关系有多个候选码,则选定其中一个为主码
的所有属性组是这个关系模式的候选码,称为全码
—key)(4)关系的三种类型
基本关系(通常又称为基本表或基表),是实际存在的表,它是实际存储数据的逻辑
表示
查询表,查询结果对应的表
视图表,是由基本表或其他视图表导出的表,也常称为虚表
(5)基本关系有以下五条性质
每一列中的分量必须是同一类型的数据,来自同一个域
属性不能重名
行列的顺序无关
任何两个元组不能完全相同
每一个分量必须是不可再分的数据项
3.关系完整性
关系模型的完整性规则是对关系的某种约束条件。关系的完整性共分为三类:实体完整性、参照完整性、用户定义完整性。
(1)
实体的完整性(EntityIntegrity)规定:若属性A是基本关系R的主属性,则属性A不能取空值。即主属性不能为空。
(2)
参照的完整性(ReferentialIntegrity)规定:若F是基本关系R的外码,它与基
本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系)则对于R中每个元
组在F上的值必须为:
①或者取空值(F的每个属性值均为空值);即外码可以为空
(PrimaryKey)。主码诸属
(All性称为主属性。不包含在任何候选码中的属性称为非码属性(Non—Keyattribute)。关系模型
②或者等于S中某个元组的主码值。
(3)
用户定义的完整性(UserdefinedIntegrity):就是针对某一具体的关系数据库的约束条件,由应用的环境决定。
4.关系模式
在数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库
的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这
些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
定义
关系的描述称为关系模式(RelationSchema)。可以形式化的表示为
R(U,D,dom,F)其中,R表示关系名;U是组成该关系的属性名集合;
映像集合;F为属性间数据的依赖关系集合。
通常将关系模式简记为:
R(U)或R(AI,A2,A3,…,An。)其中R为关系名,A1,A2,A3,…,An。为属性名,域名、属性向域的映像常常直接
说明属性的类型、长度。
例
定义学生与课程关系模式及主码如下:
(1)
S(Sno,Sname,SD,SA)Key(Sno)(2)
C(Cno,Cname,PCno)Key(Cno)Dom(PCno)=Cno这里,Pcno是先行课程号,来自Cno域,但由于Pcno属性名不等于Cno值域名,所以
要用Dom来定义。
能否将Pcno直接改为Cno呢?
不能,因为在关系模型中,各列属性必须取相异的名字。
(3)
SC(Sno,Cno,Grade)Key(Sno,Cno)S、C关系中的主码。
其中,SC关系中的Sno、Cno又分别为外码。因为它们分别是
D是属性的域;dom是属性向域的2.2关系代数
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。它是用
对关系的运算来表达查询的。
关系运算符有四类:集合运算符,专门的关系运算符,算术比较符和逻辑运算符,如图2—3所示。
运算符
含义
并
运算符
>比较
运算符
含义
大于
大于等于
小于
小于等于
等(不等)于
非
与
或
集合
运算符
-
差
交
<=工
专门的X兀
笛卡尔积
选择
投影
连接
关系运
算符
逻辑
运算符
AV
十
除
根据运算符的不同,关系代数运算可分为传统的集合运算和专门的关系运算。
1?传统的集合运算
传统的集合运算是从关系的水平方向进行的,主要包括:并、交、差及广义笛卡尔积。
(1)
并(Union);关系R与S的并记作:
RUS={tRVtS}(2)
差(Differenee);关系R与S的差记作:
R-S={t二
RAt-S}
(3)
交(Interseetion)RAtS};关系R与S的交记作:
R"S={t(4)
广义笛卡尔积(ExtendedCartesianProduct);两个分别为n目和m目的关系R和S的广义笛卡儿积是一个(n+m)列的元组的集合。元
组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有K1个元组,S有K2个元组。则R和S的广义笛卡儿积有
RXK1XK2个元组。记作:
S={trts-|trRAtsS}2?专门的关系运算
专门的关系运算既可以从关系的水平方向进行运算,又可以向关系的垂直方向运算。
1)选择(Selection);
选择运算是从关系的水平方向进行运算,是从关系
记作:
-FR中选择满足给定条件的诸元组,(R)={t[A]|tRAF(t)="真’}R中选择出若干属性列组成新的关系,(2)投影(Projection);投影运算是从关系的垂直方向进行运算,在关系
记作:
■:A(R)={t[A]|tR}⑶连接(Join);
连接分为:V连接、等值连接及自然连接三种,分述如下:
①二连接:它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:
R>S{trts|tRAtSAtr[A]0ts[B]}A*B
=
=
{tGs|tERAts^SAtr[A]=ts[B]}自然连接:是一种特殊的等值连接,它要求两个其中:二是比较运算符,A和B分别为R和S上度数相等,且可比的属性组。
②等值连接:当
二为“=”时,称之为等值连接,记为:
R関
③属性组B,则自然
连接可以记为:
RS={t7ts|tr三
RAtSAtr[B]=ts[B]}④
特别需要说明的是:一般连接是从关系的水平方向运算,而自然连接不仅要从关系
的水平方向,而且要从关系的垂直方向运算。因为自然连接要去掉重复属性,如果没
有重复属性,那么自然连接就转化为笛卡尔积。
(4)
除(Division);除运算是同时从关系的水平方向和垂直方向进行运算。
给定关系R(X,Y)和S(Y,Z),X,Y,Z为属性组。R-S应当满足元组在X上的分量值x的像集Yx包含S在Y上投影的集合。记作:
R-S={tr[X]|trRA二
y[S](5)
需要注意的四个问题:
①关系代数的五个基本操作为:并、差、笛卡尔积、投影和选择。其它的操作都可以
由5个基本的操作导出,因此它们构成了关系代数完备的操作集。
例如两个关系R与S的交运算等价于:
Yx}其中:Yx为x在R中的像集,x=tr[X]。且R-S的结果集的属性组为X。
A=B关系中进行比较的分量必须是相
同的属性组,并且在结果中将重复属性列去掉。
若R和S具有相同的R-S=R一(R—S)或
R"S=S一(S—R)所以交运算不是一个独立的运算。
②关系代数在使用的过程中对于只涉及选择、投影、连接的查询可用表达式:
二A1,…AK(;「F(SR))l或二A1,…AK(匚
F(SXR))③
对于否定操作,一般要用差操作表示,例如不学“操作系统”课的学生姓名,通常
不要用如下的形式表示:
兀
Sname(bCnam辱"操作系统")(SSCCXC而采用如下形式:
二Sname-二Sname(二Cname="操作系统")"("SSC"C)④
对于检索具有全部特征的操作,一般要用除法操作表示,例如查询选修全部课程的学生学号。通常)不要用如下的形式表示;
二Sno,Cno(SC—二Cno(C))而采用如下形式:
二Sno,Cno(SC)—二Cno(C)2.3关系演算
关系演算分为元组演算和域演算,下面分别介绍。
元组演算
在元组演算中,其元组表达式中的变量是以
为单位元组
的,其一般形式为:
ABC{t|P(t)}abc其中:t是元组变量,P(t)是关系演算公式。
下面将cde五种基本的关系运算用元组演算表
表示如下。
达式
(1)
并RUS={t|R(t)VS(t)}(2)
差R-S={t|R(t)-S(t)}(3)
笛卡尔积
RxS={t(n+m)|(u(n))(-Iv(m))(R(u)S(v)t[1]=u[1]…t[n]=u[n]t[n+1]=v[1]…
t[n+m]=v[m])}RxS后生成的新关系是n+m目关系。
⑷投影
二i1,i2,…,ik(R)={t(k)|(u)(R(u)u([ik]))t[1]=u[i1]…t[k]=(5)
选择
-(R)={t|R(t)F}域演算
在域演算中,表达式中的域变量是表示域的变量,可将关系的属性名视为域变量,域
演算表达式的一般形式为:
{t1,……,tk|P(t1,……,tk)}其中,11.......................tk是域变量,P(t1.........................t
k)是域演算公式。
关系代数、元组演算、域演算三类关系运算的表达能力是等价的,可以互相转换。可
以证明如下三个结论:
(1)
每一个关系代数表达式有一个等价的安全的元组演算表达式;
(2)
每一个安全的元组演算表达式有一个等价的安全的域演算表达式;(3)
每一个安全的域演算表达式有一个等价的关系代数表达式。
2—1设有关系R,S如图2—4所示。
请求出:RUSR—S,RcS,RxS,兀
A,C(R),aA>B(R)。
RSABCABCabcbadbaddfgcdefhk
dfg
解RUS,R—S,R"S,RXS,二
A,C(R),:二A>B(R)如图所示:ABCabcRUSbadcdedfg
fhkABCACb;S
d
ac
cdebdce
dg—S
R
A
BaR.CcccdddeeegggS.AbdfbdfbdfbdfCdS.BafhafhafhafhS.CdgkdgkdgkdgkbR.AaaabbbcccdddR
八
R.Bbbbaaadddfff
二
A,c(R)
匚
A>B(R)例2—
2设有关系R,S如图2—4所示,求:H RAabc SBbadfCcdeg AbdfBafhCdgkd解 本题的F公式为R.A 结果集的前三个属性为: 结果集的后三个属性为: 结果如图所示。 R.Aaa R.A,R.B,R.CS.A,S.B,S.CR.CcccS.AdfdS.BfhfS.CgkgR.Bbba b bccddaddffdeeggfdfdfhfhfhkgkgk例2-3设有关系R,S如图2-7所示,求:Rg RAABCD SCCDEGk BBADFhAadcbCcfedDdgkg f解 本题要求R与S关系的自然连接,自然连接是一种特殊的等值连接,它要求两个 关系中进行比较的分量必须是相同的属性组,并且在结果中将重复属性列去掉。 本题R与S关系中相同的属性组为AC,因此,结果中的属性列应为: 的像集Yx包含S在Y上投影的集合。而结果集的属性为 ABCD其结果如图2—8所示。 ABo分析1根据除法定义,此题的X有属性AB,Y有属性CD那么,R+S应当满足元组 在X上的分量值x例2-4设有关系R,S如图2-9所示,求:R-SAaaabbc RBbbbddkkRSAabcBbadSCcehedce.CcdeDdgkDdfkfldf CceDdfc分析1根据除法定义,此题的X有属性AB,Y有属性CD,那么,R+S应当满足元组在X上 ABo的分量值x的像集Yx包含S在Y上投影的集合。而结果集的属性为 分析2在关系R中,属性组X(即AB)可以取3个值{(a,b),(b,d),(c,k)},其中: (a,b)的像集为:{(c,d),(e,f),(h,k)}(b,d)的像集为:{(e,f),(d,1)} (c,k)的像集为:{(c,d),(e,f)}分析3S在Y(即CD)的投影为{(c,d),(e,f)}从上分析可以看出,只有(a,b),(c,k)包含了S在Y(即CD)的投影,所以,R-S={(a,b),(c,k)}o结果如图所示: Aa BbkcR—S例2—5设有学生课程数据库中包含三个关系:学生关系 S、课程关系C、学生选课关系 SC如图2—11(a),(b),(c)所示。请用关系代数表达式、元组演算表达式查询如下问题: Cno123456Cname数据库 数学 操作系统 数据结构 数字通信 信息系统 程序设计 C Pcno347612Credit3443342Sno3001300130013002300210421042Cno1232312SCGrade93848483938482Sno300130024003400410411042Sname王平 张勇 黎明 刘明远 赵国庆 樊建玺 Sex女 男 女 男 男 男 SSD计算机 计算机 机械 机械 通信 通信 Age181918192020(1)检索选修课程名为“数学”的学生号和学生姓名 解:检索选修课程名为“数学”的学生号和学生姓名: ①关系代数表达式为: 兀 Sno,Sname(Cname=数学"SCXC))因为S竝 K为自然连接,所以去掉重复列后的结果如图 Sno3001(a),(b)所示。 Grade9384Cname数据库 数学 Sname王平 王平 Sex女 女 SD:计算 机 Age1818Cno12Pcno3Credit34300130013002300210421042王平 张勇 张勇 樊建玺 樊建玺 女 男 男 男 男 计算 机 计算 机 计算 机 计算 机 通 信 通 1819192020323128483938482操作系统 数 学 44344434操作系统 数据库 数 学 (a)Sno300130021042(b)Sname王平 张勇 樊建玺 从图中可见我们可将上述的关系代数表达式写为:Cno123456Cname数据库 数学 操作系统 数据结构 数字通信 信息系统 程序设计 Pcno347612Credit3443342Sno3001300130013002300210421042Cno1232312Grade938484839384827-1,2(-8="数学’(SSC一C)) ②元组演算表达式为: {t|(="数学"u)(t[l]=u(l)有 SSex女 男 女 男 男 男 ‘ v)(-1w)S(u)SC(v)C(w)u[1]=V[1] v[2]=w[1]w[2]t[2]=u[2]}s, 例2—6给定学生数据库, SC,C三个关系如图2—11所示: SD计算机 计算机 机械 机械 通信 通信 Age181918192020Sno300130024003400410411042Sname王平 张勇 黎明 刘明远 赵国庆 樊建玺 2. 4查询优化 查询实例 要查询学生“李明”选修的所有课程的成绩。有几种查询表示: E1=nscore(E2=nscore(E3=nscore(s.sno=sc.snoANDs.sname=s.sname="李明”(Student)SC)"李明”(StudentxSC))s.sname="李明”(StudentSC))喘 比较三种查询实现 我们希望在系统开销尽量小的情况下对查询进行尽可能的优化,一般采用以下策略: 1?选择运算尽早进行。 2?投影运算与选择运算同时进行。 3. 将笛卡尔积与随后的选择运算合并为连接运算。 4?投影运算与其他运算同时进行。 5?寻找公共子表达式并将结果存储。 6.对文件进行预处理。 关系代数的等价变换 关系代数表达式的优化是查询优化的重要基础。 所谓关系代数表达式的优化,就是要按照一定的等价变换规则将其转换为查询效率更高的表达式。 查询优化步骤 1.把查询转换成一种内部表示 通常采取的内部表示曾经提到的表达树形式。 E1=nScore( 2.利用关系代数等价变换规则以及查询优化的一般策略,将语法树进行优化 该尽量先做。根据等价变换规则第 3. 选择适当的低层存取路径 所谓选择低层存取路径,指的就是要充分利用数据库中已有的索引等信息。假如选择 条件或连接条件所涉及的属性上有索引,那么利用该索引进行存取就可以节省很多时间,这也能提高查询的效率。 4. 生成一组查询计划,从中选择一个代价最小的。 所谓查询计划就是一个完整的数据库内部查询过程,它按照某种存取路径来计算关系 代数表达式的结果。 我们可以有一组查询计划供选择;例如某个关系是无序的,选择条件涉及的属性上也没有 索引,那么不同的查询计划可能会有不同的方案: 对该关系进行排序预处理 在选择条件涉及的属性上建索引 这样就必须计算每一种查询计划的代价,以便从中选择一个代价最小(所谓“最 优")的查询计划。 ,选择运算应 6条,E1的关系代数语法树可以优化成如下的形式 推荐访问:i=(--a==b)?--a:b表达含义
含义
表达
[i=(--a==b)?--a:b表达含义(2篇)]相关文章
- 上一篇:西藏百万农奴解放纪念日宣传标语(9篇)
- 下一篇:托育服务体系规划(9篇)