Mehrere Verweise in einem Feld zu einer anderer Tabelle:

Mehrere Verweise in einem Feld zu einer anderer Tabelle:

am 15.01.2008 19:32:42 von Markus Stein

Ich 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.

Re: Mehrere Verweise in einem Feld zu einer anderer Tabelle: Gibt es bessere Lösung?

am 15.01.2008 20:29:23 von Sebastian Suchanek

Markus Stein schrieb:

> [...]
> Ich denke, meine Lösung ist unsauber,
> [...]

Allerdings.
Aber tröste Dich, Du befindest Dich in "guter" Gesellschaft, inklusive
meiner eigenen Jugendsünden. ;-)

Die richtige Lösung ist jeweils eine eigenständige, dritte Tabelle,
welche die Verknüpfungen enthält. Als Beispiel für Problem<->Themengebiet:

ID | Problem | Themengebiet
---+---------+--------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 3 | 3

Die entsprechene Spalte in der Problem-Tabelle fliegt natürlich
ersatzlos raus. Analoges machst Du für die anderen Querverweise.


HTH,

Sebastian

Re: Mehrere Verweise in einem Feld zu einer anderer Tabe

am 15.01.2008 23:28:13 von Markus Stein

Danke.