में "जादू" संख्याओं से छुटकारा पाएं कोड में कोई भी वैश्विक रूप से सुलभ स्थिरांक/enums/आदि निर्दिष्ट कर सकता है जिसे उसके बाद एप्लिकेशन के माध्यम से पुन: उपयोग किया जा सकता है। यह '2' जैसी संख्याओं के बजाय 'माज़दा' जैसे सार्थक नामों का उपयोग करने की क्षमता देता है।SQL सर्वर
हम अपने SQL सर्वर संग्रहीत प्रक्रियाओं में ऐसा करना चाहते हैं, लेकिन इसे लागू करने का सबसे अच्छा तरीका सुनिश्चित नहीं है।
निम्न तालिकाओं के लिए जैसे (लौकिक कार स्कीमा):
Car ManufacturerId
350Z 1
Hilux 2
Yaris 2
ManufacturerId Name
1 Nissan
2 Toyota
बजाय
SELECT * FROM Car WHERE ManufacturerId = 1 -- Nissan
लिखने की हम जैसे
SELECT * FROM Car WHERE ManufacturerId = @Nissan
एक प्रतिबंध कुछ लिखना चाहते हैं हमारे पास यह है कि हम निर्माता पर भरोसा नहीं कर सकते हैं। ऐप के जीवन के लिए वही रहना। हम एक स्तंभ "कोड" कि बदलता है कभी नहीं और इस तरह देखा जाता है मिलती होने के बारे में सोचा:
SELECT *
FROM Car c
INNER JOIN Manufacturer m ON c.ManufacturerId = m.ManufacturerId
WHERE m.Code = 'Nissan'
मैं इस पर थोड़ा संकोच कर रहा हूँ के रूप में यह एक अतिरिक्त शामिल होने और स्ट्रिंग तुलना कि गलत वर्तनी किया जा सकता है का उपयोग करता है ।
प्रत्येक संग्रहीत प्रक्रिया में चर घोषित किए बिना इसे पूरा करने का सबसे अच्छा तरीका क्या है?
पहले सुझाव के साथ खिलवाड़, लेकिन यह दूसरे के लिए बहुत देर हो चुकी है। शायद अगली बार। –
इस समस्या के साथ जो मुश्किल हो रही है वह यह है कि जादू संख्या आमतौर पर आपके ग्राहक कोड में एक enum के अनुरूप होती है। किसी बिंदु पर आप क्लाइंट एनम के साथ अपने एसक्यूएल लुकअप को सिंक्रनाइज़ कर देंगे। एमएस एसक्यूएल सर्वर यहां एक बहुत ही साफ एकीकरण बिंदु प्रदान करता है: आप एनएम मूल्य को वापस करने के लिए एक सीएलआर यूडीएफ कोड कर सकते हैं, अनिवार्य रूप से कुछ रनटाइम प्रकार की सुरक्षा को लागू कर सकते हैं। आपको अभी भी यह सुनिश्चित करने की ज़रूरत है कि आपके प्रश्नों को enum मानों के नाम मिलते हैं, हालांकि, मुझे समस्या के इस हिस्से के आसपास कभी रास्ता नहीं मिला है। –