C语言 关系代数

Python032

C语言 关系代数,第1张

投影(projection)

关系R的投影运算是从R中选择某些属性的所有值组成的新关系。换言之,投影运算的结果是一个表的垂直方向的子集。关系R的投影运算记为:πA(R)。其中,A为R的一组属性列。投影的结果将消除重复的元组。

选择(selection)

关系R的选择运算是从关系R中选择满足指定条件(用F表示)的元组构成的新关系。换言之,选择运算的结果是一个表的水平方向的子集。关系R的选择运算记为:σF(R)。

其中,F是包括属性名的逻辑表达式,运算符有算术比较运算符:<,≤,>,≥,=,≠,和逻辑运算符:¬¬┐,∨,∧(非、或、与)。

连接(join)

连接运算是关系的二目运算。关系R与关系S的连接运算是从两个关系的广义笛卡尔积中选取属性间满足一定条件(称为连接条件,记为AθB)的元组形成一个新关系。

除(divide)

设关系R的属性可以分成互不相交的两组,用X、Y表示(X∩Y为空集,X∪Y为R的全部属性),则关系R可以表示为:R(X,Y)。

这不是c语言的问题,这是数据库原理相关的理论基础知识,简单说,选择就是从数据表中选择完整的一条,如题中所示,s就是R中的第二条。投影就是选择一列。如select R.A from R where R.B = 2这条sql语句中select R.A就是投影,where R.B = 2就是选择。

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

我举个具体例子,给定一个表如下:

姓名 年龄 职业

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 *** As New System.Text.StringBuilder()

For Each letter As String In query

*** .AppendLine(letter)

Next

' Display the output.

MsgBox( *** .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 *** As New System.Text.StringBuilder()

For Each str As String In query

*** .AppendLine(str)

Next

' Display the output.

MsgBox( *** .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

在C语言中,什么是算术运算?什么是关系运算?什么是逻辑运算?

算数运算:是加减乘除取模

关系运算是:大于,小于,等于,大于等于,小于等于,

逻辑运算:和,或,非。

算数运算是指能够完成算术运算功能的运算子 如+-*/ &% ++ --

关系运算符是比较两个值的大小关系 C语言的结果包括中 就是0和1 也就是假和真 运算子有如: ><<= >= == !=

逻辑运算子执行结果与关系表示式执行结果相同 成立1 不成立0 且(&&) 或(||) 非(!)

三者优先顺序为 算术 关系 逻辑 (由高到低)

在计算机C语言中,什么是单目运算子,什么是双目运算子?

单目运算子只有一个运算元,双目运算子有两个运算元

逻辑非运算子【!】、按位取反运算子【~】、自增自减运算子【++ --】、负号运算子【-】、型别转换运算子【(型别)】、指标运算子和取地址运算子【*和&】、长度运算子【sizeof】这些是单目运算子

双目运算子较多,+,-,*,/,=,== 等等

还有一个三目运算子,就是需要三个运算元?:

一楼回答有误,这个资料如何?

计算机c语言中 浮点数运算,是什么?

把浮点数理解成小数就可以了

计算机C语言中怎样进行求余运算

%表示求余,/表示取整

在计算机c语言中什么是实体和联络

实体=物件,联络=事件,面向物件语言的原始形态

计算机c语言中 a= i i =?

在使用a = i;时,i应当是已经定义并赋值的,所以i的值即为之前所赋的值。

计算机C语言与C++语言的关系?

c语言面向过程,c++面向物件。

例如:对于伫列来说,c语言里面必须自己写个queue.h(或其他)标头档案,包含伫列的实现。c++已经把伫列作为STL内建在类库中,只要包含相应的类库。

其实对于c来说,更适合作为作业系统底层的程式设计,linux本身就是少量汇编+大量c实现的,指标的操作更是高效。

而c++,更适合做一些上层的开发,它是在c基础上发展而来的,保留了指标的功能,但是现在和c已经大不相同了,对于面向物件,它有自己的特征:类、物件、继承、多型。

类:就是自己写好的描述物件的基础,可被继承

物件:类的例项

继承:可以继承,然后再实现复杂类,可多重继承

多型:一个方法、介面在不同的类中有不同的含义,也是面向物件的精髓

在计算机c语言中 什么是E-R图转换为关系模式?

E-R图 Entity Relationship Diagram 就是 关系图,提供了表示实体型别、属性和联络的方法,用来描述现实世界的概念模型。计算机程式里就是程式流程 图。

:baike.baidu./view/15236.htm

关系模式 就 是:

如果 (某某条件成立) 则 { 做。。。。。} 否则 { 做 。。。。。};

或者:

当 (某某条件成立){ 一直做 。。};

或者:

开关条件(条件){

满足case 1: ...break

满足case 2: ...break

满足case n: ...break

预设:。。。break

}

或者 。。。。

对应 if 语句,while语句, switch语句,回圈语句,转向语句