Hi,
Das ist ein miserables Argument. Wenn die Spalten erforderlich sind, dann
sind sie erforderlich.
Oki, dann habe ich das wohl falsch verstanden.
Das ist miserabelstes Tabellendesign.
Eine Person kann mehrere Hobbies haben, verschiedene Personen können das
gleich Hobby haben. Das ist eine typische n:m-Verknüpfung, für die Du die
Tabellen für
- Personen
- Hobbies
- die Zuordnung von Hobby zu Person
benötigst. Es ist eine ganz schlechte Idee, in solche Spalten kommagetrennte
Listen zu speichern. Ganz bestimmt willst Du doch überprüfen, wer ähnlich
Vorlieben und Abneigungen hat. Geht das mit Freitext oder kommagetrennten
Listen. Nur mit Aufwand. Mach' es also richtig.
Oki, mein Problem war, dass ich alle Eingaben als Freitext den Mitgliedern ermöglich habe.
Nach dem Schema könnte ich einige Punkte realisieren. Zwar net alles, da man einige dennoch als Freitext lassen muss.
Später beim Auslesen des Profils müsste ich dann mit einigen Tabellen Joinen, wenn ich das mit mehreren Punkte mache: Hobbies, Nationalität, Sprachen, Kinder, Familienstand, Beruf...
Ich fange dann mal gleich an, solch eine Struktur, wie von dir gerade vorgeschlagen, nachzugehen.
Was mir gerade so spontan einfällt.
Wenn ich später ein paar Daten in ein Array lade.
Bsp. Username, Hobbie und Nationalität.
Tabelle User:
userID 123
Name Heinz
Tabelle Hobbies
hobbyID 1
Hobbyname Fußball
hobbyID 2
Hobbyname Tennis
Tabelle Hobbiezuordnung
useridID 123
hobbyID 1
So ähnlich mit Nationalität:
Früher als alles in einer Tabelle drin war, hätte ich diese drei Angaben von der Tabelle "User" abgefragt.
String[] userarray="select name, hobby, nationalitaet from User where userID=123;";
Jetzt müsste ich einige Joins machen um auf die Daten zurückzugreifen. Ja gut, mit Joins komme ich einwenig zurecht.
Meine Befürchtung nun so spontan, was mache ich, wenn der User jetzt keinen Eintrag in der Tabelle "Hobbiezuordnung" hat.
Nach der alten Struktur hätte ich einen leeren Array[1], aber immer 3 Arrayfelder.
Beim Join jetzt, sobald kein Hobby eingetragen ist, habe ich nur noch 2 Arrayfelder. Username und Nationalität.
Nationalität hat sich verschoben und das dritte Arrayfeld wäre nicht da. Jetzt müsste ich mir mal überlegen, wie ich das ganze dann ausgebe. Vielleicht denke ich einfach gerade nur kompliziert ;)
Aus dem Entity-Relationship-Modell, das Du erstellt hast, sollte sich Dein
Tabellendesign sehr leicht ableiten lassen :-)Bitte denke daran, dass Fehler, die Du beim Tabellendesign machst, sich später
nur sehr schwer korrigieren lassen. Daher: Mach' es richtig!
Oki danke, ich werde mich darum bemühen und mich anstrengen ;)
Grüße