怎么用关系代数表达式完成数据库查询

说到关系代数,不得不说这是数据库查询的一项基本功。
首先,你必须弄清楚你想问什么。
例如,选择课程号003 的学生的学号;如果你想知道名字和成绩,你的目标领域很明确;学生证;名称和级别。

那么你必须看看有什么限制。
例如,在本例中,课程编号必须等于003 ,其中需要选择函数(σ)来过滤数据。

接下来,必须选择适当的运营商。
在这个例子中我们需要的是 select 函数;是编程操作和连接操作。
选择功能是按照课号003 过滤记录。
程序功能是学号003 提取名称和类字段。
这是一个连接操作。
如果数据分散在不同的表中。
学生表 必须用来整合选课表和课程表。

例如,学生表名为Student,字段包含学号(Sno);包括姓名(Sname)等。
选课表称为SC,字段包括学号(Sno);包括课程编号 (Cno) 和年级 (Grade)。
课程表称为Course,字段包括课程号(Cno)和课程名称(Cname)。

在那之后你的相关代数表达式应该写成这样:πSno, Sname, Grade(σCno='003 '(Student × SC × Course))。

这个词怎么解释?首先,使用JOIN操作将三个表按学号和课程号连接起来;然后使用 select 函数按课程号 003 筛选记录,最后筛选出您需要的学号。
使用投影操作仅提取名称和级别。

如果所有数据都在一个表中。
例如选课表中的学号;姓名 包括课程编号和成绩。
您的表达式会更简单:πSno, Sname Grade(σCno='003 '(SC))。

不要忘记运算符的顺序非常重要。
为了减少计算量,必须先运行过滤器,然后运行项目。

老实说,我当时不明白为什么这个命令如此重要。
后来人们逐渐意识到,在第一次过滤之后进行编程可以减少中间结果中的噪声量,从而缓解问题。
这就是关系代数的美妙之处,使用数学来处理数据库查询。

数据库中关系代数的问题

总结:S相同,C不同,学号为1 ,至少选修两门不同课程。