Domanda

Sto desining un database e rimasto bloccato con questo problema:

Il mio caso è quello di progettare un disco di ripristino per tenere traccia delle vetture e dei loro movimenti da un luogo all'altro.

Gli utenti utilizzano un modulo che contiene tre campi: il primo viene utilizzato per inserire la vettura #. Il secondo campo è utilizzato per inserire la posizione della vettura è venuto da (FROM_LOCATION) e il terzo campo è quello di inserire la posizione della vettura sta andando a (TO_LOCATION).

Per esempio, Auto # 1 si muove dalla posizione # A alla posizione # B. Un altro esempio, auto # 2 si muove dalla posizione # B alla posizione # A.

Come posso creare la tabella posizione e collegarlo al tavolo macchina in modo che copra Da e A?

Il rapporto dovrebbe essere molti a molti.

Spero che il problema è abbastanza chiaro.

È stato utile?

Soluzione

Vorrei avere tre tabelle

  • auto
  • posizione
  • CarLocation

Auto avrebbe le informazioni appropriate auto

  
      
  • CARID
  •   
  • Nome
  •   
  • Colore
  •   
  • Anno
  •   
  • make
  •   
  • Modello
  •   

posizione sarebbe solo l'un campo a meno che non si vuole aggiungere Lat / Long informazioni etc ...

  
      
  • LocationID
  •   
  • LocationName
  •   
  • Latitude
  •   
  • Longitude
  •   

CarLocation dovrebbe includere almeno quattro campi

  
      
  • CarLocationId
  •   
  • CARID
  •   
  • FromLocationId
  •   
  • ToLocationId
  •   

Io probabilmente includere un campo UpdateTimestamp alla tabella CarLocation.

Altri suggerimenti

Il rapporto tra auto e la posizione è: per ogni auto ci sono esattamente due posizioni (da e per), e per ogni luogo ci sono 0..n automobili
. Si dovrebbe: make tavolo auto con campi: LocationFrom e LocationTo ciascuno è una chiave esterna a tavola Luogo che ha LocationID e LocationName (si può avere solo questi ultimi, che discutibile)
. Perché non hai bisogno di terza tabella:. La connessione non è molti a molti - è due a molti
Quando si dispone di una vera e propria relazione molti a molti tavoli non può dire che registrano in un'indirizzi che registrano dall'altra, e quindi la necessità di una terza tabella (provarlo .. per esempio, se una si dovesse salvare tutti sedi di ogni macchina -. che sarebbe stata una relazione molti a molti, perché una macchina è legato alla 0..n località, e una posizione è correlata alla 0..n automobili ora come sarebbe in grado di dire che registrano auto è legato a quale posizione (si potrebbe avere n colonne per questo, ma questo è irragionevole, quindi è necessario un altro tavolo)) in ogni caso qui si ha solo due colonne in auto che sono legati alla posizione "direttamente".

aggiunta:
Quindi è necessario la storia così ... In questo caso è davvero necessario un tavolo extra.
Avrei aggiungere una colonna per la mia soluzione originale in modo che la macchina ora tabella ha colonne:
Id, FromLocation, TOLOCATION, LocationHistoryId
FromLocation e TOLOCATION rimane la stessa, LocationHistoryId è una chiave esterna della tabella LocationHistory che ha le seguenti colonne:
CARID, LocationID
Dove la chiave è una chiave composita che comprende entrambi i campi (e, ovviamente, punti LocationID alla tabella località)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top