2012-07-25 38 views
6

Olası Çoğalt:
Schema for a multilanguage databaseÇok dilli veriler nasıl saklanır?

ben çok dilli veri içeren çok yoğun bir web uygulaması inşa ediyorum. Bütün bu veriler bir MySQL veritabanında saklanır. Bu verileri depolamanın en iyi yolu nedir? her dil için tabloda

  1. ayrı kolonlar (title_en gibi title_fr) her dil için
  2. ayrı masalar (pages_en gibi pages_fr) çeviriler için
  3. çapraz tablo (sahip: Ben gerçi birkaç tahmin var sayfalar tablosunda bir kimlik ve bu bağlantılı kimliğin bir tabloya çok-dilli veri içermeyen bir transkript olduğu trans_en, trans_fr)
  4. gibi bir tablonun bulunduğu bir tabloya sahip olması, örneğin sayfalar ve diller başına bir tabloda çeviriler (pages_en, pages_fr))
  5. diğer? Bir sitenin dilli yapmak zorunda aşağıdaki gibi
+0

İkinci çözümle ilgili bir sorun görüyorum çünkü yeni bir dil ekleyip yeni bir tablo oluşturursanız, çok dilli olmayan tüm sütunların bu yeni tabloya kopyalanması gerekir. Fakat muhtemelen ilk çözümden daha hızlıdır çünkü tablo boyut olarak daha küçüktür. –

+0

Üçüncü çözüm, birincil tabloların çok temiz olmasını sağlar, ancak el ile bakım yapmak zordur ve çeviri tablosu büyük bir katil olacaktır. –

+0

İkinci çözüm, yeni dillere genişletmek (yalnızca sütun eklemek) kolaydır ancak diller büyük ölçüde çok büyük olabilir. Genişlet) ... Biraz burada sıkışmış ... –

cevap

1

, o zaman db tasarımı olacaktır:

enter image description here

uygulamada her sayfa birden çok dil olabilir. Sadece sayfa için istenen dili almak için dil kimliğini filtrelemek zorundasınız.

İlgili konular