ÇOK DİLLİ SİSTEMLER İÇİN VERİTABANI DİZAYNI

MUSTAFA AKÇAKAYA

Dinamik içerikli web siteleri ya da uygulamalar hazırlarken herhalde en çok canımızı sıkan şeylerden bir tanesi de birden fazla dildir. Normalde bir kez yaptığınız işlemler, sayfalar gibi sitenin parçaları ve bileşenleri sitede kullanılacak dil sayısı kadar artabilir. Arapça ve İbranice gibi sağdan sol yazılan diller ise ayrı mesele.

Sayfa tasarımı ile ilgili bölüm şimdilik bir kenarda dursun, fırsat bulduğumda bununla da ilgili bir yazı hazırlayabilirim, şimdi değinmek istediğim böyle bir sistem için nasıl bir veritabanı tasarımı yapmamız gerektiği. Bunun için tek bir yol yok elbette ama ben en çok kabul edilen yöntemlerden birine değinmek istiyorum. Hemen şemaya geçelim:

Örnek Şema
Örnek Şema

Görüldüğü gibi languages, products ve product_details isimli üç adet tablomuz var. Bunların görevlerinin ne olduklarına kısaca değinmek gerekirse;

  • languages tablomuz sitemizde yer alacak dilleri barındıracak.
  • products tablomuz ise temel ürün bilgilerini barındıracak. Bu sistemi veritabanında ürünleri tuttuğumuz bir uygulamaya ait olduğunu düşünün.
  • products_details ise ürün ile ilgili birden fazla dilde olması gereken alanları barındıracak.

Burada önemli olan kısım products_details tablosunun alanları. Ürünün çevrilme gereği olmayan alanları products_details yerine products tablomuzda tutmamız gerekiyor. Eğer çok fazla ekstra alana sahipseniz temel alanlar dışındaki alanları ayrı bir tabloda da tutabilirsiniz. Bu veritabanı tasarımını daha temiz gösterecektir ama SQL sorgularınız biraz daha kompleks hale gelecektir. Duruma göre bunu siz belirleyeceksiniz.

Şu şekilde bir SQL sorgusu ile de dile göre ürün bilgilerini çekebiliriz:

SELECT
	products.id,
	product_details.lang,
	product_details.name,
	product_details.slug
FROM
	products
INNER JOIN product_details ON product_details.product_id = products.id
WHERE
	product_details.lang = 'tr'

Temiz ve güzel bir sistem. Klasik _tr, _en ile biten alanlar kullanma yöntemine göre biraz karmaşık olabilir ama dil ekleme işlemi gerektiren durumlarda canınız yanmayacak. Ayrıca bu sistem ile her dilde tercümesi olmayan alanları da boş bırakma gibi bir durumla da karşı karşıya kalmayacaksınız.

Çok Dilli Sistemler İçin Veritabanı Dizaynı

Dinamik içerikli web siteleri ya da uygulamalar hazırlarken herhalde en çok canımızı sıkan şeylerden bir tanesi de birden fazla dildir. Bakalım bu sıkıntıyı nasıl aşabiliriz.

25.10.2014

Yorumlar