自動車ディーラーアプリケーションの自動車(具体的には、年式、メーカー、モデル、トリム)を表すデータベースを設計しようとしています。データに関する私の理解に基づいて、以下の2つのデータベース設計を思いつきました。
データの例:
Year: 2013
Make: Nissan
Model: Murano
Trim: SL
上のデザインは下のデザインよりも正しいと思いますが、100%よくわかりません。
計画では、自動車販売店の在庫に追加されたすべての車両について、その在庫項目にtrim_id
(車両の標準機能やオプションなどの詳細が含まれる)を割り当てます。在庫品目は、それに適用されるオプションを選択し、走行距離計の読み取り値、状態、価格などを指定するだけで済みます。
また、モデルは次のようなクエリをサポートできる必要があります。
make
のすべてのyear
をリストするmodel
のすべてのmake
をリストするtrim
のすべてのmodel
をリストするデザインは正しいですか?正規化しましたか?
データベースデザイン車モデル/車分類済み -これにより、year
列にmodel
が配置されます。私は自動車愛好家ではありませんが、これは正しくないと思います。 trim
はyear
に関連付けられていると思いますか?
最初のモデルは、ビジネスニーズにより正確です。さらに少し進んで、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);