2016-11-06 6 views
0

Ich erstelle eine Testdatenbank für die Schule als eine Prototyp-Datenbank, bevor ich die Schnittstelle erstelle. Es gibt eine Tabelle namens Hände mit 5 verschiedenen Händen mit dem Primärschlüssel hand_id. Die nächste Tabelle heißt Sitzung mit einer Sitzung, die Feldhände enthält, die mehrere Hand_IDs enthalten.SQL-Einfügung für Wertebereich

In Sitzungen einfügen (Sitzung_ID, Hände) Werte (0000001, ????????);

Ich möchte, dass der Wert von Händen einen Bereich wie 001-005 enthält, gibt es eine Möglichkeit, es einzufügen, ohne sie einzeln in eine Zeichenfolge wie "001,002,003,004,005" einzugeben, gibt es auch eine Möglichkeit, die einzelnen Werte innerhalb des Bereichs zu referenzieren mit einer Select-Anweisung?

Beispiel:

Session Tabelle: Sitzungs_ID (pk) Hände 001. 01, 02, 03, 04 002. 05, 06, 07 003. 08, 09

Hände Tabelle: Hand_id. Hand_data1. Hand_data2 01. "Einige Daten". "Einige Daten" 02 "Einige Daten". "Einige Daten" 03 "Einige Daten". "Einige Daten" 04 "Einige Daten". "Einige Daten" 05 "Einige Daten". „Einige Daten“

Grundsätzlich reicht eine Reihe von Fremdschlüssel in die Hände Tabelle enthält hand_id mit

+0

Dies ist ein klassisches Tally- (oder Zahlen-) Tabellenproblem. Wenn Sie eine Tabelle mit den Zahlen von 1-1000 darin haben (eine Zahlen- oder Tally-Tabelle) und Sie sich mit ihr verbinden, indem Sie zwischen verwenden, erhalten Sie 5 Datensätze. Es gibt viele Möglichkeiten, einfach Daten in SQL zu generieren, aber vielleicht könnten Sie noch mehr Beispieldaten veröffentlichen, so dass niemand Zeit damit verschwendet, eine Lösung zu veröffentlichen, die nicht geeignet ist. –

+0

Wenn Sie sich in der Phase der Designvalidierung befinden, sollten Sie keine Arrays in einem einzelnen Datenbankfeld speichern. Dies wird später immer wieder zu Problemen führen.Ich verstehe Ihre Bewerbung oder die Art der "Hände" in diesem Fall nicht, also kann ich nicht sagen, ob es Teil des 1% ist, wo es geeignet sein könnte. –

Antwort

0

Was Sie fragen - eine Bezeichnung für eine Reihe von Werten in einer Spalte eines Datensatzes eingefügt - ist nicht allgemein unterstützt. Hier ist ein kleiner Hintergrund warum:

Was Sie beschreiben, ist eine Eins-zu-viele-Beziehung. (Nun, das ist, es sei denn, mehrere Sitzungen können die gleiche Hand enthalten; dann ist es eine Viele-zu-Viele-Beziehung.)

Für einen Programmierer ist es natürlich, dies in Bezug auf Arrays zu denken; aber im Allgemeinen ist dies nicht in einer relationalen Datenbank möglich. so Standard sql hat keine Array-Unterstützung.

Einige relationale Datenbanken haben Array-Typen mit unterschiedlichem Grad der Unterstützung, aber im Allgemeinen gilt, dass jede Spalte einen Wert pro Zeile hat.

Wenn jede Hand gehört nur eine Sitzung, dann stattdessen einen hands Wert session die Umsetzung würden Sie eine session_id Spalte auf dem hand Tisch.

Andernfalls (wenn eine Hand sich auf viele Sitzungen beziehen kann) würden Sie eine Querverweistabelle mit nur hand_id und session_id möchten. Dann hätte dieser Querverweis 5 Zeilen für eine Sitzung mit 5 Händen.

Die folgenden Muster beziehen sich auf eine der grundlegendsten Normalisierungsregeln: keine mehrwertigen Spalten. Die Einhaltung von Normalisierungsregeln wird auf lange Sicht alles einfacher machen

+0

Danke, das erklärt es. Ich habe mein Schema vermasselt und ich werde neu gestalten –

Verwandte Themen