2012-04-15 3 views
1

In meiner My-SQL-Datenbank habe ich eine Artikeltabelle (mit Spalten article_id, article_name & Highlight (muss in dieser Frage diskutiert werden)). Diese Spalte mit dem Namen "Highlight" definiert die Hervorhebung eines Artikels. Ich muss diese Spalte in verschiedenen Sprachen speichern.Entwerfen einer Tabelle mit einer Spalte muss in vier verschiedenen Sprachen gespeichert werden

1) Ein Weg ist .. Ich werde vier Spalten in der gleichen Tabelle nehmen. Sagen Hightlight_en, Highlight_german, Highlight_french und so weiter.

2) Anderenfalls erstelle ich für jede Sprache eine andere Highlight-Tabelle.

Bitte schlagen Sie vor, wie ich nach einem guten Datenbankentwurf gehen sollte. Ihre Ideen sind auch willkommen.

Eine weitere Sache .. Muss ich etwas extra in Java für die Speicherung von MultiLingual Daten (ANY UTF-8 Einstellung) tun. Lass es mich wissen, bitte.

Antwort

4

Ich empfehle gegen eine der beiden beschriebenen Methoden. Verwenden Sie stattdessen eine einzelne highlight Tabelle mit 3 Spalten erstellen:

CREATE TABLE highlight 
(
    article_id INT NOT NULL, 
    language VARCHAR(), 
    highlight_text VARCHAR() CHARACTER SET utf8, 
    PRIMARY KEY (article_id, language), 
    FOREIGN KEY (article_id) REFERENCES articles (article_id) 
) 

Jede Zeile Link zu einem Artikel von article_id und enthält eine Sprachversion und den entsprechenden Text. Auf diese Weise können Sie so viele Sprachen hinzufügen, wie Sie benötigen, und es spielt keine Rolle, wenn einer für einen Artikel fehlt - er erscheint einfach nicht in der Tabelle. Es erlaubt Ihnen auch, völlig unterschiedliche Sprachsets pro Artikel zu verwenden, wenn es jemals notwendig wird.

Werte dann wie folgt aussehen:

2 en The English text for article 2 
2 dr The French text for article 2 
2 de The German text for article 2 
3 en The English text for article 3 
3 dr The French text for article 3 
3 de The German text for article 3 
3 sw Oh wait, article 3 also needed Swahili text! 
+0

"highlight_text VARCHAR (CHARACTER SET utf8)" .. Ein weiterer Zweifel .. was poperty es einfügt, wenn Sie charactor als UTF-8 gesetzt. –

+0

@SAM Was meinst du mit _was property_? Durch das Definieren von utf8 für diese bestimmte Spalte wird die Spaltendefinition in 'information_schema' für die Verwendung von utf8 festgelegt. Solange Sie uft8-Werte einfügen, wird es korrekt funktionieren. –

+0

Nur um meines Wissens willen frage ich, warum haben Sie nicht den Primärschlüssel in dieser Highlight-Tabelle genommen? –

Verwandte Themen