2

次の属性を追跡するデータベースを設計する必要があります。

    stdnum       // student number
    postcode     // postal code
    phone_number // student phone number
    city         // student address: city

機能的な依存関係もリストされています。

    stdnum -> postcode
    stdnum -> phone_number
    postcode -> city
    phone_number -> city

無損失結合、依存関係保持、属性の第 3 正規形分解を見つける必要があります
私はさまざまな分解を試みましたが、すべての要件に従うものはありませんでした (それらは、ロスレス結合、依存関係の保持、第 3 正規形です)。
例)元のリレーションを変更せずにそのままにしておくと (テーブルには 4 つの属性すべてが含まれます)、ロスレス結合、依存関係は保持されますが、3NF ではなく、2NF のみになります。
次の分解:

(stdnum, postcode, phone_number, city) = 
=(stdnum, postcode, phone_number) JOIN (postcode, city) JOIN (phone_number, city)

3NF にあり、依存関係を維持しますが、ロスレス結合ではありません。
私の問題の解決策はありますか?

感謝。

4

4 に答える 4

1

このスライドで説明されているように、依存関係を維持し、ロスレス結合3NFが常に存在します。それを計算するための記述されたアルゴリズムは、このプロローグスクリプト説明とソース)に実装されています。

そのような分解は常に存在し、この場合、それはあなたがアプローチしたものです:

(stdnum, postcode, phone_number) JOIN
(postcode, city) JOIN
(phone_number, city)

Tableauアルゴリズムを実行して、実際にロスレス結合であることを確認できます。

于 2013-02-09T03:52:40.600 に答える
1

おそらく、課題の目的は、「私の問題の解決策はありますか?」という質問に対する否定的な答えを発見させることです。

データベースを単一の 4 属性のものとして持つことは、必然的に、各 A (スタッド) に対して 1 つの D (都市) しか存在できないことを意味します。B->D および C->D FD の通常の方法で分解すると、必然的に、各 A に関連付けられた 2 つの異なる D を持つ可能性が生じます。

これに対処するには、データベースの制約を設計に導入する必要がありますが、データベースの制約は、適切な正規化理論の範囲外です。

また、分解しないということは、必ずしも 3NF を取得しないことを意味します。

したがって、おそらく課題の目的は、正規化がデータベース設計の聖杯ではないことを発見させることです。あなたはすでにその軌道に乗っていたと思います。

于 2011-11-03T15:28:56.477 に答える
1

元の関係の内訳は、これらの依存関係が同じ CITY を指していると想定しています。

postcode -> city
phone_number -> city

実生活では、必ずしもそうとは限りません。たとえば、私の地域では、ロンドンの市外局番の電話番号を持っているが、キングストン、サリーの郵便番号にある住所があります。そして、どの地理的位置にも対応しない携帯電話があります。

したがって、データモデルを変更することで問題を解決します。


「属性は抽象化です。属性の意味を理解する必要はありません。それらに関するすべての情報は、タスクにリストされている機能依存関係にあります。」

具体的な例を考えることは、抽象化の欠陥を理解するためのより良い方法です。この場合、実際には 4 つではなく 5 つの属性を持っている可能性があります。または、機能依存関係postcode -> cityが有効であるphone_number -> cityが偽物である可能性があります。または、学生が複数の電話番号を持つことができるという事実をモデル化する必要があるかもしれません。たとえば、固定電話 (共有)、携帯電話 (個人) などです。

于 2011-11-03T13:12:44.123 に答える
0

依存性理論では、結合依存性は、データベース スキームに対する法的関係のセットに対する制約です。それぞれが T の属性のサブセットを持つ複数のテーブルを結合することによって T を常に再作成できる場合、テーブル T は結合依存関係の対象となります。結合内のテーブルの 1 つがテーブル T のすべての属性を持つ場合、結合依存関係は次のようになります。些細なことと呼ばれます。

プロジェクト結合正規形とも呼ばれる第 5 正規形では、結合の依存関係が重要な役割を果たします。 R の法的関係を、*(R_1,R_2,...R_n) と呼ばれる R の結合依存関係に制限します。

結合依存関係を説明するもう 1 つの方法は、結合依存関係の一連の関係が互いに独立していると言うことです。

関数の依存関係の場合とは異なり、完全な型付けされた依存関係などのより表現力豊かな依存関係言語には公理化が存在しますが、結合の依存関係には健全で完全な公理化はありません。ただし、結合の依存関係の影響は決定可能です。

于 2014-04-22T11:29:20.193 に答える