Multilinguale Datenbankanwendung

Also ich habe folgendes Problem.
Nehmen wir an ich möchte eine Artikelverwaltung schreiben, meine Datenbank ist so aufgebaut:
Code:
Tabelle: Artikel
- Artikelnummer
- Artikelbezeichnung
- EK_Preis
- VK_Preis_Netto
- MwSt
- Artikelgruppe
- Einheit
...

Tabelle: Artikelgruppen
- ID
- ParentID
- Bezeichnung

Tabelle: Einheiten
- ID
- Bezeichnung

Wenn ich jetzt Artikel, Artikelgruppen und Einheiten anlege gebe ich deutsche Bezeichnungen ein.

Nun meine Frage: Wie sollte die Datenbank aussehen wenn die Bezeichnungen in n verschiedenen Sprachen eingegeben werden könnten.

Hab mir dazu etwas überlegt:

Bsp1.:

Code:
Tabelle: Artikel
- Artikelnummer
- Artikelbezeichnung_Deutsch
- Artikelbezeichnung_Englisch
- Artikelbezeichnung_Französisch
- Artikelbezeichnung...
...
- EK_Preis
- VK_Preis_Netto
- MwSt
- Artikelgruppe
- Einheit
...

Tabelle: Artikelgruppen
- ID
- ParentID
- Bezeichnung_Deutsch
- Bezeichnung_Englisch
- Bezeichnung_Französisch
- Bezeichnung_...
...

Tabelle: Einheiten
- ID
- Bezeichnung_Deutsch
- Bezeichnung_Englisch
- Bezeichnung_Französisch
- Bezeichnung_...
...

Ist leider eine schlechte Lösung wie jeder sieht...


Bsp2.:

Code:
Tabelle: Artikel
- Artikelnummer
- Artikelbezeichnung
- EK_Preis
- VK_Preis_Netto
- MwSt
- Artikelgruppe
- Einheit
...

Tabelle: Lang_Artikel
- Artikelnummer
- LanguageId
- Artikelbezeichnung

Tabelle: Artikelgruppen
- ID
- ParentID
- Bezeichnung

Tabelle: Lang_Artikelgruppen
- ID
- LanguageID
- Bezeichnung

Tabelle: Einheiten
- ID
- Bezeichnung

Tabelle: Lang_Einheiten
- ID
- LanguageID
- Bezeichnung

Problem: Um eine Liste aller Artikel anzuzeigen bräuchte ich einen SQL-String mit 5 JOIN's um die Daten aus allen 6 Tabellen herzuholen und muss dann jedesmal auf die LanguageId abfragen. Und naja je mehr Tabellen ich nacher habe um so mehrere JOIN's brauch ich. Auch nicht die optimale Lösung


Naja ich bin immer noch nach der suche wie man soetwas am besten aufbaut.

Wäre super wenn mir bei diesem Problem jemand helfen könnte.

Es geht nicht um die GUI, sondern um die abgespeicherten Daten in der Datenbank.
 
in welcher Sprache soll denn die GUI sein?
Web-GUI via PHP? oder doch irgend ein festes Programm?

Wenn man keine Scriptsprache verwendet, sondern ein "richtiges" Programm im Hintergrund läuft (z.B. Web-Development mit Java oder eben ein richtiges Programm für'n PC), könnte man überlegen, ob man nicht die Sprach-Daten (zumindestens für Kategorie und Währung) in einzelnen Queries aus der Datenbank holt und dann cached.

Wenn's um ne große Auflistung von Artikeln geht, ist's denk ich mal selbst bei nem PHP-Script nicht verkehrt, die Währung und Kategorien einmal aus der Datenbank zu holen und für die Zeit, in der das Script durchläuft, zu cachen.
 
Also das gente wird in VB.NET programmiert.
Beim Login soll ausgewählt werden welche Sprache man verwendet.
Es gibt eine Standardsprache z.B. Englisch.

Wenn ich einen neuen Artikel anlege muss man auf jedenfall die Bezeichnung in der Standardsprache angeben. Wenn jetzt ein anderer Benutzer mit andere Sprache sich einloggt soll diese Sprache angezeigt werden. Falls die Artikelbezeichnung in der Sprache nicht angelegt wurde soll alternativ die Standardsprache angezeigt werden.
Verstanden? ?( :D
 
Zurück
Oben