Tach!
arbeite mit MySql (version weiß ich gerade nicht genau - 4. oder 5.)
Version 4 wäre schon sehr alt. 4.0 ist überhaupt nicht mehr empfehlenswert, 4.1 grad noch so, ist aber auch schon lange abgelöst worden.
Habe z.B. eine Vokabelliste
und möchte nun eine Verbindung zwischen zwei Vokabeln herstellen und zwar z.B. Synonyme -> also quasi eine n-n Verbindung.
Gibt es auch n:n? Mir ist nur m:n (oder n:m) bekannt. Aber egal, kommen wir mal zum Punkt.
Anscheinend schlägt mir Hitze gerade auf den Kopf denn ich komme einfach nicht drauf wie ich das sinnvoll aufbaue:
Tabelle synonym
.id
.vokabel1_id
.vokabel2_id
Das ID-Feld ist eigentlich überflüssig, du kannst den Primärschlüssel gleich über die beiden Vokabel-ID-Felder legen. Das spart einen weiteren Unique-Index, den du sowieso über die beiden Felder legen müsstest, um Dopplungen zu verhindern.
macht keinen wirklichen Sinn da ich ja bei jeder Abfrage beide Felder gegeneinander abfragen muss!?
Ich wüsste nicht, wie es anders gehen sollte. Du hast eine Beziehung zwischen zwei Datensätzen innerhalb einer Tabelle. Das kann man linksrum und rechtsrum verknüpfen und bleibt sich im Ergebnis gleich. Es gibt nunmal kein a und b, das eindeutig links und rechts zuzuordnen wäre. Es sei denn, du kannst immer einen Datensatz als Master definieren. Bei Wörtern ist das jedoch eher nicht der Fall, weil sie sich gegenseitig als Synonym dienen.
Ich sehe da zwei Lösungen. Die eine kennst du bereits, sie gefällt dir nicht, aber wirklich unsinnig ist sie nicht. Die andere wäre, immer zwei Datensätze abzulegen, einen x-y und einen y-x. Dann reicht es, in nur einer Spalte zu suchen - zum Preis der Redundanz und des damit verbundenen Pflegeaufwands.
dedlfix.