回答
你沒有定義「關係代數」。 (有很多變體。)我將使用關係代數的最簡單變體,其中一個關係的標題是一組屬性名稱,而一個主體是屬性名稱爲&值的一組元素運營商包括NATURAL JOIN
,PROJECT
,RENAME
& RESTRICT
。
您沒有定義「轉換」/「對應」/「等效」。
「Equivalent expression」=具有相同值的表達式?
的代數表達式與相同的值SELECT * FROM Student
:
Student
「等效表述」 與相應的表&運營=表達?
如果你不只是想要任何舊的查詢返回相同的東西,那麼你可能想要一些查詢,其結構在某種意義上遵循或反映了原始結構。 (大概是爲了表明你知道哪些SQL查詢子句對應於什麼代數表達式。)SQL由於具有這種不尋常的複雜語法而加劇了這種情況。根據你的教師/教科書,你需要說出「某種意義上的」意味着什麼。
爲SELECT-FROM-WHERE
的一些可能的轉換規則:
首先FROM
子句RENAME
小號列C1, ...
每個表與(可能隱含的)別名A
A.C1, ...
到。然後它處理一系列連接,每個連接都是CROSS JOIN或INNER JOIN
加ON
。
SQL in FROM clause Algebra
*table* A RENAME C1\A.C1, ... (*table*)
... ON *condition* RESTRICT *condition* (...)
... INNER JOIN *table* (...) NATURAL JOIN (*table*)
... CROSS JOIN *table* (...) NATURAL JOIN (*table*)
的FROM
子句映射到一個表,*table* WHERE *condition*
映射到RESTRICT *condition* (*table*)
後。
一個SQL SELECT
子句PROJECT
S於所需的列然後或者每AS
或下降A.
小號RENAME
秒。 (Solitary *
是所有列的簡稱,A.*
是從A.
開始的所有列的列表的簡稱。)
SQL Algebra
SELECT ..., A.Ci, ..., A.Cj AS X, ...
FROM *table* T
RENAME ..., A.Ci\Ci, ..., A.Cj\X, ...
PROJECT ..., A.Ci, ..., A.Cj, ...
*table*
因此,使用這些機械規則
SELECT * FROM Student
是短期的SQL
SELECT Student.C1, ... FROM Student Student
其轉換爲
RENAME ..., Student.Ci\Ci, ...
PROJECT ..., Student.Ci, ...
Student
由於SQL是這樣一個不規則的語言,則更多的SQL表達式允許更多規則。如果你想讓簡單的SQL表達式對應於簡單的代數表達式而不是臃腫的表達式,那麼可以爲這些特殊情況添加規則。你的代數越複雜,像SQL越簡單,規則越少。
(代數SELECT
/RESTRICT
不對應的SQL SELECT
條款,它相當於一個SQL WHERE
條款。)
你不瞭解的第一件事是什麼?這個答案中的第一件事就是「學生」是「它在關係代數中的等價表達」 - 如果「等價」意味着「具有相同的價值」。 (但是你不會說什麼「等價」意味着什麼。)Pease解決我對你的問題的評論。看看downvotes。你不清楚。您沒有向我們展示您所知道的信息,或者您的參考信息,或者任何「研究工作」(請參閱downvote symbol mouseover。)(但其他評論者不瞭解這些問題。) – philipxy
- 1. 將SQL查詢轉換爲ActiveRecord關係
- 2. 無法將SQL查詢轉換爲等效的LinqToEntities代碼?
- 3. 將sql查詢轉換爲關係代數
- 4. 幫助將SQL查詢轉換爲關係代數
- 5. 將SQL查詢轉換爲關係代數 - 無法計算出
- 6. 將SQL轉換爲關係代數
- 7. 將SQL查詢轉換爲Access查詢 - SELECT內的SELECT
- 8. 將SQL查詢(與相關子查詢)轉換爲LINQ在C#
- 9. 將關係代數關係轉換爲SQL(INTERSECT)?
- 10. 如何將Mysql查詢轉換爲關係代數?
- 11. 將關係轉換爲查詢對象
- 12. 將訪問交叉表查詢轉換爲T-SQL等效
- 13. 關係代數等效SQL「NOT IN」
- 14. 將SQL查詢轉換爲Doctrine代碼
- 15. 將SQL轉換爲等效LINQ
- 16. 將Sql查詢轉換爲Laravel查詢
- 17. 將SQL查詢轉換爲ElasticSearch查詢
- 18. 將SQL查詢轉換爲LINQ查詢
- 19. 將sql查詢轉換爲linq查詢
- 20. 將SQL查詢轉換爲LINQ查詢
- 21. 將SQL查詢轉換爲Rails查詢
- 22. 將sql查詢轉換爲Hql查詢
- 23. 將SQL查詢轉換爲linq查詢
- 24. 將SQL查詢轉換爲Hibernate查詢
- 25. 將SQL查詢轉換爲Linq查詢?
- 26. 這個關係代數陳述是做什麼的? (轉換爲SQL查詢)
- 27. 如何將查詢轉換爲相關查詢
- 28. 等價關係代數語句給定的SQL查詢
- 29. 將SQL(SELECT查詢)轉換爲XML的API或工具FORM
- 30. 數據庫關係代數,SQL查詢
看起來像一個選擇對我說:https://開頭恩.wikipedia.org/wiki/Relational_algebra#Selection_.28.CF.83.29 – duffymo
我經歷了鏈接,但不明白。我必須從表名學生中選擇所有行,並且我想知道它在關係代數中的表達式 – sukhbir1996
我知道你想要什麼。問題是關係代數沒有*的語法糖。它是維基百科 - 如果你對SQL和關係運算符有一些瞭解,你應該能夠弄清楚你想要什麼。如果不是,我會假設你正在尋找某人爲你做功課。 – duffymo