2016-07-30 11 views
0

Ich habe Tausende von Fahrten und jede Fahrt hat einen Startpunkt und ein Ziel. Mein Ziel ist es, Meilen in jedem Staat in jeder Reise gespeichert zu speichern. (Wenn ich von Denver nach SLC reise, werde ich einige Meilen in CO und einige Meilen in UT haben.Speichern der zurückgelegten Strecke in jedem Zustand pro Fahrt in der Datenbank

Ich habe bereits eine Tabelle, die Start- und Zielpunkte hat und ich muss über gute Architektur zum Speichern nachdenken Meilen in jeder Fahrt pro Zustand

Idee # 1:. - erstellen 1 Tisch mit trip_id und 48 Spalten -> 1 für jeden unteren kontinentalen Zustand

Idee # 2:. - erstellen Sie eine Tabelle mit trip_id, state_id (+ zusätzliche Tabelle mit Standorten), total_miles

Lösung 1 scheint zu sein effizienter, wenn es darum geht, Daten zu speichern (weniger Zeilen), und ich bin mir nicht sicher, wie eine Tabelle 2 Millionen Reisen + mehrere Einträge pro Staat in der neuen Tabelle behandeln würde.

Irgendwelche Vorschläge?

Antwort

0

Idee # 2 klingt nach einer viel besseren Idee. Lassen Sie mich einige Gründe erklären.

Erstens könnte sich Ihre Definition von "Status" ändern und das Hinzufügen/Entfernen von Spalten ist ziemlich umständlich. Zum Beispiel könnte "DC" ein Zustand sein. Oder Sie könnten nach Kanada expandieren. Oder bringen Sie Alaska mit. Das Hinzufügen neuer Zeilen zu einer Tabelle ist trivial.

Zweitens, für einfache Aufgaben wie das Addieren der gesamten Meilen für die Reise ist eine einfache Aggregationsabfrage viel einfacher als das Addieren von mehr als 48 Spalten.

Drittens, was ist mit Ausflügen, die mehr als einmal in einen Zustand eintreten könnten. Stellen Sie sich jemanden vor, der von Kalamazoo (MI) nach Houghton (MI) auf der oberen Halbinsel fährt. Sie könnten sehr vernünftig die Route durch Chicago nehmen, durch MI -> IN -> IL -> WI und dann zurück nach MI.