2011-07-17 6 views
0

私はデータベースのコースを取っていますが、計算上の問題についてはいくつか質問があります。どんな洞察力も大変ありがとうございます。DBの正規化とサブクエリ

まず、ロスレスと依存性の両方を保持しているBCNFに関係を変換する「アルゴリズムはありません。この理由は、一部の関係では、BCNFに希望の特性との関係が存在しないためです。同じ論理を使った2次方程式の2つの真の解を見つけるアルゴリズムがないと言うことができるという意味で、これは誤解を招きます。確かにすることはできません...しかし、正規化の問題については、両方の特性(決定問題)を持つBCNFへの変換があるかどうかを判断することが可能であるべきだと思っています。同等のBCNF表現を計算する。私の考えは正しいのですか、あるいは私が間違って言ったことのどれですか?

私の2番目の質問はサブクエリに関するものです。サブクエリを含むSQLのクエリは、サブクエリなしで書き換えられますか?私はこれがあまりうまく定式化されていないことを知っています...私は基本的なSQL(ほとんどの/すべてのシステムが共有するもの)に固執し、トップレベルの従属ステートメントにサブクエリを制限しようとします(トップレベルのセット操作を可能にする) 。

答えて

0

1 - 私の知る限り、その性質を保持しながらBCNFに変換できるかどうかを判断するアルゴリズムはありません。しかし、既存のものを組み合わせることもできます。

リレーション分解アルゴリズムを使用すると、リレーションを分解して依存関係を確認できます。依存関係が成立すれば、結果を得ることができます。それ以外の場合は、手順をバックトレースして元の関係の状態を返すことができます。

私はあなたが望む答えではないことを知っていますが、解決策として使用できます。

2 - ネストされたクエリを意味する場合、サブクエリを使用することなくサブクエリを含むクエリを書くことができます。

+0

ありがとうございます。最初のものについては、有限個の有意味な分解が有限個存在すると思っています。アルゴリズムはそれらをすべて生成してチェックすることです。 2番目の場合...サブクエリを排除できるクエリがいくつかあることに同意します。サブクエリでしかできないことはありますか? – Patrick87

関連する問題