yo,
Ich hätte es auch so gemacht, wenn ich keine Mehrsprachigkeit hätte.
wie gesagt, bei der mehrsprachigkeit bin ich mir selbst nicht ganz sicher, wie man das am besten angeht. vielleicht kann da ja noch jemand was mit mehr erfahrung dazu sagen. egal ob du nun deinen weg nimmst oder meinen vorschlag, mit beiden bekommst man sicherlich bei abfragen immer das gewünschte ergebnis zurück, es sind also beides gehbare wege.
SELECT haarfarbe_de, haarstil_de
FROM Haarfarbe
INNER JOIN Profil
ON Profil.haarfarbe = Haarfarbe.haarfarbe
INNER JOIN Haarstil
ON Profil.haarstil = Haarstil.haarstil
WHERE profil_id = '1234567';
> Wäre es jetzt sinnvoll gewesen, wenn diese beiden FKs zwei einzelne Indizes wären, oder wäre in diesem Fall ein zusammengesetzter Index besser?
in diesem falle würde ich sagen bräuchtest du noch nicht mal einen index auf den FK, da du ja sowieso nur einen datensatz aus der profiltabelle mit dem PK selektierst.
> Und wenn jetzt nur die Haarfarbe selektiert werden würde, und das DBMS hätte diesen zusammengesetzten Index zur Verfügung, wäre das dann massiv schlechter, wäre es genauso gut, wie wenn ein einzelner Index auf dieses Attribut gesetzt hätte, oder wäre es besser?
bei den zusammengesetzten indexen kommt es auf die reihenfolge drauf an, welche indexe vorne stehen. wenn die spalte(n) im index abgefragt werden, die vorne stehen, dann kann er auch den zusammengesetzten nehmen. aber wie gesagt, immer den ausführunsplan anschauen und indexe nicht nur bezogen auf eine abfrage anlegen, sondern versuchen auf möglichst alle abzustellen.
Ilja