0

私はデータベースを設計していますが、この問題に行き詰まりました:

私のケースは、場所から場所への車とその動きを追跡する ERD を設計することです。

ユーザーは、3 つのフィールドを含むフォームを使用します。最初のフィールドは、車の番号を入力するために使用されます。2 番目のフィールドは車の出発地 (From_Location) を入力するために使用され、3 番目のフィールドは車が移動する場所 (To_Location) を入力するために使用されます。

たとえば、Car#1 が location#A から location#B に移動しているとします。別の例では、車 #2 が場所 #B から場所 #A に移動しています。

Location テーブルを作成し、それを car テーブルに接続して From と To をカバーするにはどうすればよいですか?

関係は多対多でなければなりません。

問題が十分に明確であることを願っています。

4

2 に答える 2

0

Car と Location の関係は次のとおりです。すべての車には正確に 2 つの場所 (from と to) があり、すべての場所には 0..n 台の車があります。
次のフィールドを持つ Car テーブルを作成します: LocationFrom および LocationTo それぞれは、LocationId および LocationName を持つテーブル Location への外部キーです (後者のみを使用できますが、これは議論の余地があります)。
3 番目のテーブルが必要ない理由: 接続は多対多ではなく、2 対多です。
真の多対多の関係がある場合、テーブルは一方のアドレスのどのレコードがもう一方のレコードかを判断できないため、3 番目のテーブルが必要になります (試してみてください..たとえば、すべてを保存する場合各車の位置 - これは多対多の関係でした.車は 0..n の場所に関連付けられ、場所は 0..n の車に関連付けられているためです.どの車の記録をどのように見分けることができますか?はどの場所に関連していますか (そのために n 列を持つことができますが、それは不合理なので、別のテーブルが必要です))とにかく、ここでは car に「直接」場所に関連する列が 2 つしかありません。

追加:
したがって、履歴も必要です... この場合、追加のテーブルが本当に必要です。
元のソリューションに列を追加して、テーブル car に
Id、FromLocation、ToLocation、LocationHistoryId
FromLocation と ToLocation が同じ列を持つようにします。LocationHistoryId は、次の列を持つテーブル LocationHistory の外部キーです:
CarId、LocationId
Whereキーは、両方のフィールドを含む複合キーです (そして、明らかに LocationId は Location テーブルを指します)。

于 2010-09-10T20:32:38.363 に答える
0

私は3つのテーブルを持っています

  • 位置
  • 車の場所

車には適切な車の情報があります

  • 車ID
  • 名前
  • 作る
  • モデル

緯度/経度情報などを追加したくない場合を除き、場所は1つのフィールドにすぎません...

  • ロケーション ID
  • 場所の名前
  • 緯度
  • 経度

CarLocation には少なくとも 4 つのフィールドが含まれます

  • 車の場所ID
  • 車ID
  • FromLocationId
  • ToLocationId

おそらく、CarLocation テーブルに UpdateTimestamp フィールドを含めます。

于 2010-09-10T20:42:38.610 に答える