1

車のクラシファイドを開発していますが、何かを設計するための最良の方法がわかりません.2,4ドアの場合、4x4または4x2の場合、エンジン1.6、2.0などの車の機能がいくつかあります.

このすべての機能は車に固有のものですが、そのモードが持つものに制限する必要があるため、たとえば誰かが自転車を投稿するたびに、そのモデルよりも 4x4 またはエンジンのドロップダウンにオプションが表示されません.

私はこれをジェネリックにしたくありません。車でしか機能しないため、ジェネリック分類に最適な方法を考えると、必ずしもそうとは限りません。

これを設計する最良の方法は何ですか?

より詳しい情報:

私の問題は、車のモデルと実際の車との関係をどのように設計するかです。たとえば、モデルの年は1990年から2000年になる可能性があり、誰かがそのモデルの車を追加しようとしているときに、選択できるようにしたいだけですモデルが持つオプションから。これをデータベースに保存するにはどうすればよいですか?

4

2 に答える 2

2

車種のインスタンス (「my car vin xxx」) と車種の仕様 (「2009 Mazda 3」) を区別する必要があります。一般に、モデル仕様にはモデル番号があり、モデル インスタンスにはシリアル番号 (この場合は VIN) があります。

また、モデル スペックで使用可能なオプションと、モデル インスタンスで実際にインストールされているオプションを区別する必要もあります。

/* the model specifications: */
vehicle_model
id
model_name
from_year
to_year (nullable)
manufacturer_id


/* engine specifications */
engine
id
name (ex. "Cummings Turbo Diesel")
...


/* available engines for a model. you would use this table to show only the appropriate engines for a given model spec */
vehicle_model_engine
model_id
engine_id


/* vehicle instances: */
vehicle
id
vin
model_id FK vehicle_model
engine_id FK engine

vehicle(model_id, engine_id) から vehicle_model_engine(model_id, engine_id) に複数列の外部キーを配置するか、単一のキーを engine(id) に配置して、保存する前にアプリケーション ロジックを使用してチェックすることができます。

于 2013-02-18T19:12:11.883 に答える
0

私は自動車会社で働いています。年、メーカー、モデル、トリムから始めることをお勧めします。すべての車にはこれらの値があります。それらをデータベース構造にハードコーディングできます。

それを超えて、それらの追加の属性を持つ属性テーブルを作成するだけです。

エンジンやドアの数などに特化したフィールドを作ろうとする必要はありません。いくつかの車には複数のエンジン (!) が搭載されていることに驚かれることでしょう。

YMMT と属性の表:

Vehicle

vehicle_id int not null (auto increment), year int, make varchar(100), model varchar(100), trim varchar(100)

Vehicle_Attribute

vehicle_id int, attribute_name varchar(100), attribute_value varchar(100)

于 2013-02-18T17:28:36.920 に答える