0

質問を編集して、より理解しやすくしました。

小さな問題が発生しましたが、それを処理する方法が正確にはわかりません。

3 番目の NF に変換したい次の属性と値を持つテーブルを取得したとします。このテーブルは、マシンによって自動的に作成されます。

KeyID | Action | Class | Method | StoreNr. | Country

1 | Action1 | Class1 | Method1 | 123 | GB

1 | Action2 | Class2 | Method2 | 123 | GB 

2 | Action5 | Class5 | Method5 | 335 | NULL

2 | Action8 | Class8 | Method8 | 335 | NULL

3 | Action2 | Class2 | Method2 | NULL| NL

3 | Action5 | Class5 | Method5 | NULL| NL

4 | Action4 | Class4 | Method4 | NULL| NULL

4 | Action1 | Class1 | Method1 | NULL| NULL

ご覧のとおり、属性 KeyID、Action、Class、および Method を NULL にすることはできません。StoreNr と Country は NULL にすることができます。

依存関係は次のとおりです。

Method -> Action
Action -> Class
StoreNr -> Country

私の問題は KeyID です。これはランダムに作成された番号であり、ユーザー アクションの追跡のみを目的としています。KeyID がなければ、User4 がセッションで使用したアクションの種類を言うことは不可能です。

テーブルを 3 番目の NF に配置するときに、これを処理する方法が正確にはわかりません。

これで私のニーズがより明確になったことを願っています:)

よろしくトーマス

4

2 に答える 2

1

宣言された依存関係のセット

Method -> Action
Action -> Class
StoreNr -> Country

サンプル データは、次のように少なくとも 6 つの関係を示唆しています。サンプル データの null の意図によっては、作成するよりも簡単になる場合があります。Null は、適切に記述されたビジネス要件または FD の一部である必要はありません。作成した実装の技術的な機能にすぎません。

R1 {Method,Action} KEY {Method}
R2 {Action,Class} KEY {Action}
R3 {StoreNr,Country} KEY {StoreNr}
R4 {Method,KeyId} KEY {Method,KeyId}
R5 {Method,KeyId,Country} KEY {Method,KeyId}
R6 {Method,KeyId,StoreNr} KEY {Method,KeyId}
于 2013-08-26T14:32:11.740 に答える
0

第 3 正規形は、基本的に、データを本来のレベルで格納する必要があることを意味します。したがって、従業員のテーブルがある場合は、その従業員の給与と、その従業員が属する部門を含める必要がありますが、部門の「レベル」情報であるため、部門の平均給与は含めないでください。

アクションとクラスはメソッドに依存しています。Retailer には依存関係がありません。データセット全体が KeyID に依存しています。

Action と Class が Method に依存している場合は、Method で一意のテーブルが必要です。問題は KeyID だとおっしゃっていますが、これには Method テーブルに外部キーが必要なようです。このレベルで保存する追加のデータがあるかどうかはわかりません。Retailer は、サンプル データから Action と Class の一部のようです。完全に独立することはできません。または、同じデータセットにビジネスがありません。

上記が正しいと仮定すると、次のようなテーブルが必要になります。

Keys
    KeyID - PK
    ????

Methods
    MethodID - PK
    Class
    Action
    KeyID - FK to Keys

Retailers
    RetailerNR - PK
    ???

質問が少し混乱しているため、これは少し間違っている可能性がありますが、自分のデータを最もよく知っているのはあなたです。自然なレベルでデータを保存し、それを 3NF に入れることを忘れることはできません。

于 2013-08-26T11:47:50.733 に答える