-1

この質問に対する答えは (c) であることがわかりました。しかし、(c) が正しくないことを示す例を挙げることができます。答えはどれですか?

r をスキーマ R = (A, B, C, D) の関係インスタンスとする。r1 = ‘select A,B,C from r「と」を定義しますr2 = ‘select A, D from r。ここs = r1 * r2で、* は自然結合を表します。r の r1 と r2 への分解が不可逆であるとすると、次のうちどれが正しいですか?

(a) s は r の部分集合
(b) r U s = r
(c) r は s の部分集合
(d) r * s = s

答えが (c) の場合、r を r1 と r2 に非可逆分解する次の例を検討してください。

表 r

あいうえお

1 10 100 1000
2 20 200 1000
3 20 200 1001

表 r1

ABC

1 10 100 2 20 200

テーブルr2

広告

2 1000
3 1001

テーブル s (r1 と r2 の自然結合)

あいうえお

2 20 200 1000

答えは (c) ではありません。しかし、(c)が答えになる例も挙げることができます。答えは何ですか?

4

2 に答える 2

2

表 r
ABCD

1 10 100 1000
1 20 200 2000

表 r1
ABC

1 10 100
1 20 200

表 r2
AD

1 1000
1 2000

テーブル (r1 と r2 の自然結合)
ABCD

1 10 100 1000
1 20 200 1000
1 10 100 2000
1 20 200 2000

自然な結合を使用して元の関係値を再構成する能力を失ったため、分解は「ロッシー」と呼ばれます。この失われた機能は、自然結合を試みると余分な行が表示されることで明らかになります。これが発生する根本的な原因は、分解が分解の両方のテーブルでキー ( { {B} {C} {D} } ) を完全に保持しなかったことです。元のキーが分解のすべてのコンポーネントで完全に保持されている場合、分解は非可逆ではありません。

于 2014-08-13T13:48:45.963 に答える
0

表 r は次のとおりです。

A B  C   D
1 10 100 1000
2 20 200 1000
3 20 200 1001

r1 は次のとおりです。

r1 = ‘select A,B,C from r’ 

A B  C   
1 10 100 
2 20 200 
3 20 200 

r2 は次のとおりです。

r2 = ‘select A, D from r'

A D
1 1000
2 1000
3 1001

は次のとおりです。

s = r1 * r2

1 10 100 1000
2 20 200 1000
3 20 200 1001

したがって、実質的に r は s のサブセットです。r1 の定義が 'select A,B,C from r' である場合、結果から行を削除することはできず (例で行ったように)、r1 がまだ定義に準拠していると言った場合、同じことが r2 にも適用されます。最初の行を削除する場所。

于 2014-08-09T17:49:19.923 に答える