मुझे पता है कि ज्यादातर लोग नीचे दिए गए दृष्टिकोण का उपयोग करते हैं और विशिष्ट तालिका के लिए एक अनुवाद तालिका बनाते हैं जिसके लिए अनुवाद की आवश्यकता होती है लेकिन यह तालिकाओं के भार तक हो सकती है।टेबल्स के लिए भाषा अनुवाद
CREATE TABLE Product
(
Product_id
,ProductTrans_id -- FK
)
CREATE TABLE ProductTranslation
(
ProductTrans_id
,Product_id
,Name
,Descr
,lang_code
)
क्या नीचे दिया गया दृष्टिकोण व्यवहार्य होगा? मान लें कि आपके पास बहुत सारी टेबल हैं जहां 1 से अधिक कॉलम अनुवाद की आवश्यकता है। क्या आप निम्नलिखित अनुवादों को 1 टेबल में सभी अनुवादों को रख सकते हैं? मुझे लगता है कि यह तालिका समय के साथ आकार में काफी हद तक बढ़ेगी।
CREATE TABLE translation_entry (
translation_id int,
language_id int,
table_name nvarchar(200),
table_column_name nvarchar(200),
table_row_id bigint,
translated_text ntext
)
CREATE TABLE translation_language (
id int,
language_code CHAR(2)
)
तो दूसरा दृष्टिकोण का उपयोग करते हुए आप ऐसा
select
product.name
,translation_entry.translated_text
from product
inner join translation_entry on product.product_id = translation_entry.table_row_id
and translation_entry.table_name = 'Product' and translation_entry.table_column_name = 'Name'
and language_id = 3
दूसरा दृष्टिकोण बहुत अधिक ओवरहेड की तरह लगता है और इसमें एकल उत्पाद के अनुवादित कॉलम प्राप्त करने के लिए कई fetches शामिल होंगे .. अगर मैं इसे सही ढंग से समझता हूं ..? +1 क्योंकि यह एक अच्छा सवाल है! –
मुझे लगता है कि एक अच्छा दृष्टिकोण सबसे पहले विचार करना होगा कि आपके प्रश्न कैसा दिखेंगे .. जो टेबल डिज़ाइन को –
जरूरी करेगा, दूसरे दृष्टिकोण में आप TableName और ColumnName पर फ़िल्टर कर सकते हैं और फिर table_row_id के माध्यम से लिंक कर सकते हैं। शायद धीमी पूछताछ। ऐसा करने के लिए बस एक तरीका सोचने के लिए जब किसी नई तालिका या कॉलम इत्यादि के लिए अनुवाद की आवश्यकता होती है तो स्कीमा परिवर्तन की आवश्यकता नहीं होती है – davey