2011-07-17 98 views
0

我正在學習數據庫課程,我有幾個關於計算問題的問題。任何見解都非常感謝。數據庫規範化和子查詢

首先,我聽到它拋出了「沒有算法」來將關係轉換爲無損和依賴保持的BCNF。其原因是,對於某些關係,BCNF中不存在與期望屬性的關係。我覺得這是誤導,因爲你可以說沒有算法用相同的邏輯找到二次方程的兩個實數解。當然,你不能...但是對於歸一化問題,我認爲應該有可能確定是否存在具有兩個屬性(決策問題)的BCNF變換,並且如果決策問題發出「是」,則應該有算法計算一個等效的BCNF表示。我的思想是正確的,還是我說過的錯誤?

我的第二個問題關於子查詢。 SQL中涉及子查詢的任何查詢都可以在沒有子查詢的情況下重寫嗎?我知道這不是很好 - 我想我們堅持基本的SQL(大多數/所有系統共享)並限制子查詢選擇從屬於頂層的語句(允許頂層集操作) 。

回答

0

1 - 據我所知,沒有任何單一的算法來確定關係是否可以轉換爲BCNF,同時保留其屬性。但是,你可以結合現有的也實現你想要的。

使用關係分解算法,可以分解你的關係,然後檢查它的依賴關係。如果它的依賴關係保留了你的結果,否則你可以回溯你的步驟並返回關係的原始狀態。

我知道它不是你想要的答案,但可以用作解決方案。

2 - 如果您的意思是嵌套查詢,是的,涉及子查詢的某些查詢可以在不使用子查詢的情況下編寫。

+0

感謝您的支持。對於第一個,我想有一個有限數量的不同的,有意義的分解......所以一個算法將生成它們並檢查它們。對於第二個...我們同意有一些查詢可以消除子查詢。但是,有些事情只能通過子查詢完成嗎? – Patrick87