Individuelle Datenbankfelder/-spalten wie realisieren?

Status
Nicht offen für weitere Antworten.

*Hendrik

Bekanntes Mitglied
Szenario: Swing-Applikation, Hibernate, MySQL (Wechsel auf andere DB soll möglich sein). Es werden Stammdaten z.B. Adressen verwaltet.

Der User soll zusätzliche individuelle/von ihm gewählte Datenbankfelder anlegen können. Z.B. Adressstamm hat Spalten Name, Strasse, PLZ, Ort, Telefon. Der User möchte zusätzlich weitere Spalten definieren können, z.B. Augenfarbe, Größe. Wie kann dies datenbanktechnisch realisiert werden. (Hier geht es nicht um die Darstellung der Daten mit Swing.)

1. Ansatz:

(Primärschlüssel werden nicht aufgeführt)

Eine Tabelle "Adressen" mit den Spalten:

- Name
- Strasse
- PLZ
- Ort
- Telefon
- Individuallfelder (VARCHAR(5000))

plus eine Tabelle "Individualfelder" mit den Spalten:

- Beschreibung (z.B. Augenfarbe)
- Position
- Länge
- Typ

In der Tabelle Individuallfelder werden die zusätzlichen Felder vom User angelegt und in der Spalte Individualfelder des Adressstammes an der angegebenen Position gespeichert.

2. Ansatz:

Eine Tabelle "Adressen" mit den Spalten:

- Adresse_ID
- Name
- Strasse
- PLZ
- Ort
- Telefon

plus eine Tabelle "Individualfelder" mit den Spalten:

- Individuallfeld_ID
- Beschreibung (z.B. Augenfarbe)
- Typ

plus eine Tabelle "Adressen_Wert" mit den Spalten:

- Adresse_ID
- Individuallfeld_ID
- Wert (VARCHAR(255)


Dazu meine Fragen: Gibt es noch weitere Lösungen um dem User Individualfelder zur Verfügung zu stellen? Welchen Ansatz würdet Ihr bevorzugen (Vor- und Nachteile beim Datenzugriff)? (Datenmenge angenommen 5000 Adressen und 50 Individualfelder.)

Gruß
Hendrik
 
T

tuxedo

Gast
Ansatz 1 versteh ich nicht ganz. Du scheinst die eine Spalte " Individuallfelder (VARCHAR(5000)) " mehrfach mit Strings, die mit irgend einem Zeichen (" ", ";", ",", ...) getrennt sind zu belegen... Abfragetechnisch find ich das eher ungeschickt.

Hätte sowas jetzt auch nach Ansatz Nummer 2 gemacht.

- Alex
 

*Hendrik

Bekanntes Mitglied
Bei Ansatz 1 habe ich das so gemeint:

Beispiel für Individualfelder:

1. Individualfeld:

- Augenfarbe
- 0
- 8
- alphanumerisch

2. Individualfeld:

- Haarfarbe
- 8
- 8
- alphanumerisch

3. Individualfeld:

- Größe
- 16
- 3
- numerisch


In der Tabelle Adressen wird dann im Feld Individualfelder z.B. der String "blau braun 165". Die Aufschlüsselung der einzelnen Felder erfolgt über die Position und die Länge, d.h. um Größe festzustellen: substring(16, 16+3); (Wenn das komplette Feld zunächst aus der DB gelesen wird).

Wenn ich mit einem Select arbeite um direkt nur bestimmte Adressen aus der Datenbank zu lesen, z.B. Adressen mit blauen Augen:

Select * from Adressen where 'blau' IN (
select substring(Indivudualfelder from 1 for 8) from Adressen
);

(Hab den Select-Befehl jetzt nicht getestet).

EDIT: In meinem Beispielstring werden die Leerzeichen entfernt - ich ersetz die mal durch *: "blau****braun***165"
 
T

tuxedo

Gast
Naja, finde Ansatz 2 immer noch besser. Die Abfrage gestaltet sich so meines Erachtens besser.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
P Derby/JavaDB JPA Reihenfolge Spalten ändern Datenbankprogrammierung 6
C PostgreSQL Anzahl der Spalten ermitteln Datenbankprogrammierung 2
E Wie kann man BLOB-Spalten in DB2 einfügen? Datenbankprogrammierung 9
E Kann man in DB2 Boolean Spalten erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
D Aufteilung ähnlicher Spalten Datenbankprogrammierung 2
M DES und ASC auf verschiedene Spalten anwenden Datenbankprogrammierung 2
S MySQL Befüllen von mehreren Spalten Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
V Hibernate und optionale Spalten? Datenbankprogrammierung 2
turmaline [HQL] Dynamische Spalten erzeugen Datenbankprogrammierung 14
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
O DefaultTableModel Spalten ausblenden Datenbankprogrammierung 3
T Spalten einer SQL-Anfrage vorhersagen Datenbankprogrammierung 6
N Zwei Spalten und Ihre Werte vergleichen Datenbankprogrammierung 3
H Group By mit mehreren Spalten Datenbankprogrammierung 2
multiholle SQL Querry über mehrere Spalten Datenbankprogrammierung 12
G Spalten definieren Datenbankprogrammierung 5
A MSSQL - Spalten mit der Option: NULL zulassen Datenbankprogrammierung 2
thE_29 ResultSet und doppelte Spalten Datenbankprogrammierung 4
W Anzahl der Spalten eines ResultSets bestimmen Datenbankprogrammierung 5
Y Hibernate - Update bestimmter Spalten Datenbankprogrammierung 2
G Spalten Namen auslesen und Zeilen daten auslesen Datenbankprogrammierung 17
G maximale Länge von Spalten ermitteln Datenbankprogrammierung 3
M Maximum aus verschiedenen Spalten Datenbankprogrammierung 2
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
R getString() auf double-Spalten(DECIMAL) Nachkommastellen weg Datenbankprogrammierung 2

Ähnliche Java Themen


Oben