さまざまな車両の衝突試験データを格納するデータベースをセットアップしているとします。スピードボート、乗用車、ゴーカートの衝突試験のデータを保存したいと考えています。
SpeedboatTests、CarTests、および GokartTests の 3 つの個別のテーブルを作成できます。ただし、多くの列は各テーブルで同じになります (たとえば、テストを実行した人の従業員 ID、衝突の方向 (正面、側面、背面) など)。ただし、多数の列が異なるため、すべてのテスト データを 1 つのテーブルにまとめることは望ましくありません。スピードボートでは常に null になる列がかなり多く、常に null になる列がかなりあるからです。車の場合は null になり、ゴーカートの場合は常に null になるものがかなりあります。
テストに直接関係のない情報 (テスト対象の設計者の従業員 ID など) も保存したいとします。これらの列は、特に同じ車両のすべてのテストで繰り返されるため、「テスト」テーブルに配置するのは適切ではないようです。
関連する質問を確認できるように、考えられるテーブルの配置を 1 つ示しましょう。
スピードボート ID | col_about_speedboats_but_not_tests1 | col_about_speedboats_but_not_tests2 車 ID | col_about_cars_but_not_tests1 | col_about_cars_but_not_tests2 ゴーカート ID | col_about_gokarts_but_not_tests1 | col_about_gokarts_but_not_tests2 テスト ID | タイプ | id_in_type | col_about_all_tests1 | col_about_all_tests2 (id_in_type は、次の 3 つのテーブルのいずれかの id 列を参照します。 タイプの値に応じて) スピードボートテスト ID | スピードボート_id | col_about_speedboat_tests1 | col_about_speedboat_tests2 車のテスト ID | car_id | col_about_car_tests1 | col_about_car_tests2 GokartTests ID | gokart_id | col_about_gokart_tests1 | col_about_gokart_tests2
この構造の良い点/悪い点、およびこのようなものを実装するための好ましい方法は何ですか?
Vehicles テーブルに含めたいすべての車両に適用される情報もある場合はどうでしょうか。CarTests テーブルは次のようになりますか...
ID | vehicle_id | ... 次のような Vehicles テーブルを使用します。 ID | タイプ | id_in_type (スピードボート、車、またはゴーカートのいずれかの ID を指す id_in_type を使用)
これは王室の混乱になりつつあるようです。このようなものをどのように設定する必要がありますか?