Spalte oder Tabelle ?

pep33

Neuer Benutzer
Beiträge
4
Hallo, in meiner textlastigen DB will ich Übersetzungen in mehreren Sprachen speichern:
entweder in zusätzlichen. Spalten, zusätzlichen Tabellen oder in zusätzlichen DBs , was ist effizienter? Mehrere Spalten und weniger Tabellen oder umgekehrt?
Danke!
 
Werbung:
Hallo, in meiner textlastigen DB will ich Übersetzungen in mehreren Sprachen speichern:
entweder in zusätzlichen. Spalten, zusätzlichen Tabellen oder in zusätzlichen DBs , was ist effizienter? Mehrere Spalten und weniger Tabellen oder umgekehrt?
Danke!

Dazu müßte man a bissl mehr wissen zum Aufbau. Sagt Dir der Begriff 'Normalisierung' etwas?

Die generische Antwort wäre ja erst einmal: weder in zusaätzlichen Spalten, noch Tabellen und erst recht nicht Datenbanken.
 
Dazu müßte man a bissl mehr wissen zum Aufbau. Sagt Dir der Begriff 'Normalisierung' etwas?

Die generische Antwort wäre ja erst einmal: weder in zusaätzlichen Spalten, noch Tabellen und erst recht nicht Datenbanken.

Um mal zu zeigen, wie man es vielleicht machen könnte:

Code:
test=*# select * from texte ;
 id | language | content
----+----------+----------
  1 | de  | deutsch
  1 | en  | englisch
  1 | ru  | russisch
  2 | en  | englisch
(4 rows)

Time: 0,157 ms
test=*# select content from texte where id = 1 and language in ('de','en') order by case when language = 'de' then 0 else 1 end limit 1;
 content
---------
 deutsch
(1 row)

Time: 0,318 ms
test=*# select content from texte where id = 2 and language in ('de','en') order by case when language = 'de' then 0 else 1 end limit 1;
 content
----------
 englisch
(1 row)

So kannst Du beliebig weitere Sprachen dazunehmen, ohne die Struktur der Datenbank und der Abfragen ändern zu müssen. Bei der Abfrage kannst Du so auch eine 'Lieblingssprache' und eine 'Defaultsprache' definieren.

So, nun bist Du am Zug ;-)
 
Danke für die schnelle Antwort!
Derzeit siehts so aus -
Code:
id| D_Wort | E_wort | SP_Wort
------------------------------
1 |Haus       |house    |casa


In Hinbick auf Erweiterbarkeit ist Deine Version natürlich besser
Es gibt allerdings in meinem Fall nimmer nur genau eine Übersetzung, deshalb wollte ich mir die Normalisierung schenken
 
Ok Dank Dir für die Ermahnung- ich werds beherzigen!

PS
Code:
test=*# select *
:
Was sagt mir das?

Welcher Teil? select * heißt hier, ich war zu faul, die Spalten zu nennen. test heißt meine Datenbank. Ich arbeite mit PostgreSQL und dem Command-Line-Client psql, das ganze ist einfach via Guttenberg, ähm, Copy&Paste daraus frech rauskopiert.
 
Werbung:
Wenn du jedes Wort in allen verfügbaren Sprachen immer vorhalten willst geht sicherlich auch deine Lösung. Wenn du ein Wort in 1 bis n Sprachen vorhalten willst wobei n mal 2 und mal 20 sein kann ist akretschmers Version definitiv besser.
 
Zurück
Oben