Home All Groups Group Topic Archive Search About

Multilingual database design

Author
9 Dec 2005 8:53 AM
carolus
Does someone know anything about best practices designing multilingual
databases?
Please comment on each of the following design practices for
multilingual database design. Which solution do you recommend?

1.    One column per string in a certain language in each table. "Create
table title (id, en_string, fr_string)"

2.    One row for each language. "Create table title(id, value,
LanguageId(foreign key))"

3.    One table for each language. "Create table en_title (id,
en_string), Create table fr_title (id, fr_string)"

4.    Delimiter-separated strings in each row.  "Create table title (id,
title)", "hello|salut|"

5.    Separate databases for each language "Create database
en_database", "Create database fr_database"

·    Regarding multilingual database design, any other
practices/recommendations/experiences?

Regards,

Carl

Author
9 Dec 2005 10:26 AM
MC
Depends on the size and req for the database. My general reaction:
1) possibly, but only if number of languages is low and youre certain you
will not have to add more then one or two a year :)

2) possibly, depends on the size. I would test for the performance on this
one and use it if its good enough
3) I would rather go with 1)
4) Hell no
5) dont


MC


"carolus" <carl90***@hotmail.com> wrote in message
news:1134118388.538905.319910@g14g2000cwa.googlegroups.com...
Does someone know anything about best practices designing multilingual
databases?
Please comment on each of the following design practices for
multilingual database design. Which solution do you recommend?

1. One column per string in a certain language in each table. "Create
table title (id, en_string, fr_string)"

2. One row for each language. "Create table title(id, value,
LanguageId(foreign key))"

3. One table for each language. "Create table en_title (id,
en_string), Create table fr_title (id, fr_string)"

4. Delimiter-separated strings in each row.  "Create table title (id,
title)", "hello|salut|"

5. Separate databases for each language "Create database
en_database", "Create database fr_database"

· Regarding multilingual database design, any other
practices/recommendations/experiences?

Regards,

Carl
Author
9 Dec 2005 10:54 AM
ML
Option 2 provides best scalability, plus the parameterised language setting
enables two things:

1) one method of access for all language editions - all values are in a
single column (one column => one name => static queries);

2) indexed views - create an indexed view for each LanguageId and let the
query optimizer optimize!


ML

---
http://milambda.blogspot.com/
Author
9 Dec 2005 1:57 PM
JT
This isn't so much a question about multilingual design as it is about
database design in general. I would suggest option #2 with the LanguageID
column. Option #1 presents an extendability and maintainability issue,
becuase adding support for a new language means modifying the data
structures and also the queries would have to be written to reference a
different column depending on the language. The same goes for options #1 and
#5 only worse, becuase you would have to perhaps resort to dynamic SQL when
referecing alternate databases and tables. The problem with option #4 is
that your SQL would be peppered with complex and repetitive programming or
user defined functions for parsing the column values, and this would result
in poorly optimized queries.

"carolus" <carl90***@hotmail.com> wrote in message
news:1134118388.538905.319910@g14g2000cwa.googlegroups.com...
Does someone know anything about best practices designing multilingual
databases?
Please comment on each of the following design practices for
multilingual database design. Which solution do you recommend?

1. One column per string in a certain language in each table. "Create
table title (id, en_string, fr_string)"

2. One row for each language. "Create table title(id, value,
LanguageId(foreign key))"

3. One table for each language. "Create table en_title (id,
en_string), Create table fr_title (id, fr_string)"

4. Delimiter-separated strings in each row.  "Create table title (id,
title)", "hello|salut|"

5. Separate databases for each language "Create database
en_database", "Create database fr_database"

· Regarding multilingual database design, any other
practices/recommendations/experiences?

Regards,

Carl

AddThis Social Bookmark Button