2

ですから、私はこれらの車両、さまざまな種類の車両を持っています。すべてのタイプには、多くの属性を持つ独自のテーブルがあります。次に、すべてのテーブルのすべての車両の ID とタイプを保持する「車両」テーブルがあります。車両には写真を含めることができるため、「photos」テーブルに vehicle_id を使用して、写真を所属する車両にリンクさせます。

現在、すべての車両には装備のリストもあり、JSON 配列として単一の「装備」列に保存しています。

このようなもの: http://pastie.org/353195

特に機器の列で、どうすればこれを改善できますか?

4

4 に答える 4

12

機器テーブルがあり、次に車両テーブルと機器テーブルの間に機器 ID と車両 ID を持つ結合テーブルがあります。

これにより、車両と機器の間の多対多の関係が得られます。

これにより、特定の装備を備えた車両のクエリと検索がはるかに簡単になり、JSON パケット全体で装備データが繰り返されることはありません。大量の JSON パケットを更新することなく、機器の種類を変更することもできます。

データベースに JSON (または XML) を格納することは、データを拡張可能にする必要があるなど、アプリケーションに固有のものがない限り、通常は良くありません。

于 2009-01-05T20:45:29.723 に答える
4

機器の柱を除いて、あなたのデザインは大丈夫です。IDと名前の新しいテーブルを用意してから、車両とその車両をリンクするテーブルを用意することをお勧めします。

vehicles:
id | type
---------
1  | tank
2  | car
3  | boat
4  | car

equipment:
id | name
---------
1  | radio
2  | abs

vehicles_ equipment:
vehicles_id | equipment_id
2           | 1
2           | 2
于 2009-01-05T20:48:27.707 に答える
1

機器のテーブルは、写真のテーブルのように見えるはずです。vehile_id列とequipment列。次に、クライアントコードで機器をJSON配列(またはその他の必要なもの)に配置できます。通常、データベースのJSON配列(またはその他の形式)に保存しないでください。

さらに一歩進んだ場合は、機器テーブルを作成して、車両と機器の間に多対多の関係を作成できます。

于 2009-01-05T20:45:40.270 に答える
0

機器を他の機器と同じようにテーブルにしてみませんか?機器のクエリはそのままでは難しく、SQLだけを使用してクエリを実行することはできず、逆シリアル化するには常にクライアントアプリが必要になります。

于 2009-01-05T20:47:37.363 に答える