Datentyp der Spalte beim Datenbankdesign unbekannt

javagui

Mitglied
Hallo zusammen,

ich habe eine Tabelle in der die Die Feldnamen und Datentypen einer Spalte variieren. Also z.B.
Zeile;Feldname; Wert
1;Stadt;Berlin
2;Fahrzeugtyp;100
3;Seriennr;x2k9Irgendwas
4;Wann;18.3.2012

kann bei einem anderen auch so ausehen:
Zeile;Feldname; Wert
1;StadtId;12
2;KFZ-Nr;RE-XY 123
3;Flughafen;x2k9Irgendwas
4;Start;12.3.2012

Mein Ansatz ist zunächst, drei Tabellen zu benutzen in denen die möglichen Feldname:Wert-Paare mit Typ definiert werden. Für die Speicherung in der DB wird dann alles auf String gecastet.
1. Tabelle Feldtypen beschreibt die möglichen Feldtypen.
2. Datendef-Tab enthält die Feldnamen mit Positionen und Verweisen auf den Feldtyp.
3. Daten-Tab hat Verweise auf Feldname;Typ;Wert

Tabelle Feldtypen beschreibt die möglichen Feldtypen:
Zeile;Feldname; Beschreibung
1;int;Ganzzahl
2;numeric;Kommazahl
3;date;Datum
4;char;alphanumerisch

Datendef-Tab enthält die Feldnamen mit Positionen und Verweisen auf den Feldtyp.
Zeile;Feldname;Beschreibung;prio;Feldtyp
1;Stadt;Stadt;1;4
2;Fahrzeugtyp;Fahrzeugtyp;2;1
3;Wann;Datum;4;3.

Daten-Tab enthält dann die eigentlichen Werte;
Zeile;Datendef-Tab-Id;prio;wert
1;1;1;Berlin
2;2;2;100
4;3;4;18.3.2012

So richtig glücklich bin ich aber mit dieser Lösung nicht.
Vielleicht beschreibt Ihr kurz mal Eure Vorgehensweise.

Gruß javagui
 
G

Gast2

Gast
Moin,

ich bin fasziniert wieso alle Welt immer versucht Unbekanntes (welches definitiv irgendwann Bytes von 0 bis 31 enthält) in einem String zu speichern. Das sind simple binäre Daten - dafür gibt es auch entsprechende Datentypen.

hand, mogel
 

javagui

Mitglied
Danke für den Hinweis, da treibts einen wohl in die eingetretenen Pfade.

OK, kein String, dann ist der Wert wohl immer ein character-Array. Aber ich bin mit der 3-tabellen-Logik nicht so besonders im Wohlfühlbereich.
 
C

Camino

Gast
Aber ich bin mit der 3-tabellen-Logik nicht so besonders im Wohlfühlbereich.

Ich versteh auch noch nicht so ganz, wozu das gut sein soll. Sinn einer Datenbank ist doch, dass die Daten/Datensätze eine gleiche Struktur haben. Warum sollte in einer Tabelle in einer Spalte einmal eine Seriennummer und ein anderes mal ein Flughafen stehen?
 
G

Gast2

Gast
Danke für den Hinweis, da treibts einen wohl in die eingetretenen Pfade.
und wieder treibt es Dich in die eingetretenen Pfad

OK, kein String, dann ist der Wert wohl immer ein character-Array.
fühle die Macht und vertraue dem BLOB, mein junger Padawan

ansonsten - was Du versuchst in Zeilen zu speichern ist alles ein Datensatz, kommt also alles in eine Zeile in verschiedenen Spalten
 

javagui

Mitglied
Ich glaube, ich hab die Anforderungen nicht gut beschrieben. Also:
Der Nutzer bearbeitet eine Tabelle:
Feldname;Wert
Feld1;10
Feld2;Venedig
Feld4;RE-BX 789
Feld5;X57-123ABC897

Dabei sind sowohl die Feldnamen als auch die Werte unbekannt. Feld2 kann bei dem einen Kunden Flughafen sein "Flughafen:Berlin", beim nächsten ist es "KFZ-Kennzeichen:RE-BL 786", bein Dritten "Datum:12.10.2011", beim Vierten "Warenwert:10.000". Nach mogels Hinweis sind es aber wohl immer Paare der Art Feldname/Character. Gegebüber BLOB hat das den Vortei, dass die Wertepaare in der DB für lesbar bleiben.

Gegen eine einheitliche Satz/Tabellenstruuktur spricht die Vielzahl der Möglichkeiten.
Die möglichen Feldname:Wert-Paare (z.B. Flughafen:Character oder Warenwert:currency" kann eine weitere Tabelle definieren.

Schönen Abbent
 
C

Camino

Gast
Kannst du mal genauer beschreiben, was der Sinn so einer Tabelle sein soll, also für welchen Zweck das eingesetzt wird? Ich vermute ja, dass sich das bestimmt anders/besser strukturieren lassen könnte.
 

mla.rue

Bekanntes Mitglied
kann mich meinem Vorredner nur anschließen, der Sinn so einer "Struktur" erschließt sich mir jedenfalls nicht so wirklich.
 

javagui

Mitglied
Na, es gibt n Kunden die für Lieferungen leider auch n verschiedene Kennwerte benutzen. Dem einen ist das Kennzeichen des Lieferfahrzeugs wichtig, dem anderen die Nummer des Fliegers, dem nächsten eine Dokumentenkennung. Und das variiert noch innerhalb der Unternehmen pro Abteilung. Leider gibt es momentan zu viele Unbekannte. Damit das über Einstellungen konfigurierbar bleibt und ich nicht jedesmal die Source anpassen muss, lande ich bei einer Konfig über Tabellen.

Also gekürzt:
Eine Tabelle enthält mögliche Feldtypen, also int, decimal, char,date.
Eine Tabelle enthält Feldname,Datentyp,Sortfolge.
Eine Tabelle definiert Sets von Feldnamen (die können in verschiedenen Abteilungen unterschiedliche sein).
Eine Tabelle enthält die operativen Daten, also Liefer-Id,Id des Feldnamen, Wert.

So kann ich die zu bearbeitenden Feldname:Wert-Paare über ein feines Konfig-Formular pro Kunde/Abteilung, wenns sein muss pro Arbeitsplatz einstellen, ohne an die Sourcen zu müssen.

Vielleicht bin ich a wengel betriebsblind, aber ich sehe nicht wie ich das in eine feste Struktur giesse, die auch noch möglichst wartungsarm bleibt.

Schuftet nicht zu dolle, schönen Tag noch, Pott's steigert die Intelligenz.
 

areafo

Mitglied
So ich trage hier mal was bei :D

Und paar Gedanken:

- Feldnamen sollten gleich bleiben und nicht vom Inhalt abhängen
- Datensätze in relationalen Datenbanken sollten normalisiert
- bei nicht klaren Datentypen immer den höchstmöglichen / generischsten nehmen. In deinem Fall String >>> daraus ergibt sich natürlich eine Typunsicherheit

So das wars

Hab mir die "Problemstellung" nochmal angeschaut

Das Vorhaben widerspricht dem Sinn einer relationalen Datenbank und wird hier nur als Strukturspeicher mit Datenhaltung genutzt.

Mann sollte die Strukturbeschreibung vielleicht auslagern in XML und die Datenhaltung normalisiert vollbringen.

Auch wenn es schwer ist aber alles lässt sich normalisieren :D
 
Zuletzt bearbeitet:

mla.rue

Bekanntes Mitglied
Aha ok ich verstehe dein Problem, dein Lösungsansatz widerspricht aber, wie schon erwähnt, dem Sinn einer relationalen Datenbank.

Vorschlag: mach eine Tabelle mit ALLEN notwendigen Spalten, mit den entsprechenden Datentypen. Welche Spalten angezeigt/geladen/gespeichert werden löst du mit deinem Code (GUI etc). Ob diese (z.B. 4) Spalten und deren Prioritäten in einer Config Datei stehen, oder in der Kundentabelle gespeichert werden, ob in separaten Spalten, oder in einer steigender (Priorität) Reihenfolge. Alles deine Entscheidung.

Dynamische Spaltennamen + dynamische Datentypen der Spalten müsste deine DB unterstützten, ich kenne ersteinmal keine, die das kann.

Habe Vergleichbares gehabt. Tabelle mit 10 Werten, wobei jedem Kunden eine andere Spalte wichtig war, mal 2, mal 3, mal 10. Kontextmenü eingebaut, mit dem Sich die Spalten aktivieren/deaktivieren lassen, so hat jeder was er will, wie er will.
 
B

bone2

Gast
hat jede abteilung nur einen datensatz? nimm nen properties. Sowas baut man einfach nicht in eine datenbank. das ist doch keine basis da was sinnvolles ranzuhängen. wozu noch ne datenbank, für chaotische daten tut es auch eine binärdatei.
Da bekommt jede abteilung richtig eine eigene datenbank und programm dazu.

alternativ wäre noch noSql und objekte speichern, oder wie schon genannt eine sehr breite tabelle die alle möglichkeiten abdeckt...
 

javagui

Mitglied
Danke für die Diskussion,

ich werd wohl erst mal mla.rues Vorschlag folgen und später, falls das nicht mehr reicht ein HBase oder so was dranhängen.

Vielen Dank allen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
E Datentyp enum und tinytext in sql-Befehl Datenbankprogrammierung 5
J WebService + Datenbank und Date-Datentyp vs. long-Datentyp Datenbankprogrammierung 4
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
E Datentyp numeric abfragen? Datenbankprogrammierung 2
B datentyp boolean bei create table Datenbankprogrammierung 2
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
pkm PostgreSQL Auf eine Spalte kann aus einem Teil der SQL-Aussage nicht zugegriffen werden Datenbankprogrammierung 3
J In einer bestimmten Spalte suchen mit Suchfeld (MS SQL) Datenbankprogrammierung 7
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
L H2 Blob Spalte im Client anzeigen Datenbankprogrammierung 2
D UCanAccess / MS Access - Tabelle / Spalte vorhanden Datenbankprogrammierung 3
B SQL-Statement Prüfen ob eine Spalte einen Wert enthält Datenbankprogrammierung 2
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
E Wie kann man mit einer ID-Spalte über eine Parameterübergabe auf eine Seite verweisen? Datenbankprogrammierung 17
A MySQL Tabelle ID abfragen und Spalte ausgeben Datenbankprogrammierung 4
T SQL-Statement Feld von Fremdschlüsseln als Spalte möglich? Datenbankprogrammierung 4
R MySQL berechnete Spalte im selben query weiterverwenden? Datenbankprogrammierung 4
N Einzelne Spalte in MySQL-DB-Tabelle schreiben Datenbankprogrammierung 7
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
W MySQL Daten aus bestimmter Spalte lesen Datenbankprogrammierung 2
J Doppelte Daten in Spalte, nur die erste abrufen wie? Datenbankprogrammierung 15
Iron Monkey Insert into Spalte ID AUTO_INCREMENT Datenbankprogrammierung 7
W bestimmte Zeile mit bestimmter Spalte auslesen Datenbankprogrammierung 11
L Derby Dezimal-Spalte die Größe ändern Datenbankprogrammierung 2
J SQL Abfrage: Verschiedene Werte in einer Spalte mit einem Update Befehl? Datenbankprogrammierung 7
T Eintragung in einer Spalte nach Abfrage Datenbankprogrammierung 11
B Doppelte Zeilen einer Doppelten Spalte aus einer Tabelle entfernen. Datenbankprogrammierung 2
S ist DB Spalte Unique ? Datenbankprogrammierung 2
M MySQL: Spalte auf einmal füllen, ohne iterieren zu müssen Datenbankprogrammierung 4
M [Hibernate] Nachträgliches Hinzufügen einer Spalte Datenbankprogrammierung 7
A max Länge einer Spalte Datenbankprogrammierung 2
M Wie auf SQL-Spalte mit mehrdimensionalen Arrays zugreifen? Datenbankprogrammierung 5
T [SQL] Nicht MAX(spalte) sondern FIRST(spalte) Datenbankprogrammierung 23
S SQL: Spalte kopieren plus Wert erhöhen Datenbankprogrammierung 4
E 2 Tabellen anhand eine Spalte zusammenführen? Datenbankprogrammierung 5
J Eintrag aus der Spalte auswählen Datenbankprogrammierung 3
S Index einer editierten spalte? Datenbankprogrammierung 4
R Wie finde ich die längste Spalte der DB heraus Datenbankprogrammierung 2
Kirby.exe Verwirrung beim Query Datenbankprogrammierung 4
Z Beim schließen des Programms die verbindung zur DB beenden. Datenbankprogrammierung 4
C Oracle Fehler beim list.add() Datenbankprogrammierung 5
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
ruutaiokwu sql server werte swappen beim update-vorgang mit unique-constraints..? Datenbankprogrammierung 2
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
M MySQL probleme beim "Generate Tables from Entities" Datenbankprogrammierung 9
T MySQL Multithreading beim Datenbankzugriff Datenbankprogrammierung 3
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
T Problem beim schreiben von daten Datenbankprogrammierung 4
S MySQL generelles vorgehen beim connect zu entfernter datenbank Datenbankprogrammierung 3
A Derby/JavaDB Probleme beim Einbinden Datenbankprogrammierung 2
L CLOB-Daten werden beim Einfügen in die Datenbank geändert? Datenbankprogrammierung 5
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2
X Vector Verhalten beim DataModel seltsam Datenbankprogrammierung 6
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
N Probleme beim Aufruf aus der DB Datenbankprogrammierung 7
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
T Problem beim Update in die Access DB Datenbankprogrammierung 9
F SQLException fangen beim verbinden mit Hibernate Datenbankprogrammierung 17
M Problem beim Importieren einer Datenbank Datenbankprogrammierung 3
C Datenumwandlungsfehler beim Umwandeln Datenbankprogrammierung 4
S Fehler beim Auslesen von Daten Datenbankprogrammierung 6
V Probleme beim Öffnen "einiger" SuperbaseTabellen p Datenbankprogrammierung 8
G Probleme beim Methodenaufruf einer EJB Datenbankprogrammierung 10
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
V Fehlermeldung beim Insert Datenbankprogrammierung 16
G beim lesen der db alte daten bekommen? Datenbankprogrammierung 5
A Problem beim Laden des Treibers Datenbankprogrammierung 5
A Fehler beim Starten des Servers für H2 Database Datenbankprogrammierung 13
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
G Problem beim einfügen in der Datenbank Datenbankprogrammierung 4
G Problem beim Schreiben eines Dateipfads in MySQL-DB Datenbankprogrammierung 9
J OutOfMemory beim Clob Datenbankprogrammierung 5
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
M "SQL - Apache" Problem beim laden des Applets Datenbankprogrammierung 4
J Fehlermeldung beim ausführeren dieses Befehles Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben