schminor
Goto Top

MS-SQL beliebig erweiterbare Parametertabelle mit unterschiedlichen Datentypen

Hallo,

hätte mal eine Frage.

Wie baut man am besten eine Datenbank auf, wenn ich eigentlich die Struktur noch nicht genau kenne.
Sprich ich habe da eine c# Anwendung in der ein Benutzer eine Liste an vordefinierten Parametern frei zusammenstellen kann und das sind dann mal 10 Parameter und mal nur 5 Parameter.

Die Parameter können dabei unterschiedliche Datentypen wie Varchar, DateTime, Int oder Numeric haben.

Mein Gedanke war schon mal eine Tabelle Parameters (Id (Int), Wert (Varchar)) zu erstellen in der ich das Speichere.
Nur da kann ich alles dann nur als Varchar speichern und muss wieder konvertieren.

Parameter sind z.B.:
Strom (Numeric)
Spannung (Numeric)
Leistung (Numeric)
Drehzahl (Numeric)
Datum (DateTime)
Menge (Int)
Beschreibung (Varchar)

Danke schon mal für Eure Hilfe.

lg
Norbert

Content-Key: 225205

Url: https://administrator.de/contentid/225205

Printed on: April 24, 2024 at 21:04 o'clock

Member: wiesi200
wiesi200 Dec 23, 2013 updated at 08:13:57 (UTC)
Goto Top
Hallo,

Schon mal daran gedacht das du eine Tabelle mit allen möglichen Parametern erstellst, da sie ja vordefiniert sind und dann aber nur die vom User ausgewählten verwendest?

Edit: währ auch noch ne Möglichkeit
http://technet.microsoft.com/de-de/library/ms189887(v=SQL.105).aspx
Member: Schminor
Schminor Dec 23, 2013 at 12:59:39 (UTC)
Goto Top
Hallo,

aha so mache ich das eigentlich auch jetzt schon.
Hätte mir nur gedacht, dass es da eventuell eine schönere Lösung gibt.

Ich hab da jetzt so ungefähr 100 Spalten und davon bleibt meist ein Drittel leer.

lg
Norbert
Member: wiesi200
wiesi200 Dec 23, 2013 at 14:34:05 (UTC)
Goto Top
Sorry aber irgendwie passt das jetzt nicht ganz zusammen.

Du hast ein Programm bei dem sich User so um die 5 - 10 Spalten aus einer SQL Datenbank auswählen können.

Dann kommst du auf 100 Spalten wo 2/3 also nicht ganz 70 Belegt sind.

Du hast eben nur die Möglichkeiten alles in separate Spalten zu schreiben, das kann man dann auf mehrere Tabellen aufteilen.
Oder du schreibst mehrere Daten in eine Spalte, hier bietet sich das XML Format an bzw. das ganze in externe Dateien Auslagern und dann eine Referenz zu schaffen.

bzw. eine Mischung dazwischen.
Du könntest z.b. auch wenn der User nur max 10 Spalten auswählen kann entsprechend die Anzahl + Indexfeldern anlegen.
Und dort dann den entsprechenden Wert eintragen.

Was für dein Konzept das Richtige ist kann hier aber auf Grund mangelnder Angaben keiner sagen.
Member: Schminor
Schminor Dec 26, 2013 at 14:09:46 (UTC)
Goto Top
Hallo,

sorry ich glaub da hab ich mich etwas unverständlich ausgedrückt.
Ich hab anfangs mal mit 5-10 Spalten angefangen weil ich das Beispiel einfacher halten wollte.

Also, der Benutzer hat einen Pool an ca. 100 Parametern.
Aus denen stoppelt er sich dann eine Liste zusammen, die dann in die Datenbank gespeichert wird.
Pro Liste wählt er aber wahrscheinlich maximal 30 Parameter aus.

Jetzt habe ich eine Parametertabelle mit ca. 100 Spalten und genau definiertem Datentyp.

Optimal wäre es, wenn der Benutzer sich später mal den Pool der Parameter mit Datentyp selbst erweitern kann.
Bzw. ich das mit relativ wenig Aufwand machen kann.
Momentan muss ich dazu immer die Datenbank anpassen und das komplette Programm durchackern.

Das ist einfach ein Programm, das Anfangs dafür gar nicht gedacht war und ständig erweitert wurde.
Ich denk das kennt jeder. Nur seh ich da kein Ende mehr und darum mache ich mir Gedanken um ein Redesign.

Auch wenn ich mit dem XML-Datentyp momentan noch gar nicht vertraut bin, denk ich das ich
darum nicht wirklich rumkomme. Wenn ich das sauber machen will.

lg
Norbert
Member: wiesi200
wiesi200 Dec 26, 2013 at 14:25:36 (UTC)
Goto Top
Ok,

bei der Erklärung sehe ich XML als vernünftigste Option.