2016-11-09 3 views
-1

おそらく多くのNULL列を持つ1つのテーブルを持つ価値がある場合、またはNULLを持たないテーブルを増やす方が良い場合は、 (INNODBエンジンを搭載したMYSQL DB)1つのテーブルに多くのNULLカラムを使用するか、NULLを持たないテーブルを使用しますか?

たとえば:私は、分類された広告のすべての一般的なものを格納するヘッダーテーブルを持っています。タイトル、説明等...それはあなたが属性を含める必要が仕事の広告がある場合、それはあなたがそのような燃料の種類、透過型などのような特別な属性を含める必要が自動車の広告がある場合は今

..

のような

これで、ジョブ属性と車両属性を格納する別の2つのテーブルを持つヘッダーテーブルを1つ使用するか、すべてヘッダーテーブルにインクルードします。したがって、ジョブ広告媒体の列の場合、NULL値が保持されます。

これらの無効な列は、一部のクエリで使用されることに注意してください。だから私もそれらのインデックスを作成する必要があります。

+0

これは奇妙な質問です。格納するアドレスがあるとしましょう。アドレステーブルが必要な場合があります。しかし、住所の一部は不明であるか、または適用されないかもしれません。例えば、オプションの会社名、オプションのポストボックス番号などです。 address_without_company_and_postboxテーブルと、company_name_for_addressテーブルとpostbox_for_addressテーブルをNULLにすることができるので、これを本当に頼んでいるのですか?これは意味をなさないと思われます。 –

+0

この質問は、テーブルに入る可能性のあるデータと、なぜNULL列がたくさんあるのかを記述した方が良いでしょう。 – mendosi

+0

私が追加したEAVタグを見てください。 –

答えて

0

一般に、重複するエンティティの属性が多いほど、それらのすべてを同じテーブルに配置する可能性が高くなります。

ジョブ広告は、その属性の50%を車両広告としか共有しない場合、異なる表にジョブ広告を入れるとよいでしょう。

また、クエリが次の広告を取得したい場合、次の広告がジョブまたは自動車用であるかどうかに関わらず、同じテーブルにある必要があるかどうかによってデータがどのようにクエリされるかによって異なります。

関連する問題