डेटाबेस को डिज़ाइन करने का तरीका इस प्रकार है:
DB Designer Fork द्वारा विज़ुअलाइज़ेशन
i18n
तालिका में केवल एक पीके होता है, ताकि किसी भी तालिका को किसी क्षेत्र को अंतर्राष्ट्रीयकृत करने के लिए इस पीके को संदर्भित करना पड़े। तालिका translation
तब इस सामान्य आईडी को अनुवादों की सही सूची से जोड़ने का प्रभारी होता है।
locale.id_locale
एक VARCHAR(5)
है en
. दोनों को प्रबंधित करने के लिए और en_US
ISO सिंटैक्स
।
currency.id_currency
एक CHAR(3)
है ISO 4217 सिंटैक्स
को प्रबंधित करने के लिए ।
आपको दो उदाहरण मिल सकते हैं:page
और newsletter
. ये दोनों व्यवस्थापक-प्रबंधित संस्थाओं को अपने क्षेत्रों का अंतर्राष्ट्रीयकरण करने की आवश्यकता है, क्रमशः title/description
और subject/content
।
यहाँ एक उदाहरण क्वेरी है:
select
t_subject.tx_translation as subject,
t_content.tx_translation as content
from newsletter n
-- join for subject
inner join translation t_subject
on t_subject.id_i18n = n.i18n_subject
-- join for content
inner join translation t_content
on t_content.id_i18n = n.i18n_content
inner join locale l
-- condition for subject
on l.id_locale = t_subject.id_locale
-- condition for content
and l.id_locale = t_content.id_locale
-- locale condition
where l.id_locale = 'en_GB'
-- other conditions
and n.id_newsletter = 1
ध्यान दें कि यह एक सामान्यीकृत डेटा मॉडल है। यदि आपके पास एक विशाल डेटासेट है, तो शायद आप इसे असामान्य बनाने के बारे में सोच सकते हैं। अपने प्रश्नों को अनुकूलित करने के लिए। आप क्वेरी के प्रदर्शन को बेहतर बनाने के लिए इंडेक्स के साथ भी खेल सकते हैं (कुछ डीबी में, विदेशी कुंजी स्वचालित रूप से अनुक्रमित होती हैं, उदाहरण के लिए MySQL/InnoDB )।