计算机c语言中啥是关系的投影运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机c语言中啥是关系的投影运算相关的知识,希望对你有一定的参考价值。

    关系的投影运算是数据库理论中的内容。c语言中没有相关的内容。

    关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),有些查询需要几个基本运算的组合,要经过若干步骤才能完成。
    一、传统的集合运算
    1、并(UNION) 设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。记为T=R∪S。
    2、差(DIFFERENCE) R和S的差是由属于R但不属
    于S的元组组成的集合,运算符为-。记为T=R-S。
    3、交(INTERSECTION) R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩。记为T=R∩S。 R∩S=R-(R-S)。
    二、选择运算
    从关系中找出满足给定条件的那些元组称为选择。其中的条件是以逻辑表达式给出的,值为真的元组将被选取。这种运算是从水平方向抽取元组。 在FOXPRO中的短语FOR<条件>和WHILE<条件>均相当于选择运算。
    如:LIST FOR 出版单位='高等教育出版社' AND 单价<=20
    三、投影运算
    从关系模式中挑选若干属性组成新的关系称为投影。这是从列的角度进行的运算,相当于对关系进行垂直分解。在FOXPRO中短语FIELDS<字段1,字段2,…>相当于投影运算。 如: LIST FIELDS 单位,姓名
    四、连接运算
    连接运算是从两个关系的笛卡尔积中选择属性间满足一定条件的元组。
    五、除法运算
    在关系代数中,除法运算可理解为笛卡尔积的逆运算。
    设被除关系R为m元关系,除关系S为n元关系,那么它们的商为m-n元关系,记为R÷S。商的构成原则是:将被除关系R中的m-n列,按其值分成若干组,检查每一组的n列值的集合是否包含除关系S,若包含则取m-n列的值作为商的一个元组,否则不取。
    六、外连接运算

    投影(Projection)运算
    投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性。通过使用投影,您可以构建依据每个对象生成的新类型。您可以映射属性,并对该属性执行数学函数。还可以在不更改原始对象的情况下映射该对象。简单地说,便是在关系中选择某些属性列。


参考技术A 我举个具体例子,给定一个表如下:
姓名 年龄 职业
A B 29 程序员
B C 24 会计
C D 30 董事长
D E 32 经理

对姓名 职业投影的结果为
姓名 职业
A B 程序员
B C 会计
C D 董事长
D E 经理

投影(Projection)运算
投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性。通过使用投影,您可以构建依据每个对象生成的新类型。您可以映射属性,并对该属性执行数学函数。还可以在不更改原始对象的情况下映射该对象。简单地说,便是在关系中选择某些属性列。
下面一节中列出了执行投影的标准查询运算符方法。
方法
方法名
说明
C# 查询表达式语法
Visual Basic 查询表达式语法
更多信息
Select
映射基于转换函数的值。
select
Select
Enumerable..::.Select
Queryable..::.Select
SelectMany
映射基于转换函数的值序列,然后将它们展平为一个序列。
使用多个 from 子句
使用多个 From 子句
Enumerable..::.SelectMany
Queryable..::.SelectMany
查询表达式语法示例
Select
下面的示例使用 C# 中的 select 子句或 Visual Basic 中的 Select 子句来映射字符串列表中每个字符串的第一个字母。
Visual Basic 复制代码Dim words As New List(Of String)(New String() "an", "apple", "a", "day")
Dim query = From word In words _
Select word.Substring(0, 1)
Dim sb As New System.Text.StringBuilder()
For Each letter As String In query
sb.AppendLine(letter)
Next
' Display the output.
MsgBox(sb.ToString())
' This code produces the following output:
' a
' a
' a
' d
C# 复制代码List<string> words = new List<string>() "an", "apple", "a", "day" ;
var query = from word in words
select word.Substring(0, 1);
foreach (string s in query)
Console.WriteLine(s);
/* This code produces the following output:
a
a
a
d
*/
SelectMany
下面的示例使用多个 from 子句(在 C# 中)或 From 子句(在 Visual Basic 中)来映射字符串列表中每个字符串中的每个单词。
Visual Basic 复制代码Dim phrases As New List(Of String)(New String() "an apple a day", "the quick brown fox")
Dim query = From phrase In phrases _
From word In phrase.Split(" "c) _
Select word
Dim sb As New System.Text.StringBuilder()
For Each str As String In query
sb.AppendLine(str)
Next
' Display the output.
MsgBox(sb.ToString())
' This code produces the following output:
' an
' apple
' a
' day
' the
' quick
' brown
' fox
C# 复制代码List<string> phrases = new List<string>() "an apple a day", "the quick brown fox" ;
var query = from phrase in phrases
from word in phrase.Split(' ')
select word;
foreach (string s in query)
Console.WriteLine(s);
/* This code produces the following output:
an
apple
a
day
the
quick
brown
fox
*/
Select 与 SelectMany
Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值。Select() 为每个源值生成一个结果值。因此,总体结果是一个与源集合具有相同元素数目的集合。与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合。作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列。然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列。
下面两个插图演示了这两个方法的操作之间的概念性区别。在每种情况下,假定选择器(转换)函数从每个源值中选择一个由花卉数据组成的数组。
下图描述 Select() 如何返回一个与源集合具有相同元素数目的集合。
下图描述 SelectMany() 如何将中间数组序列串联为一个最终结果值,其中包含每个中间数组中的每个值。
代码示例
下面的示例比较 Select() 和 SelectMany() 的行为。代码将通过从源集合的每个花卉名称列表中提取前两项来创建一个“花束”。在此示例中,转换函数 Select<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TResult>)>)) 使用的“单一值”本身就是一个值集合。这需要额外的 foreach(Visual Basic 中为 For Each)循环,以便枚举每个子序列中的每个字符串。
Visual Basic 复制代码Class Bouquet
Public Flowers As List(Of String)
End Class
Sub SelectVsSelectMany()
Dim bouquets As New List(Of Bouquet)(New Bouquet() _
New Bouquet With .Flowers = New List(Of String)(New String() "sunflower", "daisy", "daffodil", "larkspur"), _
New Bouquet With .Flowers = New List(Of String)(New String() "tulip", "rose", "orchid"), _
New Bouquet With .Flowers = New List(Of String)(New String() "gladiolis", "lily", "snapdragon", "aster", "protea"), _
New Bouquet With .Flowers = New List(Of String)(New String() "larkspur", "lilac", "iris", "dahlia"))
Dim output As New System.Text.StringBuilder
' Select()
Dim query1 = bouquets.Select(Function(b) b.Flowers)
output.AppendLine("Using Select():")
For Each flowerList In query1
For Each str As String In flowerList
参考技术B 关系的投影运算是数据库理论中的内容。c语言中没有和它直接对应的。本回答被提问者和网友采纳

C语言中啥是逻辑表达式,啥是关系表达式。举几个例子

逻辑表达式是指运算符为或||、与&&、非!的表达式。返回值为0或1,0表示daofalse,非0表示true. 例如!0返回1,0&&1返回0,0||1返回1。

关系表达式是指运算符为<,<=,>,>=,==,!=的表达式。返回值同样为0或1,例如a!=b,a>=0等。

C语言用整数"1"表示"逻辑真"、用"0"表示"逻辑假"。但在判断一个数据的"真"或"假"时,却以0和非0为根据:

如果为0,则判定为"逻辑假";如果为非0,则判定为"逻辑真"。

例如,假设num=12,则: !num的值=0 ,num>=1 && num<=31的值=1 ,num || num>31的值=1。

逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。

短路原则:非常重要,在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。换句话说:

对于逻辑与运算,如果第一个操作数被判定为"假",系统不再判定或求解第二操作数;对于逻辑或运算,如果第一个操作数被判定为"真",系统不再判定或求解第二操作数。

扩展资料:

C语言逻辑表达式注意:

由于浮点数在计算机中不能非常准确地表示,所以,判断两个浮点数是否相同时,通常不使用关系运算符“等于”(==),而是利用区间判断方法来实现。为了判断x是否等于5.003,可利用如下逻辑表达式:x>5.002 && x<5.004。

当此逻辑表达式为“真”时,就可以认为x等于5.003

逻辑及性质保真性:所有变量的真值皆为“真”的命题在逻辑或运算后的结果为真。保假性:所有变量的真值皆为“假”的命题在逻辑或运算后的结果为假。

参考资料:百度百科-逻辑表达式

参考技术A

逻辑表达式是指运算符为或||、与&&、非!的表达式。

返回值为0或1,0表示false,非0表示true. 例如!0返回1,0&&1返回0,0||1返回1。

关系表达式是指运算符为<,<=,>,>=,==,!=的表达式。

返回值同样为0或1,例如a!=b,a>=0等。

用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式。逻辑表达式的值是一个逻辑值,即"true"或"false"。C语言编译系统在给出逻辑运算结果时,以数字1表示"真",以数字0表示"假",但在判断一个量是否为"真"时,以0表示"假",以非0表示"真"。

可以将逻辑表达式的运算结果(0或1)赋给整型变量或字符型变量。

c语言中,等于是"==",不等于是"!="。

参考技术B 逻辑表达式是指运算符为或||、与&&、非!的表达式。返回值为0或1,0表示false,非0表示true. 例如!0返回1,0&&1返回0,0||1返回1。
关系表达式是指运算符为<,<=,>,>=,==,!=的表达式。返回值同样为0或1,例如a!=b,a>=0等。
参考技术C 比如:
(x>0)&&(x<5)
一整个就是逻辑表达式,由逻辑运算符 && 连接的 两个 关系表达式
其中 x>0,x<5 就是关系表达式,由关系运算符连接
可以认为由 逻辑运算符 && || !连接的就是 逻辑表达式
由 关系运算符 < <= > >= != ==连接的就是关系表达式
参考技术D a&&b就是逻辑表达式 返回值就是只有 true 后者是 false 关系表达式 就是 a>b .................

以上是关于计算机c语言中啥是关系的投影运算的主要内容,如果未能解决你的问题,请参考以下文章

C语言中啥是逻辑表达式,啥是关系表达式。举几个例子

C语言中啥是字符,啥是字符串啊,谢谢

c语言中啥是宏定义,它是干啥的?

C语言中啥是算术运算

C语言中啥是整形数类

C语言中啥是一个8位的整数