Query-Anzahl Minimierung bei Mehrsprachigkeit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Query-Anzahl Minimierung bei Mehrsprachigkeit

    Hallo,

    ich habe folgende Situation: Eine Tabelle Pool hat eine Spalte "text" die in vielen Sprachen übersetzt werden soll. Dann gibt es eine Selection Tabelle, die beschreibt, welche Elemente aus dem Pool selektiert sind.

    Pseudo Layout:
    Code:
    Pool:
      id : int(auto increment)
      text: varchar(200)
    
    Selection:
      pool_id: Foreign Key auf Pool(id)
    Wenn ich jetzt ein select auf die Selection Table mit einem Join mache, bekomme ich automatisch alle "text" Einträge.

    Nun zu meinem Mehrsprachen-Problem. Diese Lösung ist starr, weil es ziemlich sicher mit der Zeit immer mehr Sprachen geben wird:
    Code:
    Pool:
      id : int(auto increment)
      text_de: varchar(200)
      text_en: varchar(200)
    
    Selection:
      pool_id: Foreign Key auf Pool(id)
    Vorteil, ein Join-Query. Nachteil, neue Sprache erfordert ein Alter Table

    Um das dynamisch zu halten, fällt mir dieses Layout ein:

    Code:
    Pool:
      id : int(auto increment)
      text_id: int
    
    Selection:
      pool_id: Foreign Key auf Pool(id)
    Dazu kommt noch eine Sprachentabelle, die auf text_id verweist (deren Layout ist hier egal).

    Der Vorteil, in die Sprachentabelle (oder Tabellen) kann ich flexibel neue Sprachen hinzufügen, ohne Änderung am Grundlayout. Großer Nachteil: ein select von Selection erfordert für n Elemente n+1 Queries.

    Gibt es eine elegantere Möglichkeit, wie ich die Queries minimieren kann und dennoch die Sprachen flexibel verwalten kann?
    SQL Injection kitteh is...

  • #2
    Hallo,

    ich verwende für Mehrsprachigkeit dieses Prinzip.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo,

      danke für den Link.

      Mir ist gestern im Bett noch eingefallen, dass ich überhaupt kein Problem habe. Wenn ich die i18n Tabelle ausgelagert habe, so komme ich immer noch über ein Join an die jeweilige Sprache dran.
      Ich bewege mich in einem für mich neuen OR Mapper und denke in den dortigen Konzepten, wobei ich vergesse, dass vom Query selber relativ einfach ist.
      Jetzt muss ich das nur in den OR Mapper bekommen

      Danke
      SQL Injection kitteh is...

      Kommentar

      Lädt...
      X