Relational-Algebra

不確定如何制定關係代數查詢

  • March 29, 2022

問題問:

給定兩個關係 A 和 B,它們都超過屬性 x 和 y。在bag語義下編寫一個查詢,如果B為空則返回A,否則返回B

我解釋這個問題的方式是“空的”意味著關係中沒有元組。

這個問題是在一般意義上給出的,因此沒有與每個關係相關聯的值。

希望有人可以指導我開始。

編輯:到目前為止,我看到如果B為空,則A union B會產生正確的答案。但是在B不為空的情況下,我們需要取與B的交集,即**(A union B)與 B 相交,但是當****B**為空時這不起作用

編輯:在AB都是非空的情況下舉一個例子:

:((1,1),(2,2))

B : ((3,3), (4,4))

查詢應返回: ((3,3), (4,4))

但是,如果我們將B更改為: ()

查詢應返回: ((1,1), (2,2))

我只是想不通集合運算符的可能組合可以讓我實現這一目標。

編輯:這是一個連結,基本上是用於教我們關係代數的確切幻燈片,大約 3/4 的方式定義了我的問題使用的袋子上的代數。課堂上使用的教科書是 Ramakrishnan 和 Gehrke 第 3 版第 100 頁的“數據庫管理系統”,但這是可選文本,我們被告知我們的主要參考資料應該是幻燈片。

為了濃縮幻燈片,我們的代數有選擇、投影、重命名、笛卡爾積、並集和差集。所有其他操作都可以由這些操作組合而成。

為了解決問題的根源,我上學期為我的數據庫模組準備了一張舊問題表,我最近重新審視了它,為我即將進行的一個項目修改關係代數,但這個問題困擾了我好幾天。提出問題的講師已經離開,很遺憾我不能問他們。

正如您所注意到的,如果 B = ∅, A ∪ B返回 A,否則返回來自 A 和 B 的元組。

換句話說,結果是正確的,除了當 B 非空時包含 A。

您需要一個額外的表達式 E,如果 B 非空,它將返回 A;否則∅。

然後將通過以下方式給出所需的結果:

(A ∪ B) - E

只有當 B 非空時,才會從結果中刪除 A。

要找到 E,請考慮當 B = ∅ 時A × B 的行為。

這應該足以讓您找到合適的 E 並解決您的問題。

下面的劇透解決方案。

E = A ∩ π A (A × B)

引用自:https://dba.stackexchange.com/questions/308511