Gutes Design der Datenbanktabelle zum Speichern lokalisierter Datenversionen

8

Ich versuche einige Tabellen zu entwerfen, um einige Daten zu speichern, die später in andere Sprachen konvertiert werden müssen. Kann jemand dafür einige "Best Practices" oder Richtlinien bereitstellen?

Danke

    
Vijesh VP 25.09.2008, 13:27
quelle

4 Antworten

14

Nehmen wir an, Sie haben eine Produkttabelle, die wie folgt aussieht:

%Vor%

Dann verbinden Sie sich einfach mit product_id = product.id und wo locale = 'en-US'

Das wirkt sich natürlich auf die Performance aus, da Sie jetzt einen Join benötigen, um den Namen und die Beschreibung zu erhalten, aber später beliebig viele Gebietsschemata zulassen.

    
Ben Scheirman 25.09.2008, 13:34
quelle
0

Ich glaube, dass mehr Informationen über das, was Sie tun, hilfreich wären. Können Sie einige Beispiele der Daten geben? Und was meinst du mit Dynamik? Dass es im Laufe der Zeit viele Daten und viele Änderungen an den Daten geben wird oder dass die Daten nur für eine kurze Zeit verfügbar sein müssen.

    
HLGEM 25.09.2008 13:31
quelle
0

Im Allgemeinen sollten Sie sich einen Elternteil mit gemeinsamen nicht lokalisierten Daten und eine Kindtabelle mit den lokalisierten Daten und dem Sprachenschlüssel ansehen. Wenn Sie mit dynamic meinen, dass es sich häufig ändert, sollten Sie sich die Verwendung von Triggern und eines "translationRequired" -Flags ansehen, um Dinge zu markieren, die nach einer Änderung übersetzt werden müssen.

    
Nerdfest 25.09.2008 13:36
quelle
0

Können Sie die Art der "dynamischen Daten" beschreiben?

Eine Möglichkeit, dies zu implementieren, wären drei verschiedene Tabellen:

  • Sprachtabelle
    • Diese Tabelle würde die Sprache und einen Schlüssel speichern:
%Vor%
  • Daten Definitionstabelle
    • Wenn dynamische Daten erstmalig eingegeben werden, machen Sie in dieser Tabelle einen Datensatz mit und einen Bezeichner für die Daten:
%Vor%
  • Data_Language-Tabelle
    • Diese Tabelle verbindet die Sprache, Datendefinition und Übersetzung
%Vor%

Wenn die dynamischen Daten eingegeben werden, erstellen Sie den Standardeintrag "Englisch" und übersetzen Sie dann in Ihrer Freizeit.

    
DaveK 25.09.2008 13:36
quelle