Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Spalte oder Tabelle ?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von pep33, 9 Februar 2014.

  1. pep33

    pep33 Neuer Benutzer

    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!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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 ;-)
     
  4. pep33

    pep33 Neuer Benutzer

    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
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Das rächt sich. Irgendwann.
     
    Hony% und pep33 gefällt das.
  6. pep33

    pep33 Neuer Benutzer

    Ok Dank Dir für die Ermahnung- ich werds beherzigen!

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

    akretschmer Datenbank-Guru

    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.
     
  8. pep33

    pep33 Neuer Benutzer

    Danke, ich dachte schon, gäbe "geheime" Mysql Befehle a la
    . Also nochmal danke für die schnellen und kompetenten Antworten!
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Klar gibt es die! Die beginnen aber mit der Installation von PostgreSQL ;-)
     
  10. ukulele

    ukulele Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden