relational-database - 关系代数如何选择两个条件?

标签 relational-database relational-algebra

相关表格是:

TRAIN(列车代码、列车类型、出发站、目的地站)

列出从伦敦出发前往肯特的火车详细信息。

问题很简单,我到处寻找基本答案,但找不到。

这是我到目前为止所想到的,但我不知道它是否正确,或者 AND 是否可以在关系代数中使用:

SELECT TRAIN WHERE departure-station = 'LONDON' AND destination-station = 'KENT'

这是正确的吗?我在网上找不到任何关于是否可以使用 AND 的信息。如果这不起作用,我想我的答案应该是这样的:

SELECT TRAIN WHERE departure-station = 'LONDON' GIVING TABLE1
SELECT TRAIN WHERE destination-station = 'KENT' GIVING TABLE2
PROJECT TABLE1 OVER train-code GIVING TABLE3
PROJECT TABLE2 OVER train-code GIVING TABLE4
TABLE1 INTERSECT TABLE2 GIVING TABLE3
PROJECT TABLE3 OVER train-code, train-type, departure-station, destination-station GIVING RESULT

这对我来说似乎太长了,而且可能是不正确的。也许我需要使用 JOIN 命令代替?我真的不知道,尽管这是一个如此简单的问题。谁能帮我吗?

最佳答案

即使我们忽略诸如 πPROJECT OVER 之类的细微语法差异,关系代数也不存在单一版本。他们甚至都不具有相同的关系概念。 您对 SELECT/RESTRICT 的定义是什么?我们不能告诉你,你必须告诉我们。

如果要使用的关系代数版本允许在 SELECT 中任意嵌套条件,则您的 AND 有效。最初的关系代数只允许单一的等式或不等式。您需要找出“关系代数”和“SELECT”对您的作业意味着什么。但无论哪种方式你都可以写:

SELECT (SELECT TRAIN WHERE departure-station = 'LONDON')
WHERE destination-station = 'KENT'

您的长格式毫无意义地设置了TABLE3,不使用它,然后再次设置它。此外,您的长格式无效,因为 INTERSECT 需要两个具有相同属性集的关系。但你是对的,INTERSECT 与 AND 平行。 NATURAL JOIN 也是如此。每个表(给定或查询)都有一个谓词,即由属性参数化的语句模板,给出元组成员资格条件。例如,TRAIN 是元组,其中(类似于)train-type 类型的火车train-code出发站出发> 前往目的地车站INTERSECTNATURAL JOIN 返回一个关系中 AND 位于另一个关系中的元组,即满足一个关系的谓词 AND> 与其他人的。同样,UNION 计算 OR,MINUS 计算 AND NOT,并且 ... WHERE条件 计算... AND 条件。例如,您的 SELECTAND 是元组,其中 train-type 类型的火车 train-code 来自 出发站目的地站 AND 出发站 = '伦敦' AND 目的地站 = '肯特'。 PROJECTrelationOVER保留的属性计算 FOR一些(值)属性被删除谓词。例如,TABLE4 是元组,其中 FOR SOME train-type出发站 & 目的地站 火车类型类型的火车代码出发站目的地站并且目的地站 = '肯特'。

因此,另一个不使用 AND 的答案是 TABLE1 INTERSECT TABLE2。你为什么要做所有其他事情? (例如,您进行了一些投影,然后将它们与原始投影结合起来;这总是给出什么?)

参见this answer .

关于relational-database - 关系代数如何选择两个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923574/

相关文章:

mysql - 关系模式 : (0, 1) 到 (0,1) 与属性的关系 - 创建一个新表?

php - Laravel hasOne 关系在 dd 上返回 null

sql - 关系代数 - 笛卡尔积与自然连接?

database - 将字段设置为可为空 - Oracle Data Modeler

mysql查询帮助,使用来自另一个表的关系id从表中获取值

mysql - 我应该为双角色用户维护一两个唯一 ID 吗?

sql - C. J. Date 的 "SQL and Relational Theory"中的关系理论

sql - 关系代数中 "theta join"的清晰解释?

sql - 将查询转换为关系代数

mysql - 用简单的英语表达关于经济舱乘客、航类和旅行的关系微积分和代数查询