मैंने रिलेशनल डेटाबेस के साथ बहुत कम काम किया है, और मुझे लगता है कि मैं अच्छे स्कीमा डिज़ाइन की बुनियादी अवधारणाओं को अच्छी तरह समझता हूँ। मुझे हाल ही में एक प्रोजेक्ट संभालने का काम सौंपा गया था जहाँ डीबी को एक उच्च-भुगतान सलाहकार द्वारा डिजाइन किया गया था। कृपया मुझे बताएं कि क्या मेरी आंत में अंतर है - "डब्ल्यूटीएफ ??!" - वारंट किया गया है, या यह आदमी ऐसा जीनियस है कि वह मेरे दायरे से बाहर चल रहा है?
डीबी विचाराधीन एक इन-हाउस ऐप है जिसका उपयोग कर्मचारियों से अनुरोध दर्ज करने के लिए किया जाता है। बस इसके एक छोटे से भाग को देखते हुए, आपके पास उपयोगकर्ताओं के बारे में जानकारी है, और किए जा रहे अनुरोध पर जानकारी है। मैं इसे इस तरह डिजाइन करूंगा:
उपयोगकर्ता तालिका:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
अनुरोध तालिका
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
सरल, सही?
सलाहकार ने इसे इस तरह डिजाइन किया (नमूना डेटा के साथ):
UsersTable
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
DepartmentsTable
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
पूरे डेटाबेस को इस तरह से बनाया गया है, जिसमें डेटा का हर टुकड़ा अपनी खुद की तालिका में एनकैप्सुलेटेड है, जिसमें संख्यात्मक आईडी सब कुछ एक साथ जोड़ते हैं। जाहिर तौर पर सलाहकार ने OLAP के बारे में पढ़ा था और 'पूर्णांक के लुकअप की गति' चाहता था।
उसके पास इन सभी तालिकाओं के संदर्भ को पार करने के लिए बड़ी संख्या में संग्रहीत प्रक्रियाएं भी हैं।
क्या यह एक छोटे से मध्यम आकार के SQL DB के लिए मान्य डिज़ाइन है?
टिप्पणी / उत्तर के लिए धन्यवाद ...