Ich mag eine Liste von Zahlen speichern (im Wesentlichen ein set mathematisch) in einer relationalen Datenbank, speziell SQL Server 2005.Wie speichere ich am besten eine Liste von Zahlen in einer relationalen Datenbank?
, ich würde es am liebsten eine einzige Spalte einer Tabelle sein, aber ich bin bereit, irgendeine Art von Lösung zu hören. Die Daten, die ich speichern muss, sind, wie gesagt, eine Menge von Zahlen.
- Es ist nicht (Lücken in Ordnung, normal sind also und typisch) sein sequenziellen erforderlich
- Bereiche möglich sind (dh 1 - 4), aber während ich möchte es auf diese Weise ich anzuzeigen Es kann auch "all" sein, also muss mindestens ein Wert reserviert sein, vorzugsweise logisch, für diesen "unendlichen" Fall
- Die Liste der Zahlen muss nicht in sein Reihenfolge (dh 3, 2, 9, 5), aber es ist vorzuziehen und vollkommen vernünftig, dass sie vor dem Einfügen sortiert werden und sortiert werden können, da nur Code das Einfügen durchführt, nicht manuelle Benutzer. Dennoch sollte es sich wahrscheinlich nicht darauf verlassen oder erwarten, dass die Liste bereits sortiert ist.
- Der Satz von Zahlen sollten für eine Teilmenge leicht gefunden werden (siehe unten)
- Alle Zahlen sollten (keine Betrogenen) verschieden sein, aber dies kann und wird vor Insertion erzwungen werden
Diese Spalte gemeint ist um alle "Schrittnummern" eines bestimmten Prozesses zu speichern, auf den sich die Zeile bezieht. Jede Zeile kann daher auf einen oder mehrere Schritte in beliebiger Reihenfolge, Reihenfolge oder Reihenfolge angewendet werden. Die maximale Anzahl der möglichen Schritte (der maximale Bereich im Wesentlichen) unterscheidet sich von Zeile zu Zeile, obwohl ich sehr bezweifle, dass einer von ihnen in die Hunderte gelangt, so dass in 99,9% der Fälle niemals der Höchstwert 20 oder 30 und I überschreiten sollte Würde mich wundern, wenn es irgendwo nahe bei 100 kommt. Jede Zeile hat garantiert mindestens einen Wert (Schritt) (dh es macht keinen Sinn, eine Zeile zu haben, die für keinen Schritt gilt), aber ich Abbildung ist so einfach wie das Setzen der Spalte auf not null
.
Wie auch immer es gespeichert wird, möchte ich es leicht gesucht werden. Zum Beispiel würde ich lieber nicht durch viele Schleifen springen müssen, um eine SQL-Abfrage zu schreiben, um zum Beispiel alle Zeilen zu finden, die für "Schritt 3" gelten. Wenn eine bestimmte Zeile mehrere Schritte hat (z. B. 2, 3, 7 und 8), sollte es bei der Suche nach Schritt 3 nicht zu schwierig sein.
Auch wenn ich möchte Es macht einen logischen Sinn, wenn man sich die Rohdaten anschaut (für jeden, der nach der Anfrage an dem System arbeiten muss und keine dicke Dokumentation lesen muss, um meine obskure Codierung herauszufinden), Ich bin dazu bereit, Kompromisse einzugehen. Das Codieren der Liste in etwas, das zuverlässig decodiert werden kann, ist somit akzeptabel.
Ich entschuldige mich, wenn das ein dupe ist — Ich habe herum gegoogelt, aber ich vermute, dass dieses Problem von mir leidet nicht zu wissen, was zu suchen oder wie es zu formulieren oder zu nennen, um zu finden, was ich suche.
Bei einer weiteren Anmerkung frage ich mich, ob dies nicht einer der Bereiche ist, in denen relationale Datenbanken nicht ausreichen. Leider habe ich hier keine Wahl. Ich muss es in SQL Server speichern. Das separate Speichern in einer Datei oder einem anderen persistenten Datenspeicher kommt für mich nicht in Frage.
Aber die Liste muss nicht (und ist in der Regel nicht) eine schöne einfache Auswahl. Typischerweise sind es eine oder zwei, möglicherweise drei verschiedene Zahlen in keiner bestimmten Reihenfolge (d. H. 3, 5, 9). Nur gelegentlich ist es 1 - 4. –