web-dev-qa-db-ja.com

車をモデル化する方法(年式、メーカー、モデル、トリム)?

自動車ディーラーアプリケーションの自動車(具体的には、年式、メーカー、モデル、トリム)を表すデータベースを設計しようとしています。データに関する私の理解に基づいて、以下の2つのデータベース設計を思いつきました。

Database Designs for Cars

データの例:

Year:  2013
Make:  Nissan
Model: Murano
Trim:  SL

上のデザインは下のデザインよりも正しいと思いますが、100%よくわかりません。

計画では、自動車販売店の在庫に追加されたすべての車両について、その在庫項目にtrim_id(車両の標準機能やオプションなどの詳細が含まれる)を割り当てます。在庫品目は、それに適用されるオプションを選択し、走行距離計の読み取り値、状態、価格などを指定するだけで済みます。

また、モデルは次のようなクエリをサポートできる必要があります。

  • 特定のmakeのすべてのyearをリストする
  • 特定のmodelのすべてのmakeをリストする
  • 特定のtrimのすべてのmodelをリストする

デザインは正しいですか?正規化しましたか?

データベースデザイン車モデル/車分類済み -これにより、year列にmodelが配置されます。私は自動車愛好家ではありませんが、これは正しくないと思います。 trimyearに関連付けられていると思いますか?

1
DatabaseNewbie

最初のモデルは、ビジネスニーズにより正確です。さらに少し進んで、NAMEとYEARを含むインデックス(一意)を含めます。モデルをそのままにしておくと、たとえば、モデルはこのデータの取得を妨げません。

TRIM:
id     model_id     name     year
==================================
1      1            SL       2013
2      1            SL       2013
3      1            SL       2013

この状況を回避するには、TRIMで次のように1つのインデックスを作成します。

CREATE UNIQUE INDEX trim_idx ON trim (model_id ASC,name ASC,year ASC);

そして、モデルに対して同様のアクションを実行します

CREATE UNIQUE INDEX model_idx ON model (make_id ASC,name ASC);
1
AMG