2010-12-27 5 views
1

Ich habe diese Daten:Eine gute Möglichkeit, diese Browser-Versionen zu speichern - Django/Postgresql

Firefox 3,6

Es gibt 3 Artikel

  • Name
  • max Version
  • min Version

ich es auf diese Weise bin Speicherung:

class MyModel(models.Model): 

    browser_name = models.CharField(...) 
    browser_max_version = models.IntegerField(...) 
    browser_min_version = models.IntegerField(...) 

oder alternative

class Browser(models.Model): 

    name = models.CharField(...) 
    max_version = models.IntegerField(...) 
    min_version = models.IntegerField(...) 

class MyModel(models.Model): 

    browser = models.ForeignKey(Browser) 

Gibt es einen cleveren Weg, um den Wert in 1-Feld zu speichern und parsable auf, die selbe Zeit?

Ich weiß, dass dies seltsam klingen mag, aber ich frage mich, ob es eine Alternative zum Erstellen von 1 Million Modellen zur Darstellung von Daten gibt.


Irgendwelche Ideen? :)

+0

Sollte es nicht besser ein 'FloatField' sein, wenn Sie etwas wie' 3.6' speichern möchten? –

+0

@lazerscience: 'FloatField' funktioniert nicht :) als' 3.11 sollte> als 3.6' sein. Trotzdem danke – RadiantHex

Antwort

3

Man könnte es parseable machen, aber wahrscheinlich nicht Wende. Sie können die Werte beispielsweise durch Semikolons (oder ein anderes Zeichen) getrennt verketten und dann die Zeichenfolge einfach teilen, um die Werte zurück zu erhalten. "Firefox 3.6" würde "Firefox; 3; 6" werden. Obwohl dies etwas einfacher zu parsen ist, bietet es keinen großen Vorteil gegenüber der ursprünglichen Formatierung.

Der große Nachteil bei diesem Ansatz ist, dass die Spalte nicht sehr granular indistierbar wäre. Zum Beispiel könnten Sie nicht nach allen Versionen von Firefox fragen. PostgreSQL ermöglicht eine sehr fortgeschrittene Indexierung, die, wie ich glaube, Ihnen erlauben würde, die erforderlichen Indizes zu erstellen, aber ich weiß nicht, wie Sie mit Djangos ORM auf die Indizes zugreifen könnten.

0

Was ist der Zweck von MyModel im zweiten Beispiel? Die einzige Tabelle Browser ist alles was Sie brauchen. Warum in aller Welt benötigen Sie Millionen von Modellen? Oder redest du über Reihen in einer Tabelle?

class Browser(models.Model): 

    name = models.CharField(...) 
    max_version = models.IntegerField(...) 
    min_version = models.IntegerField(...) 

ist in Ordnung

Verwandte Themen