gpt4 book ai didi

database - 如何建模或查询关系代数中不存在的东西

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:06 25 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

2天前关闭。




Improve this question




我想查询所有从未出租过的公寓的id。
我试过这样的事情:

    (π a_id (apartments))
-
(π a_id
σ from_date Exists ∧ end_date Exists
(rental) ⨝ rental.a_id on apartment.a_id (apartment))
但我认为我不能在关系代数中使用 Exists 或 null。
我怎么能做到?
我附上架构 here

最佳答案

我们如何根据表中行的含义进行查询和推理
对于最直接的关系代数,其中关系的属性设置为标题,元组设置为主体:
每个查询表达式都有一个关联的(特征)谓词--fill-in-the-(named)-blanks 语句模板,由属性参数化。使谓词成为真命题的元组——陈述——在关系中。如果不告知每个基本关系的谓词,我们就无法更新或查询业务情况。
我们得到了作为关系(值或变量)名称的表达式的谓词。
让查询表达式 E 有谓词 e。然后:

  • R ⨝ S有谓词 r and s
  • R ∪ S有谓词 r or s
  • R - S有谓词 r and not s
  • σ p (R)有谓词 r and p
  • π A (R)有谓词 exists non-A attributes of R [r]

  • 给定一个关系代数查询,我们可以从叶子开始应用上述事实来获得其谓词的表达式。给定一个谓词表达式,我们可以类似地将上述事实应用到另一个方面;如有必要,我们首先重新排列为一个等价的表达式,其中每个 & -有 2 个具有相同属性的参数。 (它总是可以将每个 Codd 的归约算法重新排列为某个 prenex 范式。)
    Re relational algebra querying.
    将其应用于您的查询
    大概 Apartment 中的公寓 ID 用于公寓,而 Rental 中的公寓 ID 用于出租公寓。那么未出租的公寓是公寓中的公寓,而不是出租公寓中的公寓。它们的 id 是那些基本关系的投影之间的关系差异中的那些。
    猜测您的 ERD 的图例/键,在租赁引用公寓中有一个 FK(外键)。这证实了 Rental 中的公寓也在 Apartment 中。所以 Apartment ⨝ RentalRental 拥有相同的公寓.这确认您不需要加入;您可以只使用 Rental 出租公寓。
    你提到 NULL & EXISTS。也许您正在谈论 SQL NULL & EXISTS 和/或您正在尝试查找 SQL 查询的关系代数版本和/或您正在使用 SQL 进行推理。和/或您可能正在谈论逻辑 EXISTS 以及值是否存在于列或元组中。
    从关于租房的常识和从你不说别的出发, Rental可能是 occupant O rented apartment A from date F to date T 所在的行.但是你提到了NULL。从常识和猜测 T 可以为 NULL, Rental似乎是 occupant O rented apartment A from date F to date T OR occupant O rented apartment A from date F ongoing & T is null 所在的行.
    NULL 是一个由 SQL 运算符和语法特殊处理的值。我们不知道您的代数和语言如何处理 NULL。数学 EXISTS X [p] & FOR SOME X [p]说存在一个我们可以命名为 X 的值,它满足条件 p。 SQL EXISTS (R)表示表 R 中是否存在行。即 EXISTS t [t IN R] 是否存在.当 R 为 (X,...) rows where r 时,即是否 EXISTS X,... [r] .
    当 R 是 r 所在的行时, π x (R)是根据定义行,其中 EXISTS non-x attributes of R [r] .所以 π A (Rental)EXISTS O,F,T [occupant O rented apartment A from date F to date T OR occupant O rented apartment A from date F ongoing & T is null] 所在的行.
    当 R 是 r 所在的行时, σ p (R)是根据定义行,其中 r & p . occupant O rented apartment A from date F ongoing & T is null 所在的行是 (occupant O rented apartment A from date F to date T OR occupant O rented apartment A from date F ongoing & T is null) & T is null 所在的行.那是 σ T is null (Rental) .
    当 R 是 r & S 是 s 的行时, R - S是根据定义行,其中 r & NOT s .假设 Apartmentapartment A has S square feet ... 所在的行.您想要 EXISTS S,... [apartment A has S square feet ...] & NOT EXISTS O,F,T [occupant O rented apartment A from date F to date T OR occupant O rented apartment A from date F ongoing & T is null] 的行.那是 π A (Apartment) - π A (Rental) .这就是本节开头的关系差异。

    关于database - 如何建模或查询关系代数中不存在的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663848/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com