2

このSQLテーブルをさらに正規化できますか?構造は主キーですID,Date,NAme,Type

ID  Date          Name            Type           Value 
-----------------------------------------------------


1   08/15/2010    Rating          A+               10       
1   08/15/2010    Rating          A-               10        
1   08/15/2010    Composition     MultipleChoice   33        
1   08/15/2010    Composition     YESNO            33        
1   08/15/2010    Composition     Fillin           33        

1   08/16/2010    Rating          A+               30      
1   08/16/2010    Rating          A-               10        
1   08/16/2010    Composition     MultipleChoice   25       
1   08/16/2010    Composition     YESNO            50        
1   08/16/2010    Composition     Fillin           25      

等々

4

4 に答える 4

2

あなたはこれを行うことができます

代替テキスト

于 2010-08-18T19:43:52.190 に答える
2

これは、 EAVテーブルと履歴テーブルの組み合わせのように不審に見えます。その本当の目的は何ですか?関連するテーブルは何ですか?

与えられた限られた情報に基づいて、それを純粋な履歴テーブルに変換することによって正規化します。Ratingおよびは行間で分割しないでください。Compositionただし、適切な名前の列にする必要があります。そのようなもの:

ID  Date          Rating_A+     Rating_A-   MultipleChoicePercent  YESNOPercent FillinPercent
---------------------------------------------------------------------------------------------
1   08/15/2010    10.0          10.0        33.3                    33.3        33.3
1   08/16/2010    30.0          10.0        25.0                    50.0        25.0


これにより、より簡単で高速な処理が可能になります。制約、インデックス、およびクエリを確認します。

于 2010-08-21T22:16:51.463 に答える
1

タイプと名前は特定のセットから外れますか?それらをlibテーブルに分割し、それらを参照することができます。それが私が考えることができる唯一のことです。

たとえば、タイプが常にA1、A2、B1、B2、およびC1になる場合は、それらを別のテーブルに作成し、データベースに常にA1を入力する代わりに、外部キーを使用できます。 A1の行を参照するタイプのテーブルに移動します。

于 2010-08-18T19:37:20.720 に答える
0

私が見ることができる唯一の明白なことは、名前とタイプを別々のテーブルに分割することですが、それらが実際に何を表しているのかよくわからないため、明確に言うことはできません。

于 2010-08-18T20:36:29.913 に答える