Mehrere Verweise in einem Feld zu einer anderer Tabelle:
am 15.01.2008 19:32:42 von Markus SteinIch will in einer Datenbank
Themengebiete, Problem und Lösung speichern.
Wobei ein Problem zu mehreren Themenbereichen
gehören kann.
Beispiel:
Auswahl Themengebiete: Ajax und HTML
Problem: irgendetwas, was zu beiden Themengebieten paßt
Loesung: Lösung des HTML- und Ajax-Problems.
Nun weiß ich nicht, wie ich die entsprechenden
Tabellen am besten dafür anlegen soll.
Bisher habe ich folgende Idee:
Tabelle Themengebiet:
ID Thema
1 Ajax
2 HTML
3 MySQL
Tabelle: Problem
ID Beschreibung VerwaufLösung VerwaufThemengebiet
1 bla 3 1,2
2 bla 1 2
3 bla 2 3
Tabelle Lösung
ID Problemlösung VerwaufTabelleProblem
1 bla 3
2 bla 2,3
3 bla 2
Erklärung: Das Problem mit der ID 1 der Tabelle Problem
gehört sowohl zum Themengebiet Ajax als auch HTML und
die Lösung findet sich unter der ID 3 in der Tabelle Lösung.
Mir ist aber etwas unwohl dabei, in VerwaufThemengebiet
in einem Feld mehrere Verweise auf die Tabelle Themengebiet
zu haben. Gibt es dafür eine bessere und sauberere Lösung?
Und wenn nicht: In welcher Weise speichere ich dann
die Themengebiete am besten im Feld VerwaufThemengebiet?
Evtl. binär? 1,2 wäre dann z.B. 3 (=00000011).
Mit einem Byte könnte ich dann nur maximal 8 Themengebiete
verwalten Themengebiete 2,4,7,8 wäre dann z.B 11001010.
Man soll der Vollständigkeit halber auch über das Feld Lösung das
zugehörige Problem finden können, dafür ist das Feld VerwaufTabelleProblem.
Vielleicht gibt es ja zu unterschiedlichen Problemen eine einheitliche Lösung,
Im Beispiel passen zur Lösung mit der ID 2 die Probleme mit der ID 2 und 3.
Dabei stellt sich dann wieder die gleiche Frage:
Wie speichere ich das am besten in der DB?
Ich denke, meine Lösung ist unsauber, da man mit einer
zusätzlichen Logik die Verweise im Programm wieder
auseinandernehmen muß, z.B. aus 11001010 wieder
die Verweise 2,4,7,8 machen muß.
Zudem weiß man nicht, wie hoch die höchste ID der
Tabelle Themengebiet wird; ob z.B. ein Byte reicht,
um in einer anderen Tabelle darauf zu verweisen.