Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabellendesign mit mehrsprachigen Inhalten

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema Tabellendesign mit mehrsprachigen Inhalten.

    Tabellendesign mit mehrsprachigen Inhalten

    Hallo Leute,

    ich habe eine Länderliste mit allen Ländern der Erde, die momentan wie folgt aufgebaut ist:
    Code:
    CREATE TABLE IF NOT EXISTS `countries` (
      `countryID` int(3) unsigned NOT NULL auto_increment,
      `country_de` varchar(100) NOT NULL,
      `country_en` varchar(100) NOT NULL,
      `country_fr` varchar(100) NOT NULL,
      `continentID` int(2) unsigned NOT NULL,
      `capital` varchar(100) NOT NULL,
      `area` int(10) unsigned NOT NULL,
      `population` int(8) unsigned NOT NULL,
      PRIMARY KEY  (`countryID`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    Also müsste ich für jede Sprache eine neue Spalte einfügen um den Ländernamen in der jeweiligen Sprache zu speichern.
    Der PHP-Code dazu ist natürlich auch etwas blöd:
    PHP-Code:
    $result mysql_query("SELECT * FROM countries WHERE countryID = 1");
    $countryData mysql_fetch_assoc($result);
    $countryName $countryData['country_'.$lang->getLanguage()]; 
    Meine Frage ist jetzt, wie ihr das machen würdet. Da ja die restlichen Werte außer dem Namen immer gleich sind, macht es ja eigentlich auch keinen Sinn eine Spalte language einzufügen und für jede sprache das land einzufügen. Außerdem entspricht die Tabelle ja dann nicht mehr der 4. Normalform.

    Man könnte natürlich noch eine Tabelle countryNames erstellen und, die beiden Tabellen verknüpfen.
    Aber dann wird es meiner Meinung nach unübersichtlich, da ich das Ganze noch mit anderen Tabellen machen muss oder was haltet ihr davon?

    Ich freue mich über eure Meinungen.

    mfg
    Tobby

  • Gast-Avatar
    Ein Gast antwortete
    Naja, die Seiten selbst werden über language-files übersetzt, aber die länderübersetzungen hätte ich eben gerne mit in der db um das ganze in einer abfrage alles zu haben.

    mfg
    Tobby

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Natürlich kommt es auf die Ansprüche an, ob du deine komplette Anwendung lokalisiert haben möchtest (siehe I18N, L10N), oder ob du nur ein paar feste Seitenbestandteile übersetzen möchtest.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von Chriz Beitrag anzeigen
    Eigentlich sogar mehr Tabellen, wenn du die Entitäten richtig identifizierst.

    Sprache (Deutsch, Französisch, ..), Lokalisierung (Deutschland, Schweiz, Frankreich, ..), Hauptstadt, Übersetzungen der Hauptstädte, Länder, Übersetzungen der Länder
    Das wäre natürlich auch eine Überlegung wert, wobei ich mir die Tabelle Hauptstadt sparen kann und statt dessen in der Länder-Tabelle gleich die ID der Übersetzugn der Hauptstadt einzutragen. Aber wie schon gesagt, die Hauptstädte hätte ich ohne Wolle ganz vergessen

    Und die Lokalisierung ist ja genau genommen wieder ne Länderliste mit Sprachen-Zuweisen, aber da ein Land mehrere Sprachen haben kann, müsste ich die ja, wie du sagtest, auch wieder auslagern, ... Und das alles nur für ne Länderliste in ein paar Sprachen

    mfg
    Tobby

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Eigentlich sogar mehr Tabellen, wenn du die Entitäten richtig identifizierst.

    Sprache (Deutsch, Französisch, ..), Lokalisierung (Deutschland, Schweiz, Frankreich, ..), Hauptstadt, Übersetzungen der Hauptstädte, Länder, Übersetzungen der Länder

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Danke euch beiden.

    Zitat von Chriz Beitrag anzeigen
    Mach dich mal mit Datenbanknormalisierung vertraut.
    Ich habe mich eigentlisch schon ein bisschen mit Datenbanknormalisierung beschäftigt. Wenn man nach der Datenbanknormalisierung gehen würde, müsste man entsprechend Wollas Idee aufgreifen, die ich ja selbst auch schon kurz erwähnt hatte.

    Und übrigens dir danke Wolla, hatte völlig vergessen die Hauptstädte zu übersetzen war völlig auf die Ländernamen konzentriert.

    Es ist wahrscheinlich auch die Beste Idee, nur muss ich halt noch andere Dinge in meiner Datenbank so machen (z.B. Kontinente, Regionen, ...).
    Deswegen hatte ich da eben bedenken, dass so zu tun, weil es dann immer mehr Tabellen werden.

    Aber ich denke (wenn mir kein anderer mehr widerspricht), dass es dann doch über 2 Tabellen gehen muss.

    Wenn jemand noch ne Meinung dazu ha oder sowas ähnliches auch schon mal gemacht hat, würde die mich natürlich auch interessieren.

    mfg
    Tobby

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Mach dich mal mit Datenbanknormalisierung vertraut.

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Zusätzlich zu dem Ländernamen musst du ja auch die Hauptstadt noch übersetzen (Warschau, Warsow, Warzowa). Fläche und Bevölkerungszahl bleiben in allen Ländern gleich, weshalb man vielleicht so was machen könnte:

    staaten
    id
    area
    population

    staaten_name
    id = staaten.id
    language (de/en/fr )
    name
    capital

    mit
    PHP-Code:
    SELECT 
        staaten
    .id,
        
    name,
        
    capital,
        
    population,
        
    area
    FROM 
        staaten_name
     LEFT JOIN 
        staaten 
    ON 
        staaten_name
    .id staaten.id
    WHERE 
        staaten_name
    .language 'de' 

    Einen Kommentar schreiben:

Lädt...
X