@ मैट शेपर्ड:
कहते हैं कि आपके पास ग्राहकों की एक तालिका है। निश्चित रूप से आप नहीं चाहते हैं कि ग्राहक एक से अधिक बार तालिका में मौजूद हो, या आपकी बिक्री और रसद विभागों में बहुत भ्रम होगा (विशेषकर यदि ग्राहक के बारे में कई पंक्तियों में अलग-अलग जानकारी हो)।
इसलिए आपके पास एक ग्राहक पहचानकर्ता है जो विशिष्ट रूप से ग्राहक की पहचान करता है और आप यह सुनिश्चित करते हैं कि पहचानकर्ता ग्राहक (इनवॉइस) द्वारा जाना जाता है, ताकि ग्राहक और ग्राहक सेवा के लोगों के पास एक सामान्य संदर्भ हो, जब उन्हें संवाद करने की आवश्यकता हो। कोई डुप्लिकेट किए गए ग्राहक रिकॉर्ड की गारंटी देने के लिए, आप ग्राहक पहचानकर्ता पर प्राथमिक कुंजी के माध्यम से या ग्राहक पहचानकर्ता कॉलम पर NOT NULL + UNIQUE बाधा के माध्यम से तालिका में एक विशिष्टता-बाधा जोड़ते हैं।
अगला, किसी कारण से (जो मैं नहीं सोच सकता), आपको ग्राहक तालिका में एक GUID कॉलम जोड़ने और प्राथमिक कुंजी बनाने के लिए कहा जाता है। यदि ग्राहक पहचानकर्ता कॉलम अब विशिष्टता-गारंटी के बिना छोड़ दिया गया है, तो आप पूरे संगठन में भविष्य की परेशानी पूछ रहे हैं, क्योंकि GUID हमेशा अद्वितीय होंगे।
कुछ "वास्तुकार" आपको बता सकते हैं कि "ओह, लेकिन हम अपने ऐप टीयर में वास्तविक ग्राहक विशिष्टता बाधा को संभालते हैं ।" सही। उस सामान्य प्रयोजन प्रोग्रामिंग भाषाओं और (विशेषकर) मध्य स्तरीय रूपरेखाओं के बारे में फैशन हर समय बदलता है, और आम तौर पर आपके डेटाबेस से कभी बाहर नहीं होगा। और एक बहुत अच्छा मौका है कि आपको कुछ बिंदुओं पर वर्तमान एप्लिकेशन के माध्यम से जाने के बिना डेटाबेस तक पहुंचने की आवश्यकता होगी। == परेशानी। (लेकिन सौभाग्य से, आप और "वास्तुकार" लंबे समय से चले गए हैं, इसलिए आप गंदगी को साफ करने के लिए नहीं होंगे।) दूसरे शब्दों में: डेटाबेस में स्पष्ट बाधाओं को बनाए रखें (और अन्य स्तरों में, साथ ही, यदि आपके पास है समय)।
दूसरे शब्दों में: GUID कॉलमों को तालिकाओं में जोड़ने के अच्छे कारण हो सकते हैं, लेकिन कृपया वास्तविक (== गैर-GUID) जानकारी के भीतर स्थिरता के लिए अपनी महत्वाकांक्षाओं को कम करने के लिए प्रलोभन में न पड़ें।