यहाँ
"सममित से एक अंश "एसक्यूएल डिजाइन पैटर्न" पुस्तक में "फ़ंक्शन" प्रासंगिक हो सकते हैं।
बक्से
असली दुनिया में
table Boxes (
length integer,
width integer,
height integer
)
बॉक्स आयाम, हालांकि, आम तौर पर किसी भी विशिष्ट क्रम में दिया नहीं कर रहे हैं की एक सूची डेटाबेस पर विचार करें। पसंद आयाम लंबाई, चौड़ाई, और ऊंचाई अनिवार्य रूप से मनमाना है। क्या होगा यदि हम अपने आयामों के अनुसार बक्से की पहचान करना चाहते हैं? उदाहरण के लिए, हम यह बताने में सक्षम होना चाहते हैं कि लंबाई = 1, चौड़ाई = 2, और ऊंचाई = 3 वाला बॉक्स वही बॉक्स है जो लम्बाई = 3, चौड़ाई = 1, और ऊंचाई = 2 है। इसके अलावा, एक अद्वितीय आयामी बाधा घोषित करने के बारे में कैसे? अधिक विशेष रूप से, हम किसी भी दो बक्से की अनुमति नहीं देंगे जिनमें समान आयाम हों।
एक विश्लेषणात्मक दिमाग में कोई समस्या नहीं होगी कि समस्या का दिल कॉलम ऑर्डरिंग है। लंबाई, चौड़ाई और ऊंचाई कॉलम के मानों को एक और वैध रिकॉर्ड बनाने के लिए इंटरचेंज किया जा सकता है! इसलिए, हम क्यों 3 छद्म कॉलम ऐसी है कि
A ≤ B ≤ C
फिर परिचय नहीं है, ए, बी कहते हैं, और सी, ए, बी पर एक अद्वितीय बाधा, सी हमारी आवश्यकता को पूरा करना चाहिए! इसे एक फ़ंक्शन आधारित अद्वितीय इंडेक्स के रूप में कार्यान्वित किया जा सकता है, जब तक हम लंबाई, चौड़ाई, ऊंचाई के संदर्भ में ए, बी, सी विश्लेषणात्मक रूप से व्यक्त कर सकें। केक का टुकड़ा: ए लंबाई, चौड़ाई, ऊंचाई का सबसे बड़ा है; सी उनमें से कम से कम है, लेकिन हम बी कैसे व्यक्त करते हैं? खैर, जवाब लिखना आसान है
B = least (greatest (length,width),
greatest (width,height),
greatest (height,length))
हालांकि समझाना मुश्किल है।
सामान्य रूप से गणितीय परिप्रेक्ष्य, बहुत स्पष्ट करता है। घन समीकरण
पर विचार करें तो हम जानते हैं कि जड़ों x1, x2, तो x3, घन बहुपदीय कारक हो सकता है, है कि हम
दोनों समीकरणों हम व्यक्त शादी एक, ख, ग गुणांक तो जड़ों x1 के मामले में , x2, x3
चित्र 4.1: बहुपद y=(x-x1)(x-x2)(x-x3)
के ग्राफ का एक आकार पूरी तरह से जड़ x1, x2, और x3 द्वारा परिभाषित किया गया है। उनका आदान-प्रदान कुछ भी प्रभावित नहीं करता है।
फ़ंक्शन -x1-x2-x3, x1x2+x2x3+x3x1, -x1x2x3
सममित हैं। X1, x2, x3 को अनुमति देना मानों पर कोई प्रभाव नहीं है ए, बी, सी। दूसरे शब्दों में, घन समीकरण की जड़ों के बीच क्रम अप्रासंगिक है: औपचारिक रूप से, हम जड़ों के एक सेट की बात करते हैं, न कि जड़ों की सूची 1। बॉक्सेस के साथ हमारे उदाहरण में यह वही प्रभाव है जिसे हम चाहते हैं।लंबाई, चौड़ाई, ऊंचाई के मामले में फिर से लिखा सममित कार्यों
length+width+height
length*width+width*height+height*length
length*width*height
उन भाव तथ्य यह है कि एक सुडौल समारोह का निषेध भी सममित है का लाभ उठाकर एक छोटे से सरल बनाया गया है।
हमारा अंतिम समाधान पहले के समान ही है, जहां सबसे बड़ा ऑपरेटर गुणा की भूमिका निभाता है, जबकि कम से कम ऑपरेटर अतिरिक्त होता है। यह एक समाधान है, जो एक मिश्रण में दो
least(length,width,height)
least(length+width,width+height,height+length)
length+width+height
के बीच एक पाठक की जांच कर सकते है कि इन तीन कार्यों फिर symmetric2 हैं सुझाने के लिए भी संभव है। अंतिम चरण औपचारिक एसक्यूएल में हमारे समाधान रिकॉर्डिंग है
table Boxes (
length integer,
width integer,
height integer
);
create unique index b_idx on Boxes(
length + width + height,
length * width + width * height + height * length,
length * width * height
);
सममित कार्यों एक गंधा समाधान के लिए एक आधार प्रदान करते हैं। अभ्यास में हालांकि, स्कीमा रीडिज़ाइन द्वारा अक्सर एक समस्या हल की जा सकती है। बॉक्स सूची डेटाबेस उदाहरण में, हम भी स्कीमा को नया स्वरूप की आवश्यकता नहीं है: और हम बस स्वेच्छापूर्ण रिकॉर्ड (length,width,height)
डालने की प्रथा को बदलने के लिए आवश्यकता हो सकती है, मांग है कि
length ≥ width ≥ height
क्यों न यू जांच बाधा का उपयोग यहां एक संपूर्ण स्क्रिप्ट दृष्टिकोण को दर्शाता है है आपके स्टेटस कॉलम पर? – Teja
@ वेनक आप चेक बाधा के वाक्यविन्यास दिखा सकते हैं? –
मुझे लगता है कि तालिका को अलग-अलग डिजाइन किया जाना चाहिए –