2017-12-23 22 views
-1

私は現在、13個の列を持つテーブルを持っている:マルチテーブルまたはマルチテーブルを使用する必要がありますか?

name, gender, age, color, country, a_qps, a_throughput, b_qps, b_throughput, c_qps, c_throughput, d_qps, d_throughput 

(名前、性別、年齢、色、国)は、クエリのキーとして使用されます。 a、b、c、dはモードです。 x_qpsのデータ型は同じで、x_throughputの型は同じです。

モードの種類が増えるにつれて、このテーブルに保持する必要がありますか?たとえば、別の新しいモードeが来たら、同じテーブルにe_qps、e_throughputを追加すべきですか? または私はテーブルの垂直分割を行うと、

name, gender, age, color, country, a_qps, a_throughput 
    name, gender, age, color, country, b_qps, b_throughput 
    name, gender, age, color, country, c_qps, c_throughput 
    name, gender, age, color, country, d_qps, d_throughput 

として4つのテーブルにこれを有効にする必要がありますか?

答えて

0

一般的に、ダイナミックな列やテーブルは使用しないでください。動的情報はセルデータ内にある必要があります。私は第三の選択肢となるだろうので、値としてモードを持つ単一のテーブル:

name, gender, age, color, country, mode, qps, throughput 

modeあなたはまた、自動インクリメントの主を追加する必要がありますabcなど

だろうキーをメインテーブルに追加するので、他のすべてのテーブルで5つのキー列をすべて繰り返す必要はありません。その主キーは、他のテーブルの外部キーとして使用できます。

+0

ありがとう@Barmar。私はこれが良い習慣だと思う –

0

これはデータ設計によって異なります。 b_qps, b_throughput, c_qps, c_throughput, d_qps, d_throughputのような列のすべてのデータが厳密にname, gender, age, color, country, a_qps, a_throughputにバインドされていて、それらの間に一意の1-1の関係がある場合は、単一の表に保管してください。異なる関係(1-N)が発生するシナリオがある場合、2つ以上の表に分割する。

一般に、正規化されている限り、単一の表に多数の列を持つことは間違いありません。データの重複はありません。

+0

ありがとう@Antoniossss。私たちはそれを頑張っていないと思う。 –

関連する問題