मुझे यकीन नहीं है कि आप टेबल की संख्या के बारे में चिंतित क्यों हैं:कम टेबल होने का मतलब यह नहीं है कि आपका डेटाबेस छोटा, अधिक कुशल या बेहतर डिज़ाइन किया गया है। विशेष रूप से यदि तालिकाओं की संख्या कम करने से आपके प्रश्नों की जटिलता बढ़ जाती है, तो मैं इसे करने में बहुत सावधानी बरतूंगा।
वैसे भी, मैं प्रति 'आधार' तालिका में एक अनुवाद तालिका के लिए जाऊंगा। मुख्य कारण यह है कि आपका दूसरा समाधान लचीला नहीं है:यदि प्राथमिक कुंजी एक पूर्णांक नहीं है तो इसे लागू करना और उपयोग करना बेहद मुश्किल हो जाता है। अनुवाद के लिए क्वेरी करना भी अधिक जटिल है, और तालिका के आकार और डेटा के आधार पर, इसे प्रभावी ढंग से अनुक्रमित करना मुश्किल हो सकता है।
यह स्पष्ट नहीं है कि आपके पास TranslationID
क्यों है Products
. पर मेज़; आमतौर पर संबंध बिल्कुल उल्टा होता है:
create table dbo.Products (
ProductCode char(10) not null primary key,
ProductName nvarchar(50) not null,
ProductDescription nvarchar(100) not null,
-- other columns
)
create table dbo.ProductsTranslations (
ProductCode char(10) not null,
LanguageCode char(2) not null,
ProductName nvarchar(50) not null,
ProductDescription nvarchar(100) not null,
-- other translations
constraint FK1 foreign key (ProductCode)
references dbo.Products (ProductCode),
constraint FK2 foreign key (LanguageCode)
references dbo.Languages (LanguageCode),
constraint PK primary key (ProductCode, LanguageCode)
)
आपके टूलसेट और परिनियोजन प्रक्रिया के आधार पर आप अपने डेटाबेस बिल्ड के हिस्से के रूप में सीधे आधार वाले से अनुवाद तालिकाएँ बनाना चाह सकते हैं। और आप आधार तालिका का एक सुविधाजनक, 'पूरी तरह से अनुवादित' संस्करण प्रदान करने के लिए दृश्यों का उपयोग कर सकते हैं।
एक दिलचस्प सवाल यह है कि Products
. में कॉलम के लिए किस भाषा का उपयोग किया जाता है? और यदि किसी अनुवाद की आवश्यकता नहीं होने पर उनका सीधे उपयोग किया जा सकता है। मेरा सुझाव यह होगा कि सभी प्रोडक्शन कोड को एक भाषा पैरामीटर पास करना चाहिए और टेक्स्ट को ProductsTranslations
से लेना चाहिए। तालिका केवल अंग्रेजी के लिए भी (या आपकी आंतरिक कॉर्पोरेट भाषा जो भी हो)। इस तरह आप सुनिश्चित हो सकते हैं कि सभी 'आधिकारिक' नाम एक ही तालिका में पाए जाते हैं, और आधार तालिका पर कॉलम डेटा मॉडल की स्पष्टता और पूर्णता के साथ-साथ डेवलपर सुविधा और (संभवतः) तदर्थ पर आंतरिक उपयोग के लिए हैं। रिपोर्ट वगैरह।